customer-registration 0.0.109 → 0.0.111
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 +47 -28
- package/.medusa/server/src/api/auth/customer/emailpass/route.js +2 -2
- package/.medusa/server/src/config.js +50 -0
- package/.medusa/server/src/subscribers/password-reset.js +45 -40
- package/README.md +10 -4
- package/package.json +1 -1
|
@@ -3,44 +3,53 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.POST = void 0;
|
|
4
4
|
const utils_1 = require("@medusajs/framework/utils");
|
|
5
5
|
const generate_jwt_token_1 = require("@medusajs/medusa/api/auth/utils/generate-jwt-token");
|
|
6
|
+
const otp_verification_1 = require("../../../../../modules/otp-verification");
|
|
7
|
+
const config_1 = require("../../../../../config");
|
|
8
|
+
/**
|
|
9
|
+
* Generate plain text version from HTML by stripping tags
|
|
10
|
+
*/
|
|
11
|
+
function htmlToPlainText(html) {
|
|
12
|
+
return html
|
|
13
|
+
.replace(/<[^>]*>/g, "") // Remove HTML tags
|
|
14
|
+
.replace(/ /g, " ") // Replace with space
|
|
15
|
+
.replace(/&/g, "&") // Replace & with &
|
|
16
|
+
.replace(/</g, "<") // Replace < with <
|
|
17
|
+
.replace(/>/g, ">") // Replace > with >
|
|
18
|
+
.replace(/"/g, '"') // Replace " with "
|
|
19
|
+
.replace(/'/g, "'") // Replace ' with '
|
|
20
|
+
.replace(/\n\s*\n/g, "\n\n") // Collapse multiple newlines
|
|
21
|
+
.trim();
|
|
22
|
+
}
|
|
6
23
|
/**
|
|
7
24
|
* Send password reset email using notification service
|
|
8
25
|
*/
|
|
9
|
-
async function sendPasswordResetEmail(email, token,
|
|
26
|
+
async function sendPasswordResetEmail(email, token, resetUrl, templatePath, subject, container) {
|
|
10
27
|
console.log("[reset-password] Sending password reset email directly...");
|
|
11
28
|
const notificationService = container.resolve(utils_1.Modules.NOTIFICATION);
|
|
12
29
|
if (!notificationService) {
|
|
13
30
|
console.error("[reset-password] Notification service is not configured");
|
|
14
31
|
return;
|
|
15
32
|
}
|
|
16
|
-
//
|
|
17
|
-
const
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
<p>This link will expire in 1 hour.</p>
|
|
28
|
-
<p>If you didn't request a password reset, please ignore this email.</p>
|
|
29
|
-
<p>Best regards,<br>Your Team</p>
|
|
30
|
-
</body>
|
|
31
|
-
</html>
|
|
32
|
-
`.trim();
|
|
33
|
-
const textContent = `Reset Your Password\n\nClick this link to reset your password: ${resetUrl}\n\nToken: ${token}\n\nThis link will expire in 1 hour.\n\nIf you didn't request a password reset, please ignore this email.`;
|
|
33
|
+
// Load and render template with variables
|
|
34
|
+
const htmlContent = (0, otp_verification_1.loadAndRenderTemplate)(templatePath, {
|
|
35
|
+
token,
|
|
36
|
+
email,
|
|
37
|
+
reset_url: resetUrl,
|
|
38
|
+
});
|
|
39
|
+
if (!htmlContent) {
|
|
40
|
+
throw new Error(`Failed to load password reset template from ${templatePath}`);
|
|
41
|
+
}
|
|
42
|
+
// Generate plain text version from HTML
|
|
43
|
+
const textContent = htmlToPlainText(htmlContent);
|
|
34
44
|
// Prepare email payload matching notification service structure
|
|
35
45
|
// Include multiple fields for different SMTP provider expectations
|
|
36
46
|
const payload = {
|
|
37
47
|
to: email,
|
|
38
48
|
channel: "email",
|
|
39
49
|
data: {
|
|
40
|
-
subject
|
|
50
|
+
subject,
|
|
41
51
|
email,
|
|
42
52
|
token,
|
|
43
|
-
reset_url: resetUrl,
|
|
44
53
|
expires_in: "1 hour",
|
|
45
54
|
html: htmlContent,
|
|
46
55
|
text: textContent,
|
|
@@ -50,7 +59,7 @@ async function sendPasswordResetEmail(email, token, storefrontUrl, container) {
|
|
|
50
59
|
text: textContent,
|
|
51
60
|
body: htmlContent, // Some providers expect 'body' field
|
|
52
61
|
template: htmlContent, // Some providers expect 'template' field
|
|
53
|
-
subject
|
|
62
|
+
subject, // Include subject at root level too
|
|
54
63
|
};
|
|
55
64
|
// Log payload structure (sanitized for security)
|
|
56
65
|
console.log("[reset-password] Email payload structure:", {
|
|
@@ -144,14 +153,16 @@ const POST = async (req, res) => {
|
|
|
144
153
|
// Return success for security (don't reveal if email exists)
|
|
145
154
|
return res.status(201).json({});
|
|
146
155
|
}
|
|
156
|
+
// Get password reset configuration from plugin options
|
|
157
|
+
const configModule = req.scope.resolve(utils_1.ContainerRegistrationKeys.CONFIG_MODULE);
|
|
158
|
+
const pluginOptions = (0, config_1.resolveCustomerRegistrationOptions)(configModule);
|
|
159
|
+
if (!pluginOptions?.password_reset?.template) {
|
|
160
|
+
throw new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, "Password reset template path is not configured. Please set password_reset.template in plugin options.");
|
|
161
|
+
}
|
|
147
162
|
// Generate reset token (JWT) with 1 hour expiration
|
|
148
163
|
// Using the same method Medusa's built-in route uses
|
|
149
164
|
const config = req.scope.resolve(utils_1.ContainerRegistrationKeys.CONFIG_MODULE);
|
|
150
165
|
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
|
-
}
|
|
155
166
|
const resetToken = (0, generate_jwt_token_1.generateJwtTokenForAuthIdentity)({
|
|
156
167
|
authIdentity,
|
|
157
168
|
actorType: "customer",
|
|
@@ -161,11 +172,19 @@ const POST = async (req, res) => {
|
|
|
161
172
|
expiresIn: "1h", // 1 hour expiration for reset token
|
|
162
173
|
options: http.jwtOptions,
|
|
163
174
|
});
|
|
175
|
+
// Build reset URL if storefrontUrl is provided
|
|
176
|
+
let resetUrl;
|
|
177
|
+
if (pluginOptions.storefrontUrl) {
|
|
178
|
+
const url = new URL("/reset-password", pluginOptions.storefrontUrl);
|
|
179
|
+
url.searchParams.set("token", resetToken);
|
|
180
|
+
url.searchParams.set("email", normalizedEmail);
|
|
181
|
+
resetUrl = url.toString();
|
|
182
|
+
}
|
|
164
183
|
// Send password reset email
|
|
165
184
|
// Note: Medusa's built-in route would emit 'auth.password_reset' event here
|
|
166
185
|
// Since we're overriding the route, we send the email directly
|
|
167
186
|
try {
|
|
168
|
-
await sendPasswordResetEmail(normalizedEmail, resetToken,
|
|
187
|
+
await sendPasswordResetEmail(normalizedEmail, resetToken, resetUrl || "", pluginOptions.password_reset.template, pluginOptions.password_reset.subject, req.scope);
|
|
169
188
|
}
|
|
170
189
|
catch (emailError) {
|
|
171
190
|
console.error("[reset-password] Failed to send email:", emailError);
|
|
@@ -182,4 +201,4 @@ const POST = async (req, res) => {
|
|
|
182
201
|
}
|
|
183
202
|
};
|
|
184
203
|
exports.POST = POST;
|
|
185
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
204
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL2F1dGgvY3VzdG9tZXIvZW1haWxwYXNzL3Jlc2V0LXBhc3N3b3JkL3JvdXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUNBLHFEQUEyRjtBQUUzRiwyRkFBb0c7QUFDcEcsOEVBQStFO0FBQy9FLGtEQUc4QjtBQUU5Qjs7R0FFRztBQUNILFNBQVMsZUFBZSxDQUFDLElBQVk7SUFDbkMsT0FBTyxJQUFJO1NBQ1IsT0FBTyxDQUFDLFVBQVUsRUFBRSxFQUFFLENBQUMsQ0FBQyxtQkFBbUI7U0FDM0MsT0FBTyxDQUFDLFNBQVMsRUFBRSxHQUFHLENBQUMsQ0FBQyw0QkFBNEI7U0FDcEQsT0FBTyxDQUFDLFFBQVEsRUFBRSxHQUFHLENBQUMsQ0FBQyx1QkFBdUI7U0FDOUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxHQUFHLENBQUMsQ0FBQyxzQkFBc0I7U0FDNUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxHQUFHLENBQUMsQ0FBQyxzQkFBc0I7U0FDNUMsT0FBTyxDQUFDLFNBQVMsRUFBRSxHQUFHLENBQUMsQ0FBQyx3QkFBd0I7U0FDaEQsT0FBTyxDQUFDLFFBQVEsRUFBRSxHQUFHLENBQUMsQ0FBQyx1QkFBdUI7U0FDOUMsT0FBTyxDQUFDLFVBQVUsRUFBRSxNQUFNLENBQUMsQ0FBQyw2QkFBNkI7U0FDekQsSUFBSSxFQUFFLENBQUE7QUFDWCxDQUFDO0FBRUQ7O0dBRUc7QUFDSCxLQUFLLFVBQVUsc0JBQXNCLENBQ25DLEtBQWEsRUFDYixLQUFhLEVBQ2IsUUFBZ0IsRUFDaEIsWUFBb0IsRUFDcEIsT0FBZSxFQUNmLFNBQWM7SUFFZCxPQUFPLENBQUMsR0FBRyxDQUFDLDJEQUEyRCxDQUFDLENBQUE7SUFFeEUsTUFBTSxtQkFBbUIsR0FBRyxTQUFTLENBQUMsT0FBTyxDQUFDLGVBQU8sQ0FBQyxZQUFZLENBR2pFLENBQUE7SUFFRCxJ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
|
|
@@ -116,7 +116,7 @@ const GET = async (req, res) => {
|
|
|
116
116
|
});
|
|
117
117
|
let token;
|
|
118
118
|
try {
|
|
119
|
-
token = (0, generate_jwt_token_1.generateJwtTokenForAuthIdentity)({
|
|
119
|
+
token = await (0, generate_jwt_token_1.generateJwtTokenForAuthIdentity)({
|
|
120
120
|
authIdentity: authIdentityWithCustomerId,
|
|
121
121
|
actorType: "customer",
|
|
122
122
|
}, {
|
|
@@ -198,4 +198,4 @@ const enforceEmailAndPhoneVerification = async ({ email, req, }) => {
|
|
|
198
198
|
throw new utils_1.MedusaError(utils_1.MedusaError.Types.UNAUTHORIZED, "Email not verified.");
|
|
199
199
|
}
|
|
200
200
|
};
|
|
201
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
201
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL2F1dGgvY3VzdG9tZXIvZW1haWxwYXNzL3JvdXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQU1BLHFEQUlrQztBQUNsQywyRkFBb0c7QUFDcEcsMkVBQThFO0FBS3ZFLE1BQU0sR0FBRyxHQUFHLEtBQUssRUFBRSxHQUFrQixFQUFFLEdBQW1CLEVBQUUsRUFBRTtJQUNuRSxPQUFPLENBQUMsR0FBRyxDQUFDLGtEQUFrRCxFQUFFO1FBQzlELE1BQU0sRUFBRSxHQUFHLENBQUMsTUFBTTtRQUNsQixHQUFHLEVBQUUsR0FBRyxDQUFDLEdBQUc7UUFDWixPQUFPLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJO1FBQ25CLFFBQVEsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLEtBQUs7S0FDdEIsQ0FBQyxDQUFBO0lBRUYsTUFBTSxNQUFNLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQzlCLGlDQUF5QixDQUFDLGFBQWEsQ0FDeEMsQ0FBQTtJQUVELE1BQU0sT0FBTyxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLGVBQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQTtJQUUvQyxNQUFNLFFBQVEsR0FBRztRQUNmLEdBQUcsRUFBRSxHQUFHLENBQUMsR0FBRztRQUNaLE9BQU8sRUFBRSxHQUFHLENBQUMsT0FBTztRQUNwQixLQUFLLEVBQUUsR0FBRyxDQUFDLEtBQUs7UUFDaEIsSUFBSSxFQUFFLEdBQUcsQ0FBQyxJQUFJO1FBQ2QsUUFBUSxFQUFFLEdBQUcsQ0FBQyxRQUFRO0tBQ0EsQ0FBQTtJQUV4QixNQUFNLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxZQUFZLEVBQUUsUUFBUSxFQUFFLEdBQzlDLE1BQU0sT0FBTyxDQUFDLFlBQVksQ0FBQyxXQUFXLEVBQUUsUUFBUSxDQUFDLENBQUE7SUFFbkQsT0FB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
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Configuration types for customer-registration plugin
|
|
4
|
+
* Configuration is now passed through plugin options in medusa-config.ts
|
|
5
|
+
*/
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.normalizeCustomerRegistrationOptions = normalizeCustomerRegistrationOptions;
|
|
8
|
+
exports.resolveCustomerRegistrationOptions = resolveCustomerRegistrationOptions;
|
|
9
|
+
const utils_1 = require("@medusajs/framework/utils");
|
|
10
|
+
const PLUGIN_NAME = "customer-registration";
|
|
11
|
+
function normalizeCustomerRegistrationOptions(input) {
|
|
12
|
+
if (!input) {
|
|
13
|
+
return null;
|
|
14
|
+
}
|
|
15
|
+
// Password reset template is required if password_reset is configured
|
|
16
|
+
if (input.password_reset && !input.password_reset.template) {
|
|
17
|
+
throw new Error("customer-registration: password_reset.template is required when password_reset is configured");
|
|
18
|
+
}
|
|
19
|
+
return {
|
|
20
|
+
storefrontUrl: input.storefrontUrl,
|
|
21
|
+
password_reset: input.password_reset
|
|
22
|
+
? {
|
|
23
|
+
template: input.password_reset.template,
|
|
24
|
+
subject: input.password_reset.subject || "Reset Your Password",
|
|
25
|
+
}
|
|
26
|
+
: undefined,
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
function resolveCustomerRegistrationOptions(configModule) {
|
|
30
|
+
// Try projectConfig.plugins first (most common in Medusa v2)
|
|
31
|
+
const projectPlugins = configModule?.projectConfig?.plugins ?? [];
|
|
32
|
+
// Also try direct plugins as fallback
|
|
33
|
+
const directPlugins = configModule?.plugins ?? [];
|
|
34
|
+
const plugins = [...projectPlugins, ...directPlugins];
|
|
35
|
+
for (const plugin of plugins) {
|
|
36
|
+
if ((0, utils_1.isString)(plugin)) {
|
|
37
|
+
if (plugin === PLUGIN_NAME) {
|
|
38
|
+
// String plugin without options - return null (options are optional)
|
|
39
|
+
return null;
|
|
40
|
+
}
|
|
41
|
+
continue;
|
|
42
|
+
}
|
|
43
|
+
if (plugin?.resolve === PLUGIN_NAME) {
|
|
44
|
+
return normalizeCustomerRegistrationOptions(plugin.options);
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
// Plugin not found - return null (plugin might not be configured)
|
|
48
|
+
return null;
|
|
49
|
+
}
|
|
50
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbmZpZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7OztHQUdHOztBQTZCSCxvRkF1QkM7QUFFRCxnRkF5QkM7QUE3RUQscURBQW9EO0FBR3BELE1BQU0sV0FBVyxHQUFHLHVCQUF1QixDQUFBO0FBd0IzQyxTQUFnQixvQ0FBb0MsQ0FDbEQsS0FBZ0Q7SUFFaEQsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ1gsT0FBTyxJQUFJLENBQUE7SUFDYixDQUFDO0lBRUQsc0VBQXNFO0lBQ3RFLElBQUksS0FBSyxDQUFDLGNBQWMsSUFBSSxDQUFDLEtBQUssQ0FBQyxjQUFjLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDM0QsTUFBTSxJQUFJLEtBQUssQ0FDYiw4RkFBOEYsQ0FDL0YsQ0FBQTtJQUNILENBQUM7SUFFRCxPQUFPO1FBQ0wsYUFBYSxFQUFFLEtBQUssQ0FBQyxhQUFhO1FBQ2xDLGNBQWMsRUFBRSxLQUFLLENBQUMsY0FBYztZQUNsQyxDQUFDLENBQUM7Z0JBQ0UsUUFBUSxFQUFFLEtBQUssQ0FBQyxjQUFjLENBQUMsUUFBUTtnQkFDdkMsT0FBTyxFQUFFLEtBQUssQ0FBQyxjQUFjLENBQUMsT0FBTyxJQUFJLHFCQUFxQjthQUMvRDtZQUNILENBQUMsQ0FBQyxTQUFTO0tBQ2QsQ0FBQTtBQUNILENBQUM7QUFFRCxTQUFnQixrQ0FBa0MsQ0FDaEQsWUFBZ0M7SUFFaEMsNkRBQTZEO0lBQzdELE1BQU0sY0FBYyxHQUFHLFlBQVksRUFBRSxhQUFhLEVBQUUsT0FBTyxJQUFJLEVBQUUsQ0FBQTtJQUNqRSxzQ0FBc0M7SUFDdEMsTUFBTSxhQUFhLEdBQUcsWUFBWSxFQUFFLE9BQU8sSUFBSSxFQUFFLENBQUE7SUFDakQsTUFBTSxPQUFPLEdBQUcsQ0FBQyxHQUFHLGNBQWMsRUFBRSxHQUFHLGFBQWEsQ0FBQyxDQUFBO0lBRXJELEtBQUssTUFBTSxNQUFNLElBQUksT0FBTyxFQUFFLENBQUM7UUFDN0IsSUFBSSxJQUFBLGdCQUFRLEVBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztZQUNyQixJQUFJLE1BQU0sS0FBSyxXQUFXLEVBQUUsQ0FBQztnQkFDM0IscUVBQXFFO2dCQUNyRSxPQUFPLElBQUksQ0FBQTtZQUNiLENBQUM7WUFDRCxTQUFRO1FBQ1YsQ0FBQztRQUVELElBQUksTUFBTSxFQUFFLE9BQU8sS0FBSyxXQUFXLEVBQUUsQ0FBQztZQUNwQyxPQUFPLG9DQUFvQyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQTtRQUM3RCxDQUFDO0lBQ0gsQ0FBQztJQUVELGtFQUFrRTtJQUNsRSxPQUFPLElBQUksQ0FBQTtBQUNiLENBQUMifQ==
|
|
@@ -3,6 +3,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.config = void 0;
|
|
4
4
|
exports.default = passwordResetHandler;
|
|
5
5
|
const utils_1 = require("@medusajs/framework/utils");
|
|
6
|
+
const otp_verification_1 = require("../modules/otp-verification");
|
|
7
|
+
const config_1 = require("../config");
|
|
6
8
|
/**
|
|
7
9
|
* Notification subscriber for password reset events
|
|
8
10
|
*
|
|
@@ -73,54 +75,52 @@ async function passwordResetHandler({ event: { data }, container, }) {
|
|
|
73
75
|
hasCreate: typeof notificationService.create === "function",
|
|
74
76
|
hasCreateNotifications: typeof notificationService.createNotifications === "function"
|
|
75
77
|
});
|
|
76
|
-
// Get
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
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
|
-
}
|
|
78
|
+
// Get password reset configuration from plugin options
|
|
79
|
+
const configModule = container.resolve(utils_1.ContainerRegistrationKeys.CONFIG_MODULE);
|
|
80
|
+
const pluginOptions = (0, config_1.resolveCustomerRegistrationOptions)(configModule);
|
|
81
|
+
if (!pluginOptions?.password_reset?.template) {
|
|
82
|
+
console.error("[password-reset] Password reset template path is not configured. Please set password_reset.template in plugin options.");
|
|
83
|
+
return;
|
|
91
84
|
}
|
|
92
|
-
|
|
93
|
-
|
|
85
|
+
// Build reset URL if storefrontUrl is provided
|
|
86
|
+
let resetUrl;
|
|
87
|
+
if (pluginOptions.storefrontUrl) {
|
|
88
|
+
const url = new URL("/reset-password", pluginOptions.storefrontUrl);
|
|
89
|
+
url.searchParams.set("token", token);
|
|
90
|
+
url.searchParams.set("email", email);
|
|
91
|
+
resetUrl = url.toString();
|
|
92
|
+
}
|
|
93
|
+
// Load and render template with variables
|
|
94
|
+
const htmlContent = (0, otp_verification_1.loadAndRenderTemplate)(pluginOptions.password_reset.template, {
|
|
95
|
+
token,
|
|
96
|
+
email,
|
|
97
|
+
reset_url: resetUrl || "",
|
|
98
|
+
});
|
|
99
|
+
if (!htmlContent) {
|
|
100
|
+
console.error(`[password-reset] Failed to load password reset template from ${pluginOptions.password_reset.template}`);
|
|
101
|
+
return;
|
|
94
102
|
}
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
<p>Or use this token: <code>${token}</code></p>
|
|
107
|
-
<p>This link will expire in 1 hour.</p>
|
|
108
|
-
<p>If you didn't request a password reset, please ignore this email.</p>
|
|
109
|
-
<p>Best regards,<br>Your Team</p>
|
|
110
|
-
</body>
|
|
111
|
-
</html>
|
|
112
|
-
`.trim();
|
|
113
|
-
const textContent = `Reset Your Password\n\nClick this link to reset your password: ${resetUrl}\n\nToken: ${token}\n\nThis link will expire in 1 hour.\n\nIf you didn't request a password reset, please ignore this email.`;
|
|
103
|
+
// Generate plain text version from HTML
|
|
104
|
+
const textContent = htmlContent
|
|
105
|
+
.replace(/<[^>]*>/g, "") // Remove HTML tags
|
|
106
|
+
.replace(/ /g, " ") // Replace with space
|
|
107
|
+
.replace(/&/g, "&") // Replace & with &
|
|
108
|
+
.replace(/</g, "<") // Replace < with <
|
|
109
|
+
.replace(/>/g, ">") // Replace > with >
|
|
110
|
+
.replace(/"/g, '"') // Replace " with "
|
|
111
|
+
.replace(/'/g, "'") // Replace ' with '
|
|
112
|
+
.replace(/\n\s*\n/g, "\n\n") // Collapse multiple newlines
|
|
113
|
+
.trim();
|
|
114
114
|
// Prepare email payload matching notification service structure
|
|
115
115
|
// Structure matches the working send-notification-step.ts format
|
|
116
116
|
const payload = {
|
|
117
117
|
to: email,
|
|
118
118
|
channel: "email",
|
|
119
119
|
data: {
|
|
120
|
-
subject:
|
|
120
|
+
subject: pluginOptions.password_reset.subject,
|
|
121
121
|
email,
|
|
122
122
|
token,
|
|
123
|
-
reset_url: resetUrl,
|
|
123
|
+
reset_url: resetUrl || "",
|
|
124
124
|
expires_in: "1 hour",
|
|
125
125
|
// Include HTML and text in data for providers that read from there
|
|
126
126
|
html: htmlContent,
|
|
@@ -129,20 +129,25 @@ async function passwordResetHandler({ event: { data }, container, }) {
|
|
|
129
129
|
// Include HTML and text at root level for SMTP providers
|
|
130
130
|
html: htmlContent,
|
|
131
131
|
text: textContent,
|
|
132
|
+
body: htmlContent, // Some providers expect 'body' field
|
|
133
|
+
template: htmlContent, // Some providers expect 'template' field
|
|
134
|
+
subject: pluginOptions.password_reset.subject, // Include subject at root level too
|
|
132
135
|
};
|
|
133
136
|
console.log("[password-reset] Prepared payload:", JSON.stringify({
|
|
134
137
|
to: payload.to,
|
|
135
138
|
channel: payload.channel,
|
|
139
|
+
subject: payload.subject,
|
|
136
140
|
data: {
|
|
137
141
|
subject: payload.data.subject,
|
|
138
142
|
email: payload.data.email,
|
|
139
143
|
hasToken: !!payload.data.token,
|
|
140
|
-
hasResetUrl: !!payload.data.reset_url,
|
|
141
144
|
hasHtml: !!payload.data.html,
|
|
142
145
|
hasText: !!payload.data.text,
|
|
143
146
|
},
|
|
144
147
|
hasHtml: !!payload.html,
|
|
145
148
|
hasText: !!payload.text,
|
|
149
|
+
hasBody: !!payload.body,
|
|
150
|
+
hasTemplate: !!payload.template,
|
|
146
151
|
}, null, 2));
|
|
147
152
|
try {
|
|
148
153
|
console.log("[password-reset] Attempting to send notification...");
|
|
@@ -188,4 +193,4 @@ async function passwordResetHandler({ event: { data }, container, }) {
|
|
|
188
193
|
exports.config = {
|
|
189
194
|
event: "auth.password_reset",
|
|
190
195
|
};
|
|
191
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
196
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFzc3dvcmQtcmVzZXQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvc3Vic2NyaWJlcnMvcGFzc3dvcmQtcmVzZXQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBdUNBLHVDQTBMQztBQTdORCxxREFBMkY7QUFDM0Ysa0VBQW1FO0FBQ25FLHNDQUdrQjtBQWFsQjs7Ozs7Ozs7Ozs7Ozs7OztHQWdCRztBQUNZLEtBQUssVUFBVSxvQkFBb0IsQ0FBQyxFQUNqRCxLQUFLLEVBQUUsRUFBRSxJQUFJLEVBQUUsRUFDZixTQUFTLEdBQzhCO0lBQ3ZDLE9BQU8sQ0FBQyxHQUFHLENBQUMsdUNBQXVDLENBQUMsQ0FBQTtJQUNwRCxPQUFPLENBQUMsR0FBRyxDQUFDLHVDQUF1QyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFBO0lBRW5GLG9GQUFvRjtJQUNwRixJQUFJLEtBQXlCLENBQUE7SUFDN0IsSUFBSSxLQUF5QixDQUFBO0lBRTdCLGtEQUFrRDtJQUNsRCxJQUFJLElBQUksSUFBSSxPQUFPLElBQUksS0FBSyxRQUFRLEVBQUUsQ0FBQztRQUNyQyxvQkFBb0I7UUFDcEIsS0FBSyxHQUFJLElBQUksQ0FBQyxLQUFnQixJQUFLLElBQUksQ0FBQyxjQUF5QixDQUFBO1FBQ2pFLEtBQUssR0FBSSxJQUFJLENBQUMsS0FBZ0IsSUFBSyxJQUFJLENBQUMsV0FBc0IsSUFBSyxJQUFJLENBQUMsb0JBQStCLENBQUE7UUFFdkcsMEJBQTBCO1FBQzFCLElBQUksQ0FBQyxLQUFLLElBQUssSUFBWSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ2pDLE1BQU0sVUFBVSxHQUFJLElBQVksQ0FBQyxJQUFJLENBQUE7WUFDckMsS0FBSyxHQUFHLFVBQVUsQ0FBQyxLQUFLLElBQUksVUFBVSxDQUFDLGNBQWMsQ0FBQTtZQUNyRCxLQUFLLEdBQUcsVUFBVSxDQUFDLEtBQUss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
|
package/README.md
CHANGED
|
@@ -30,8 +30,14 @@ export default defineConfig({
|
|
|
30
30
|
{
|
|
31
31
|
resolve: "customer-registration",
|
|
32
32
|
options: {
|
|
33
|
-
//
|
|
34
|
-
storefrontUrl:
|
|
33
|
+
// Storefront URL for constructing reset password links
|
|
34
|
+
storefrontUrl: "http://localhost:8000", // Optional: base URL for reset links
|
|
35
|
+
|
|
36
|
+
// Password reset configuration
|
|
37
|
+
password_reset: {
|
|
38
|
+
template: "src/templates/emails/password-reset.html", // Required: path to HTML template
|
|
39
|
+
subject: "Reset Your Password", // Optional: email subject
|
|
40
|
+
},
|
|
35
41
|
|
|
36
42
|
// OTP channel configuration
|
|
37
43
|
email_verification: {
|
|
@@ -48,7 +54,7 @@ export default defineConfig({
|
|
|
48
54
|
```
|
|
49
55
|
|
|
50
56
|
**Required Options:**
|
|
51
|
-
- `
|
|
57
|
+
- `password_reset.template` - Path to HTML template file for password reset emails
|
|
52
58
|
|
|
53
59
|
3. **Run migrations**:
|
|
54
60
|
```bash
|
|
@@ -239,7 +245,7 @@ This plugin provides password reset functionality using Medusa's AUTH module:
|
|
|
239
245
|
**Note:** These custom routes override Medusa's built-in routes at the same paths. The subscriber listens to `auth.password_reset` event (emitted by Medusa's built-in route) but since we're using custom routes, emails are sent directly from the route.
|
|
240
246
|
|
|
241
247
|
**Configuration Required:**
|
|
242
|
-
- Set `
|
|
248
|
+
- Set `password_reset.template` in plugin options (path to HTML template file)
|
|
243
249
|
- Configure email template with ID `password-reset` in your notification provider (optional, subscriber includes HTML)
|
|
244
250
|
- Ensure AUTH module is configured with `emailpass` provider
|
|
245
251
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "customer-registration",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.111",
|
|
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",
|