customer-registration 0.0.106 → 0.0.109
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.medusa/server/src/api/auth/customer/emailpass/reset-password/route.js +7 -15
- package/.medusa/server/src/api/auth/customer/emailpass/route.js +155 -8
- package/.medusa/server/src/subscribers/password-reset.js +14 -7
- package/.medusa/server/src/types/plugin-options.js +3 -0
- package/README.md +7 -0
- package/package.json +1 -1
|
@@ -6,25 +6,13 @@ const generate_jwt_token_1 = require("@medusajs/medusa/api/auth/utils/generate-j
|
|
|
6
6
|
/**
|
|
7
7
|
* Send password reset email using notification service
|
|
8
8
|
*/
|
|
9
|
-
async function sendPasswordResetEmail(email, token, container) {
|
|
9
|
+
async function sendPasswordResetEmail(email, token, storefrontUrl, container) {
|
|
10
10
|
console.log("[reset-password] Sending password reset email directly...");
|
|
11
11
|
const notificationService = container.resolve(utils_1.Modules.NOTIFICATION);
|
|
12
12
|
if (!notificationService) {
|
|
13
13
|
console.error("[reset-password] Notification service is not configured");
|
|
14
14
|
return;
|
|
15
15
|
}
|
|
16
|
-
// Get storefront URL from environment or config
|
|
17
|
-
let storefrontUrl = "http://localhost:8000";
|
|
18
|
-
try {
|
|
19
|
-
const config = container.resolve(utils_1.ContainerRegistrationKeys.CONFIG_MODULE);
|
|
20
|
-
storefrontUrl =
|
|
21
|
-
process.env.STOREFRONT_URL ||
|
|
22
|
-
config?.projectConfig?.storefrontUrl ||
|
|
23
|
-
"http://localhost:8000";
|
|
24
|
-
}
|
|
25
|
-
catch (error) {
|
|
26
|
-
console.warn("[reset-password] Failed to resolve config, using default storefront URL:", error);
|
|
27
|
-
}
|
|
28
16
|
// Build reset URL with token and email as query parameters
|
|
29
17
|
const resetUrl = `${storefrontUrl}/reset-password?token=${encodeURIComponent(token)}&email=${encodeURIComponent(email)}`;
|
|
30
18
|
// Prepare HTML and text content
|
|
@@ -160,6 +148,10 @@ const POST = async (req, res) => {
|
|
|
160
148
|
// Using the same method Medusa's built-in route uses
|
|
161
149
|
const config = req.scope.resolve(utils_1.ContainerRegistrationKeys.CONFIG_MODULE);
|
|
162
150
|
const { http } = config.projectConfig;
|
|
151
|
+
const storefrontUrl = config.projectConfig.http.storeCors;
|
|
152
|
+
if (!storefrontUrl) {
|
|
153
|
+
throw new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, "storefront-url: storefront URL is not configured");
|
|
154
|
+
}
|
|
163
155
|
const resetToken = (0, generate_jwt_token_1.generateJwtTokenForAuthIdentity)({
|
|
164
156
|
authIdentity,
|
|
165
157
|
actorType: "customer",
|
|
@@ -173,7 +165,7 @@ const POST = async (req, res) => {
|
|
|
173
165
|
// Note: Medusa's built-in route would emit 'auth.password_reset' event here
|
|
174
166
|
// Since we're overriding the route, we send the email directly
|
|
175
167
|
try {
|
|
176
|
-
await sendPasswordResetEmail(normalizedEmail, resetToken, req.scope);
|
|
168
|
+
await sendPasswordResetEmail(normalizedEmail, resetToken, storefrontUrl, req.scope);
|
|
177
169
|
}
|
|
178
170
|
catch (emailError) {
|
|
179
171
|
console.error("[reset-password] Failed to send email:", emailError);
|
|
@@ -190,4 +182,4 @@ const POST = async (req, res) => {
|
|
|
190
182
|
}
|
|
191
183
|
};
|
|
192
184
|
exports.POST = POST;
|
|
193
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
185
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL2F1dGgvY3VzdG9tZXIvZW1haWxwYXNzL3Jlc2V0LXBhc3N3b3JkL3JvdXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUNBLHFEQUEyRjtBQUUzRiwyRkFBb0c7QUFFcEc7O0dBRUc7QUFDSCxLQUFLLFVBQVUsc0JBQXNCLENBQ25DLEtBQWEsRUFDYixLQUFhLEVBQ2IsYUFBcUIsRUFDckIsU0FBYztJQUVkLE9BQU8sQ0FBQyxHQUFHLENBQUMsMkRBQTJELENBQUMsQ0FBQTtJQUV4RSxNQUFNLG1CQUFtQixHQUFHLFNBQVMsQ0FBQyxPQUFPLENBQUMsZUFBTyxDQUFDLFlBQVksQ0FHakUsQ0FBQTtJQUVELElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO1FBQ3pCLE9BQU8sQ0FBQyxLQUFLLENBQUMseURBQXlELENBQUMsQ0FBQTtRQUN4RSxPQUFNO0lBQ1IsQ0FBQztJQUVELDJEQUEyRDtJQUMzRCxNQUFNLFFBQVEsR0FBRyxHQUFHLGFBQWEseUJBQXlCLGtCQUFrQixDQUFDLEtBQUssQ0FBQyxVQUFVLGtCQUFrQixDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUE7SUFFeEgsZ0NBQWdDO0lBQ2hDLE1BQU0sV0FBVyxHQUFHOzs7Ozs7c0JBTUEsUUFBUTtzQ0FDUSxLQUFLOzs7Ozs7R0FNeEMsQ0FBQyxJQUFJLEVBQUUsQ0FBQTtJQUVSLE1BQU0sV0FBVyxHQUFHLGtFQUFrRSxRQUFRLGNBQWMsS0FBSywyR0FBMkcsQ0FBQTtJQUU1TixnRUFBZ0U7SUFDaEUsbUVBQW1FO0lBQ25FLE1BQU0sT0FBTyxHQUFRO1FBQ25CLEVBQUUsRUFBRSxLQUFLO1FBQ1QsT0FBTyxFQUFFLE9BQU87UUFDaEIsSUFBSSxFQUFFO1lBQ0osT0FBTyxFQUFFLHFCQUFxQjtZQUM5QixLQUFLO1lBQ0wsS0FBSztZQUNMLFNBQVMsRUFBRSxRQUFRO1lB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
|
|
@@ -5,6 +5,12 @@ const utils_1 = require("@medusajs/framework/utils");
|
|
|
5
5
|
const generate_jwt_token_1 = require("@medusajs/medusa/api/auth/utils/generate-jwt-token");
|
|
6
6
|
const otp_verification_1 = require("../../../../modules/otp-verification");
|
|
7
7
|
const GET = async (req, res) => {
|
|
8
|
+
console.log("[emailpass-auth] Authentication request received", {
|
|
9
|
+
method: req.method,
|
|
10
|
+
url: req.url,
|
|
11
|
+
hasBody: !!req.body,
|
|
12
|
+
hasQuery: !!req.query,
|
|
13
|
+
});
|
|
8
14
|
const config = req.scope.resolve(utils_1.ContainerRegistrationKeys.CONFIG_MODULE);
|
|
9
15
|
const service = req.scope.resolve(utils_1.Modules.AUTH);
|
|
10
16
|
const authData = {
|
|
@@ -15,27 +21,158 @@ const GET = async (req, res) => {
|
|
|
15
21
|
protocol: req.protocol,
|
|
16
22
|
};
|
|
17
23
|
const { success, error, authIdentity, location } = await service.authenticate("emailpass", authData);
|
|
24
|
+
console.log("[emailpass-auth] Authentication result", {
|
|
25
|
+
success,
|
|
26
|
+
hasError: !!error,
|
|
27
|
+
error,
|
|
28
|
+
hasAuthIdentity: !!authIdentity,
|
|
29
|
+
authIdentityId: authIdentity?.id,
|
|
30
|
+
hasLocation: !!location,
|
|
31
|
+
});
|
|
18
32
|
if (location) {
|
|
33
|
+
console.log("[emailpass-auth] Redirecting to location", { location });
|
|
19
34
|
return res.status(200).json({ location });
|
|
20
35
|
}
|
|
21
36
|
if (success && authIdentity) {
|
|
22
37
|
const email = authIdentity.provider_identities?.[0]?.entity_id ?? "";
|
|
38
|
+
console.log("[emailpass-auth] Processing successful authentication", {
|
|
39
|
+
email,
|
|
40
|
+
authIdentityId: authIdentity.id,
|
|
41
|
+
hasProviderIdentities: !!authIdentity.provider_identities,
|
|
42
|
+
providerIdentitiesCount: authIdentity.provider_identities?.length || 0,
|
|
43
|
+
hasAppMetadata: !!authIdentity.app_metadata,
|
|
44
|
+
appMetadataCustomerId: authIdentity.app_metadata?.customer_id,
|
|
45
|
+
});
|
|
23
46
|
await enforceEmailAndPhoneVerification({
|
|
24
47
|
email,
|
|
25
48
|
req,
|
|
26
49
|
});
|
|
50
|
+
// Ensure authIdentity has customer_id in app_metadata
|
|
51
|
+
// The generateJwtTokenForAuthIdentity function requires app_metadata.customer_id
|
|
52
|
+
let customerId = authIdentity.app_metadata?.customer_id;
|
|
53
|
+
console.log("[emailpass-auth] Checking customer ID", {
|
|
54
|
+
email,
|
|
55
|
+
customerIdFromMetadata: customerId,
|
|
56
|
+
hasAppMetadata: !!authIdentity.app_metadata,
|
|
57
|
+
});
|
|
58
|
+
if (!customerId) {
|
|
59
|
+
// Try to get customer_id from provider_identity entity_id (email)
|
|
60
|
+
// and look up the customer
|
|
61
|
+
console.log("[emailpass-auth] Customer ID not in metadata, looking up by email", {
|
|
62
|
+
email: email.toLowerCase(),
|
|
63
|
+
});
|
|
64
|
+
const customerModule = req.scope.resolve(utils_1.Modules.CUSTOMER);
|
|
65
|
+
const customers = await customerModule.listCustomers({
|
|
66
|
+
email: email.toLowerCase(),
|
|
67
|
+
});
|
|
68
|
+
console.log("[emailpass-auth] Customer lookup result", {
|
|
69
|
+
email: email.toLowerCase(),
|
|
70
|
+
customersFound: customers?.length || 0,
|
|
71
|
+
customerId: customers && customers.length > 0 ? customers[0].id : null,
|
|
72
|
+
});
|
|
73
|
+
if (customers && customers.length > 0) {
|
|
74
|
+
customerId = customers[0].id;
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
if (!customerId) {
|
|
78
|
+
console.error("[emailpass-auth] Unable to determine customer ID", {
|
|
79
|
+
email,
|
|
80
|
+
hasAppMetadata: !!authIdentity.app_metadata,
|
|
81
|
+
appMetadata: authIdentity.app_metadata,
|
|
82
|
+
providerIdentities: authIdentity.provider_identities,
|
|
83
|
+
});
|
|
84
|
+
throw new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, "Unable to determine customer ID for authentication");
|
|
85
|
+
}
|
|
86
|
+
// Ensure app_metadata has customer_id
|
|
87
|
+
const authIdentityWithCustomerId = {
|
|
88
|
+
...authIdentity,
|
|
89
|
+
app_metadata: {
|
|
90
|
+
...authIdentity.app_metadata,
|
|
91
|
+
customer_id: customerId,
|
|
92
|
+
},
|
|
93
|
+
};
|
|
27
94
|
const { http } = config.projectConfig;
|
|
28
|
-
|
|
29
|
-
|
|
95
|
+
if (!http.jwtSecret) {
|
|
96
|
+
console.error("[emailpass-auth] JWT secret is not configured", {
|
|
97
|
+
email,
|
|
98
|
+
customerId,
|
|
99
|
+
hasJwtSecret: !!http.jwtSecret,
|
|
100
|
+
});
|
|
101
|
+
throw new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, "JWT secret is not configured");
|
|
102
|
+
}
|
|
103
|
+
// Log before token generation
|
|
104
|
+
console.log("[emailpass-auth] Generating JWT token", {
|
|
105
|
+
email,
|
|
106
|
+
customerId,
|
|
107
|
+
authIdentityId: authIdentityWithCustomerId?.id,
|
|
30
108
|
actorType: "customer",
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
109
|
+
jwtSecretExists: !!http.jwtSecret,
|
|
110
|
+
jwtSecretType: typeof http.jwtSecret,
|
|
111
|
+
jwtSecretHasLength: typeof http.jwtSecret === "string" ? !!http.jwtSecret.length : false,
|
|
112
|
+
jwtSecretLength: typeof http.jwtSecret === "string" ? http.jwtSecret.length : undefined,
|
|
113
|
+
jwtExpiresIn: http.jwtExpiresIn || "7d",
|
|
114
|
+
hasAppMetadata: !!authIdentityWithCustomerId?.app_metadata,
|
|
115
|
+
appMetadataCustomerId: authIdentityWithCustomerId?.app_metadata?.customer_id,
|
|
116
|
+
});
|
|
117
|
+
let token;
|
|
118
|
+
try {
|
|
119
|
+
token = (0, generate_jwt_token_1.generateJwtTokenForAuthIdentity)({
|
|
120
|
+
authIdentity: authIdentityWithCustomerId,
|
|
121
|
+
actorType: "customer",
|
|
122
|
+
}, {
|
|
123
|
+
secret: http.jwtSecret,
|
|
124
|
+
expiresIn: http.jwtExpiresIn || "7d",
|
|
125
|
+
});
|
|
126
|
+
}
|
|
127
|
+
catch (jwtError) {
|
|
128
|
+
console.error("[emailpass-auth] JWT generation threw an exception", {
|
|
129
|
+
email,
|
|
130
|
+
customerId,
|
|
131
|
+
error: jwtError instanceof Error ? jwtError.message : String(jwtError),
|
|
132
|
+
stack: jwtError instanceof Error ? jwtError.stack : undefined,
|
|
133
|
+
jwtSecretExists: !!http.jwtSecret,
|
|
134
|
+
});
|
|
135
|
+
throw new utils_1.MedusaError(utils_1.MedusaError.Types.UNEXPECTED_STATE, `JWT generation failed: ${jwtError instanceof Error ? jwtError.message : "Unknown error"}`);
|
|
136
|
+
}
|
|
137
|
+
// Log token generation result
|
|
138
|
+
console.log("[emailpass-auth] JWT token generation result", {
|
|
139
|
+
email,
|
|
140
|
+
customerId,
|
|
141
|
+
tokenExists: !!token,
|
|
142
|
+
tokenType: typeof token,
|
|
143
|
+
tokenLength: typeof token === "string" ? token.length : 0,
|
|
144
|
+
tokenPreview: typeof token === "string" ? token.substring(0, 20) + "..." : "N/A",
|
|
145
|
+
});
|
|
146
|
+
// Validate token was generated successfully
|
|
147
|
+
if (!token || typeof token !== "string") {
|
|
148
|
+
console.error("[emailpass-auth] Invalid token generated", {
|
|
149
|
+
email,
|
|
150
|
+
customerId,
|
|
151
|
+
token,
|
|
152
|
+
tokenType: typeof token,
|
|
153
|
+
tokenValue: token,
|
|
154
|
+
jwtSecretExists: !!http.jwtSecret,
|
|
155
|
+
authIdentityId: authIdentityWithCustomerId?.id,
|
|
156
|
+
authIdentityStructure: {
|
|
157
|
+
id: authIdentityWithCustomerId?.id,
|
|
158
|
+
provider_identities: authIdentityWithCustomerId?.provider_identities?.length,
|
|
159
|
+
app_metadata: authIdentityWithCustomerId?.app_metadata,
|
|
160
|
+
},
|
|
161
|
+
});
|
|
162
|
+
throw new utils_1.MedusaError(utils_1.MedusaError.Types.UNEXPECTED_STATE, `Failed to generate authentication token for customer ${customerId}. Token type: ${typeof token}, Token value: ${token}`);
|
|
163
|
+
}
|
|
164
|
+
console.log("[emailpass-auth] Authentication successful, returning token", {
|
|
165
|
+
email,
|
|
166
|
+
customerId,
|
|
167
|
+
tokenLength: token.length,
|
|
36
168
|
});
|
|
37
169
|
return res.status(200).json({ token });
|
|
38
170
|
}
|
|
171
|
+
console.error("[emailpass-auth] Authentication failed", {
|
|
172
|
+
success,
|
|
173
|
+
error,
|
|
174
|
+
hasAuthIdentity: !!authIdentity,
|
|
175
|
+
});
|
|
39
176
|
throw new utils_1.MedusaError(utils_1.MedusaError.Types.UNAUTHORIZED, error || "Authentication failed");
|
|
40
177
|
};
|
|
41
178
|
exports.GET = GET;
|
|
@@ -44,11 +181,21 @@ const POST = async (req, res) => {
|
|
|
44
181
|
};
|
|
45
182
|
exports.POST = POST;
|
|
46
183
|
const enforceEmailAndPhoneVerification = async ({ email, req, }) => {
|
|
184
|
+
console.log("[emailpass-auth] Enforcing email verification", { email });
|
|
47
185
|
// Get OTP verification service
|
|
48
186
|
const otpService = req.scope.resolve(otp_verification_1.OTP_VERIFICATION_MODULE);
|
|
49
187
|
const verificationStatus = await otpService.getCustomerVerificationByEmail(req.scope, email);
|
|
188
|
+
console.log("[emailpass-auth] Email verification status", {
|
|
189
|
+
email,
|
|
190
|
+
email_verified: verificationStatus.email_verified,
|
|
191
|
+
verificationStatus,
|
|
192
|
+
});
|
|
50
193
|
if (!verificationStatus.email_verified) {
|
|
194
|
+
console.error("[emailpass-auth] Email not verified", {
|
|
195
|
+
email,
|
|
196
|
+
verificationStatus,
|
|
197
|
+
});
|
|
51
198
|
throw new utils_1.MedusaError(utils_1.MedusaError.Types.UNAUTHORIZED, "Email not verified.");
|
|
52
199
|
}
|
|
53
200
|
};
|
|
54
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
201
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL2F1dGgvY3VzdG9tZXIvZW1haWxwYXNzL3JvdXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQU1BLHFEQUlrQztBQUNsQywyRkFBb0c7QUFDcEcsMkVBQThFO0FBS3ZFLE1BQU0sR0FBRyxHQUFHLEtBQUssRUFBRSxHQUFrQixFQUFFLEdBQW1CLEVBQUUsRUFBRTtJQUNuRSxPQUFPLENBQUMsR0FBRyxDQUFDLGtEQUFrRCxFQUFFO1FBQzlELE1BQU0sRUFBRSxHQUFHLENBQUMsTUFBTTtRQUNsQixHQUFHLEVBQUUsR0FBRyxDQUFDLEdBQUc7UUFDWixPQUFPLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJO1FBQ25CLFFBQVEsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLEtBQUs7S0FDdEIsQ0FBQyxDQUFBO0lBRUYsTUFBTSxNQUFNLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQzlCLGlDQUF5QixDQUFDLGFBQWEsQ0FDeEMsQ0FBQTtJQUVELE1BQU0sT0FBTyxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLGVBQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQTtJQUUvQyxNQUFNLFFBQVEsR0FBRztRQUNmLEdBQUcsRUFBRSxHQUFHLENBQUMsR0FBRztRQUNaLE9BQU8sRUFBRSxHQUFHLENBQUMsT0FBTztRQUNwQixLQUFLLEVBQUUsR0FBRyxDQUFDLEtBQUs7UUFDaEIsSUFBSSxFQUFFLEdBQUcsQ0FBQyxJQUFJO1FBQ2QsUUFBUSxFQUFFLEdBQUcsQ0FBQyxRQUFRO0tBQ0EsQ0FBQTtJQUV4QixNQUFNLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxZQUFZLEVBQUUsUUFBUSxFQUFFLEdBQzlDLE1BQU0sT0FBTyxDQUFDLFlBQVksQ0FBQyxXQUFXLEVBQUUsUUFBUSxDQUFDLENBQUE7SUFFbkQsT0FB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
|
|
@@ -73,14 +73,21 @@ async function passwordResetHandler({ event: { data }, container, }) {
|
|
|
73
73
|
hasCreate: typeof notificationService.create === "function",
|
|
74
74
|
hasCreateNotifications: typeof notificationService.createNotifications === "function"
|
|
75
75
|
});
|
|
76
|
-
// Get storefront URL from
|
|
76
|
+
// Get storefront URL from plugin options
|
|
77
77
|
let storefrontUrl = "http://localhost:8000";
|
|
78
78
|
try {
|
|
79
|
-
const
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
79
|
+
const configModule = container.resolve(utils_1.ContainerRegistrationKeys.CONFIG_MODULE);
|
|
80
|
+
const plugins = configModule
|
|
81
|
+
?.projectConfig?.plugins ?? [];
|
|
82
|
+
for (const plugin of plugins) {
|
|
83
|
+
if (typeof plugin === "object" && plugin !== null && plugin?.resolve === "customer-registration") {
|
|
84
|
+
const options = plugin?.options;
|
|
85
|
+
if (options?.storefrontUrl) {
|
|
86
|
+
storefrontUrl = options.storefrontUrl;
|
|
87
|
+
break;
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
}
|
|
84
91
|
}
|
|
85
92
|
catch (error) {
|
|
86
93
|
console.warn("[password-reset] Failed to resolve config, using default storefront URL:", error);
|
|
@@ -181,4 +188,4 @@ async function passwordResetHandler({ event: { data }, container, }) {
|
|
|
181
188
|
exports.config = {
|
|
182
189
|
event: "auth.password_reset",
|
|
183
190
|
};
|
|
184
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
191
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFzc3dvcmQtcmVzZXQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvc3Vic2NyaWJlcnMvcGFzc3dvcmQtcmVzZXQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBa0NBLHVDQXNMQztBQXBORCxxREFBMkY7QUFhM0Y7Ozs7Ozs7Ozs7Ozs7Ozs7R0FnQkc7QUFDWSxLQUFLLFVBQVUsb0JBQW9CLENBQUMsRUFDakQsS0FBSyxFQUFFLEVBQUUsSUFBSSxFQUFFLEVBQ2YsU0FBUyxHQUM4QjtJQUN2QyxPQUFPLENBQUMsR0FBRyxDQUFDLHVDQUF1QyxDQUFDLENBQUE7SUFDcEQsT0FBTyxDQUFDLEdBQUcsQ0FBQyx1Q0FBdUMsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQTtJQUVuRixvRkFBb0Y7SUFDcEYsSUFBSSxLQUF5QixDQUFBO0lBQzdCLElBQUksS0FBeUIsQ0FBQTtJQUU3QixrREFBa0Q7SUFDbEQsSUFBSSxJQUFJLElBQUksT0FBTyxJQUFJLEtBQUssUUFBUSxFQUFFLENBQUM7UUFDckMsb0JBQW9CO1FBQ3BCLEtBQUssR0FBSSxJQUFJLENBQUMsS0FBZ0IsSUFBSyxJQUFJLENBQUMsY0FBeUIsQ0FBQTtRQUNqRSxLQUFLLEdBQUksSUFBSSxDQUFDLEtBQWdCLElBQUssSUFBSSxDQUFDLFdBQXNCLElBQUssSUFBSSxDQUFDLG9CQUErQixDQUFBO1FBRXZHLDBCQUEwQjtRQUMxQixJQUFJLENBQUMsS0FBSyxJQUFLLElBQVksQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNqQyxNQUFNLFVBQVUsR0FBSSxJQUFZLENBQUMsSUFBSSxDQUFBO1lBQ3JDLEtBQUssR0FBRyxVQUFVLENBQUMsS0FBSyxJQUFJLFVBQVUsQ0FBQyxjQUFjLENBQUE7WUFDckQsS0FBSyxHQUFHLFVBQVUsQ0FBQyxLQUFLLElBQUksVUFBVSxDQUFDLFdBQVcsSUFBSSxV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
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGx1Z2luLW9wdGlvbnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvdHlwZXMvcGx1Z2luLW9wdGlvbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiJ9
|
package/README.md
CHANGED
|
@@ -30,6 +30,10 @@ export default defineConfig({
|
|
|
30
30
|
{
|
|
31
31
|
resolve: "customer-registration",
|
|
32
32
|
options: {
|
|
33
|
+
// Required: Storefront URL for password reset links
|
|
34
|
+
storefrontUrl: process.env.STOREFRONT_URL || "http://localhost:8000",
|
|
35
|
+
|
|
36
|
+
// OTP channel configuration
|
|
33
37
|
email_verification: {
|
|
34
38
|
channel: "email",
|
|
35
39
|
subject: "Verify your email",
|
|
@@ -43,6 +47,9 @@ export default defineConfig({
|
|
|
43
47
|
})
|
|
44
48
|
```
|
|
45
49
|
|
|
50
|
+
**Required Options:**
|
|
51
|
+
- `storefrontUrl` - Your storefront URL (required for password reset links)
|
|
52
|
+
|
|
46
53
|
3. **Run migrations**:
|
|
47
54
|
```bash
|
|
48
55
|
npx medusa db:migrate
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "customer-registration",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.109",
|
|
4
4
|
"description": "Medusa plugin that overrides store customer registration, enforces email/phone verification flags, and provides OTP management module.",
|
|
5
5
|
"author": "Medusa (https://medusajs.com)",
|
|
6
6
|
"license": "MIT",
|