customer-registration 0.0.104 → 0.0.105

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.
Files changed (23) hide show
  1. package/.medusa/server/src/api/auth/customer/emailpass/reset-password/route.js +63 -0
  2. package/.medusa/server/src/api/auth/customer/emailpass/update/route.js +71 -0
  3. package/.medusa/server/src/api/store/customers/change-password/route.js +52 -0
  4. package/.medusa/server/src/api/store/customers/otp/verify/route.js +1 -14
  5. package/.medusa/server/src/helpers/base-client.js +36 -0
  6. package/.medusa/server/src/helpers/index.js +16 -0
  7. package/.medusa/server/src/helpers/reset-password.js +193 -0
  8. package/.medusa/server/src/modules/otp-verification/migrations/Migration20250120000000RemoveForgotPasswordFromOtpPurpose.js +33 -0
  9. package/.medusa/server/src/modules/otp-verification/models/otp-verification.js +2 -3
  10. package/.medusa/server/src/modules/otp-verification/service.js +64 -1
  11. package/.medusa/server/src/modules/password-management/index.js +12 -0
  12. package/.medusa/server/src/modules/password-management/service.js +200 -0
  13. package/.medusa/server/src/subscribers/password-reset.js +94 -0
  14. package/.medusa/server/src/utils/password-hashing.js +93 -0
  15. package/.medusa/server/src/utils/password-validation.js +45 -0
  16. package/.medusa/server/src/workflows/change-password.js +117 -0
  17. package/.medusa/server/src/workflows/steps/find-customer-by-email-step.js +23 -0
  18. package/.medusa/server/src/workflows/steps/index.js +6 -2
  19. package/.medusa/server/src/workflows/steps/send-notification-step.js +91 -5
  20. package/.medusa/server/src/workflows/steps/update-password-step.js +44 -0
  21. package/README.md +59 -17
  22. package/package.json +6 -2
  23. package/.medusa/server/src/workflows/generate-password-reset-token.js +0 -38
@@ -0,0 +1,63 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.POST = void 0;
4
+ const utils_1 = require("@medusajs/framework/utils");
5
+ /**
6
+ * Password reset request endpoint
7
+ *
8
+ * This endpoint uses Medusa's built-in AUTH module to handle password reset requests.
9
+ * The AUTH module will:
10
+ * 1. Validate the email
11
+ * 2. Generate a password reset token
12
+ * 3. Trigger the `customer.password_reset` event
13
+ * 4. The notification subscriber will send the reset email
14
+ */
15
+ const POST = async (req, res) => {
16
+ const { email } = req.body;
17
+ if (!email || typeof email !== "string" || !email.trim()) {
18
+ throw new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, "Email is required");
19
+ }
20
+ // Get AUTH service
21
+ const authService = req.scope.resolve(utils_1.Modules.AUTH);
22
+ // Prepare authentication input for password reset
23
+ // Convert headers to Record<string, string> format (handle array values like set-cookie)
24
+ const headers = {};
25
+ for (const [key, value] of Object.entries(req.headers)) {
26
+ headers[key] = Array.isArray(value) ? value.join(", ") : (value || "");
27
+ }
28
+ const authData = {
29
+ url: req.url,
30
+ headers,
31
+ query: req.query,
32
+ body: {
33
+ email: email.toLowerCase().trim(),
34
+ action: "reset-password",
35
+ },
36
+ protocol: req.protocol,
37
+ };
38
+ try {
39
+ // Call AUTH module's authenticate method with reset-password action
40
+ // This will trigger the customer.password_reset event, which our subscriber handles
41
+ const { success, error, location } = await authService.authenticate("emailpass", authData);
42
+ // If location is returned, it means AUTH module wants to redirect
43
+ if (location) {
44
+ return res.status(200).json({ location });
45
+ }
46
+ // Always return success for security (don't reveal if email exists)
47
+ // This prevents email enumeration attacks
48
+ // The AUTH module and subscriber handle the actual email sending
49
+ return res.status(200).json({
50
+ message: "If the email exists, a password reset link has been sent",
51
+ });
52
+ }
53
+ catch (error) {
54
+ // Even on error, return success to prevent email enumeration attacks
55
+ // Log the error for debugging
56
+ console.error("[reset-password] Error processing reset request:", error);
57
+ return res.status(200).json({
58
+ message: "If the email exists, a password reset link has been sent",
59
+ });
60
+ }
61
+ };
62
+ exports.POST = POST;
63
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL2F1dGgvY3VzdG9tZXIvZW1haWxwYXNzL3Jlc2V0LXBhc3N3b3JkL3JvdXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUNBLHFEQUFnRTtBQUdoRTs7Ozs7Ozs7O0dBU0c7QUFDSSxNQUFNLElBQUksR0FBRyxLQUFLLEVBQUUsR0FBa0IsRUFBRSxHQUFtQixFQUFFLEVBQUU7SUFDcEUsTUFBTSxFQUFFLEtBQUssRUFBRSxHQUFHLEdBQUcsQ0FBQyxJQUEwQixDQUFBO0lBRWhELElBQUksQ0FBQyxLQUFLLElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUM7UUFDekQsTUFBTSxJQUFJLG1CQUFXLENBQ25CLG1CQUFXLENBQUMsS0FBSyxDQUFDLFlBQVksRUFDOUIsbUJBQW1CLENBQ3BCLENBQUE7SUFDSCxDQUFDO0lBRUQsbUJBQW1CO0lBQ25CLE1BQU0sV0FBVyxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLGVBQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQTtJQUVuRCxrREFBa0Q7SUFDbEQseUZBQXlGO0lBQ3pGLE1BQU0sT0FBTyxHQUEyQixFQUFFLENBQUE7SUFDMUMsS0FBSyxNQUFNLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7UUFDdkQsT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxJQUFJLEVBQUUsQ0FBQyxDQUFBO0lBQ3hFLENBQUM7SUFFRCxNQUFNLFFBQVEsR0FBRztRQUNmLEdBQUcsRUFBRSxHQUFHLENBQUMsR0FBRztRQUNaLE9BQU87UUFDUCxLQUFLLEVBQUUsR0FBRyxDQUFDLEtBQUs7UUFDaEIsSUFBSSxFQUFFO1lBQ0osS0FBSyxFQUFFLEtBQUssQ0FBQyxXQUFXLEVBQUUsQ0FBQyxJQUFJLEVBQUU7WUFDakMsTUFBTSxFQUFFLGdCQUFnQjtTQUN6QjtRQUNELFFBQVEsRUFBRSxHQUFHLENBQUMsUUFBUTtLQUNBLENBQUE7SUFFeEIsSUFBSSxDQUFDO1FBQ0gsb0VBQW9FO1FBQ3BFLG9GQUFvRjtRQUNwRixNQUFNLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsR0FBRyxNQUFNLFdBQVcsQ0FBQyxZQUFZLENBQUMsV0FBVyxFQUFFLFFBQVEsQ0FBQyxDQUFBO1FBRTFGLGtFQUFrRTtRQUNsRSxJQUFJLFFBQVEsRUFBRSxDQUFDO1lBQ2IsT0FBTyxHQUFHLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUE7UUFDM0MsQ0FBQztRQUVELG9FQUFvRTtRQUNwRSwwQ0FBMEM7UUFDMUMsaUVBQWlFO1FBQ2pFLE9BQU8sR0FBRyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUM7WUFDMUIsT0FBTyxFQUFFLDBEQUEwRDtTQUNwRSxDQUFDLENBQUE7SUFDSixDQUFDO0lBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztRQUNmLHFFQUFxRTtRQUNyRSw4QkFBOEI7UUFDOUIsT0FBTyxDQUFDLEtBQUssQ0FBQyxrREFBa0QsRUFBRSxLQUFLLENBQUMsQ0FBQTtRQUV4RSxPQUFPLEdBQUcsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDO1lBQzFCLE9BQU8sRUFBRSwwREFBMEQ7U0FDcEUsQ0FBQyxDQUFBO0lBQ0osQ0FBQztBQUNILENBQUMsQ0FBQTtBQXhEWSxRQUFBLElBQUksUUF3RGhCIn0=
@@ -0,0 +1,71 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.POST = void 0;
4
+ const utils_1 = require("@medusajs/framework/utils");
5
+ /**
6
+ * Password reset completion endpoint
7
+ *
8
+ * This endpoint uses Medusa's built-in AUTH module to complete password reset.
9
+ * The AUTH module will:
10
+ * 1. Validate the reset token (from Authorization header or body)
11
+ * 2. Verify the token is valid and not expired
12
+ * 3. Hash the new password
13
+ * 4. Update the password in provider_identity
14
+ */
15
+ const POST = async (req, res) => {
16
+ const { email, password, token } = req.body;
17
+ // Get token from body or Authorization header
18
+ const resetToken = token || req.headers.authorization?.replace("Bearer ", "");
19
+ if (!resetToken) {
20
+ throw new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, "Reset token is required. Provide it in the 'token' field or 'Authorization: Bearer {token}' header");
21
+ }
22
+ if (!email || typeof email !== "string" || !email.trim()) {
23
+ throw new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, "Email is required");
24
+ }
25
+ if (!password || typeof password !== "string" || password.length < 8) {
26
+ throw new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, "Password is required and must be at least 8 characters");
27
+ }
28
+ // Get AUTH service
29
+ const authService = req.scope.resolve(utils_1.Modules.AUTH);
30
+ // Prepare authentication input for password reset completion
31
+ // Convert headers to Record<string, string> format (handle array values like set-cookie)
32
+ const headers = {};
33
+ for (const [key, value] of Object.entries(req.headers)) {
34
+ headers[key] = Array.isArray(value) ? value.join(", ") : (value || "");
35
+ }
36
+ headers.authorization = `Bearer ${resetToken}`;
37
+ const authData = {
38
+ url: req.url,
39
+ headers,
40
+ query: req.query,
41
+ body: {
42
+ email: email.toLowerCase().trim(),
43
+ password,
44
+ action: "update-password",
45
+ },
46
+ protocol: req.protocol,
47
+ };
48
+ try {
49
+ // Call AUTH module's authenticate method with update-password action
50
+ // The AUTH module will validate the token and update the password
51
+ const { success, error, authIdentity } = await authService.authenticate("emailpass", authData);
52
+ if (!success || !authIdentity) {
53
+ throw new utils_1.MedusaError(utils_1.MedusaError.Types.UNAUTHORIZED, error || "Failed to reset password. Invalid or expired token.");
54
+ }
55
+ return res.status(200).json({
56
+ message: "Password reset successfully",
57
+ success: true,
58
+ });
59
+ }
60
+ catch (error) {
61
+ // Re-throw MedusaError as-is
62
+ if (error instanceof utils_1.MedusaError) {
63
+ throw error;
64
+ }
65
+ // Handle unexpected errors
66
+ console.error("[reset-password-complete] Unexpected error:", error);
67
+ throw new utils_1.MedusaError(utils_1.MedusaError.Types.UNEXPECTED_STATE, `Failed to reset password: ${error instanceof Error ? error.message : String(error)}`);
68
+ }
69
+ };
70
+ exports.POST = POST;
71
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL2F1dGgvY3VzdG9tZXIvZW1haWxwYXNzL3VwZGF0ZS9yb3V0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFDQSxxREFBZ0U7QUFHaEU7Ozs7Ozs7OztHQVNHO0FBQ0ksTUFBTSxJQUFJLEdBQUcsS0FBSyxFQUFFLEdBQWtCLEVBQUUsR0FBbUIsRUFBRSxFQUFFO0lBQ3BFLE1BQU0sRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxHQUFHLEdBQUcsQ0FBQyxJQUl0QyxDQUFBO0lBRUQsOENBQThDO0lBQzlDLE1BQU0sVUFBVSxHQUFHLEtBQUssSUFBSSxHQUFHLENBQUMsT0FBTyxDQUFDLGFBQWEsRUFBRSxPQUFPLENBQUMsU0FBUyxFQUFFLEVBQUUsQ0FBQyxDQUFBO0lBRTdFLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUNoQixNQUFNLElBQUksbUJBQVcsQ0FDbkIsbUJBQVcsQ0FBQyxLQUFLLENBQUMsWUFBWSxFQUM5QixvR0FBb0csQ0FDckcsQ0FBQTtJQUNILENBQUM7SUFFRCxJQUFJLENBQUMsS0FBSyxJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDO1FBQ3pELE1BQU0sSUFBSSxtQkFBVyxDQUNuQixtQkFBVyxDQUFDLEtBQUssQ0FBQyxZQUFZLEVBQzlCLG1CQUFtQixDQUNwQixDQUFBO0lBQ0gsQ0FBQztJQUVELElBQUksQ0FBQyxRQUFRLElBQUksT0FBTyxRQUFRLEtBQUssUUFBUSxJQUFJLFFBQVEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7UUFDckUsTUFBTSxJQUFJLG1CQUFXLENBQ25CLG1CQUFXLENBQUMsS0FBSyxDQUFDLFlBQVksRUFDOUIsd0RBQXdELENBQ3pELENBQUE7SUFDSCxDQUFDO0lBRUQsbUJBQW1CO0lBQ25CLE1BQU0sV0FBVyxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLGVBQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQTtJQUVuRCw2REFBNkQ7SUFDN0QseUZBQXlGO0lBQ3pGLE1BQU0sT0FBTyxHQUEyQixFQUFFLENBQUE7SUFDMUMsS0FBSyxNQUFNLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7UUFDdkQsT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxJQUFJLEVBQUUsQ0FBQyxDQUFBO0lBQ3hFLENBQUM7SUFDRCxPQUFPLENBQUMsYUFBYSxHQUFHLFVBQVUsVUFBVSxFQUFFLENBQUE7SUFFOUMsTUFBTSxRQUFRLEdBQUc7UUFDZixHQUFHLEVBQUUsR0FBRyxDQUFDLEdBQUc7UUFDWixPQUFPO1FBQ1AsS0FBSyxFQUFFLEdBQUcsQ0FBQyxLQUFLO1FBQ2hCLElBQUksRUFBRTtZQUNKLEtBQUssRUFBRSxLQUFLLENBQUMsV0FBVyxFQUFFLENBQUMsSUFBSSxFQUFFO1lBQ2pDLFFBQVE7WUFDUixNQUFNLEVBQUUsaUJBQWlCO1NBQzFCO1FBQ0QsUUFBUSxFQUFFLEdBQUcsQ0FBQyxRQUFRO0tBQ0EsQ0FBQTtJQUV4QixJQUFJLENBQUM7UUFDSCxxRUFBcUU7UUFDckUsa0VBQWtFO1FBQ2xFLE1BQU0sRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLFlBQVksRUFBRSxHQUFHLE1BQU0sV0FBVyxDQUFDLFlBQVksQ0FBQyxXQUFXLEVBQUUsUUFBUSxDQUFDLENBQUE7UUFFOUYsSUFBSSxDQUFDLE9BQU8sSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1lBQzlCLE1BQU0sSUFBSSxtQkFBVyxDQUNuQixtQkFBVyxDQUFDLEtBQUssQ0FBQyxZQUFZLEVBQzlCLEtBQUssSUFBSSxxREFBcUQsQ0FDL0QsQ0FBQTtRQUNILENBQUM7UUFFRCxPQUFPLEdBQUcsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDO1lBQzFCLE9BQU8sRUFBRSw2QkFBNkI7WUFDdEMsT0FBTyxFQUFFLElBQUk7U0FDZCxDQUFDLENBQUE7SUFDSixDQUFDO0lBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztRQUNmLDZCQUE2QjtRQUM3QixJQUFJLEtBQUssWUFBWSxtQkFBVyxFQUFFLENBQUM7WUFDakMsTUFBTSxLQUFLLENBQUE7UUFDYixDQUFDO1FBRUQsMkJBQTJCO1FBQzNCLE9BQU8sQ0FBQyxLQUFLLENBQUMsNkNBQTZDLEVBQUUsS0FBSyxDQUFDLENBQUE7UUFDbkUsTUFBTSxJQUFJLG1CQUFXLENBQ25CLG1CQUFXLENBQUMsS0FBSyxDQUFDLGdCQUFnQixFQUNsQyw2QkFBNkIsS0FBSyxZQUFZLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQ3RGLENBQUE7SUFDSCxDQUFDO0FBQ0gsQ0FBQyxDQUFBO0FBbkZZLFFBQUEsSUFBSSxRQW1GaEIifQ==
@@ -0,0 +1,52 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.POST = void 0;
7
+ const utils_1 = require("@medusajs/framework/utils");
8
+ const change_password_1 = __importDefault(require("../../../../workflows/change-password"));
9
+ const POST = async (req, res) => {
10
+ // Get customer from auth context
11
+ const authContext = req.auth_context;
12
+ const customerId = authContext?.actor_id || authContext?.user_id;
13
+ if (!customerId) {
14
+ throw new utils_1.MedusaError(utils_1.MedusaError.Types.UNAUTHORIZED, "Authentication required");
15
+ }
16
+ const { old_password, new_password, confirm_password } = req.body;
17
+ if (!old_password) {
18
+ throw new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, "Current password is required");
19
+ }
20
+ if (!new_password) {
21
+ throw new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, "New password is required");
22
+ }
23
+ if (!confirm_password) {
24
+ throw new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, "Confirm password is required");
25
+ }
26
+ try {
27
+ // Execute change password workflow (validates password, verifies old password, and updates password)
28
+ const { result } = await (0, change_password_1.default)(req.scope).run({
29
+ input: {
30
+ customer_id: customerId,
31
+ old_password,
32
+ new_password,
33
+ confirm_password,
34
+ },
35
+ });
36
+ return res.status(200).json({
37
+ message: "Password changed successfully",
38
+ customer_id: result.customer_id,
39
+ });
40
+ }
41
+ catch (error) {
42
+ // Re-throw MedusaError as-is
43
+ if (error instanceof utils_1.MedusaError) {
44
+ throw error;
45
+ }
46
+ // Handle unexpected errors
47
+ console.error("[change-password] Unexpected error:", error);
48
+ throw new utils_1.MedusaError(utils_1.MedusaError.Types.UNEXPECTED_STATE, "Failed to change password");
49
+ }
50
+ };
51
+ exports.POST = POST;
52
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL3N0b3JlL2N1c3RvbWVycy9jaGFuZ2UtcGFzc3dvcmQvcm91dGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQ0EscURBQXVEO0FBQ3ZELDRGQUEwRTtBQUVuRSxNQUFNLElBQUksR0FBRyxLQUFLLEVBQUUsR0FBa0IsRUFBRSxHQUFtQixFQUFFLEVBQUU7SUFDcEUsaUNBQWlDO0lBQ2pDLE1BQU0sV0FBVyxHQUFJLEdBQWtFLENBQUMsWUFBWSxDQUFBO0lBQ3BHLE1BQU0sVUFBVSxHQUFHLFdBQVcsRUFBRSxRQUFRLElBQUksV0FBVyxFQUFFLE9BQU8sQ0FBQTtJQUVoRSxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7UUFDaEIsTUFBTSxJQUFJLG1CQUFXLENBQ25CLG1CQUFXLENBQUMsS0FBSyxDQUFDLFlBQVksRUFDOUIseUJBQXlCLENBQzFCLENBQUE7SUFDSCxDQUFDO0lBRUQsTUFBTSxFQUFFLFlBQVksRUFBRSxZQUFZLEVBQUUsZ0JBQWdCLEVBQUUsR0FBRyxHQUFHLENBQUMsSUFJNUQsQ0FBQTtJQUVELElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUNsQixNQUFNLElBQUksbUJBQVcsQ0FDbkIsbUJBQVcsQ0FBQyxLQUFLLENBQUMsWUFBWSxFQUM5Qiw4QkFBOEIsQ0FDL0IsQ0FBQTtJQUNILENBQUM7SUFFRCxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDbEIsTUFBTSxJQUFJLG1CQUFXLENBQ25CLG1CQUFXLENBQUMsS0FBSyxDQUFDLFlBQVksRUFDOUIsMEJBQTBCLENBQzNCLENBQUE7SUFDSCxDQUFDO0lBRUQsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7UUFDdEIsTUFBTSxJQUFJLG1CQUFXLENBQ25CLG1CQUFXLENBQUMsS0FBSyxDQUFDLFlBQVksRUFDOUIsOEJBQThCLENBQy9CLENBQUE7SUFDSCxDQUFDO0lBRUQsSUFBSSxDQUFDO1FBQ0gscUdBQXFHO1FBQ3JHLE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxNQUFNLElBQUEseUJBQXNCLEVBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsQ0FBQztZQUM3RCxLQUFLLEVBQUU7Z0JBQ0wsV0FBVyxFQUFFLFVBQVU7Z0JBQ3ZCLFlBQVk7Z0JBQ1osWUFBWTtnQkFDWixnQkFBZ0I7YUFDakI7U0FDRixDQUFDLENBQUE7UUFFRixPQUFPLEdBQUcsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDO1lBQzFCLE9BQU8sRUFBRSwrQkFBK0I7WUFDeEMsV0FBVyxFQUFFLE1BQU0sQ0FBQyxXQUFXO1NBQ2hDLENBQUMsQ0FBQTtJQUNKLENBQUM7SUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1FBQ2YsNkJBQTZCO1FBQzdCLElBQUksS0FBSyxZQUFZLG1CQUFXLEVBQUUsQ0FBQztZQUNqQyxNQUFNLEtBQUssQ0FBQTtRQUNiLENBQUM7UUFFRCwyQkFBMkI7UUFDM0IsT0FBTyxDQUFDLEtBQUssQ0FBQyxxQ0FBcUMsRUFBRSxLQUFLLENBQUMsQ0FBQTtRQUMzRCxNQUFNLElBQUksbUJBQVcsQ0FDbkIsbUJBQVcsQ0FBQyxLQUFLLENBQUMsZ0JBQWdCLEVBQ2xDLDJCQUEyQixDQUM1QixDQUFBO0lBQ0gsQ0FBQztBQUNILENBQUMsQ0FBQTtBQW5FWSxRQUFBLElBQUksUUFtRWhCIn0=
@@ -9,7 +9,6 @@ const otp_verification_1 = require("../../../../../modules/otp-verification");
9
9
  const otp_verification_2 = require("../../../../../modules/otp-verification/models/otp-verification");
10
10
  const verify_email_1 = __importDefault(require("../../../../../workflows/verify-email"));
11
11
  const verify_phone_1 = __importDefault(require("../../../../../workflows/verify-phone"));
12
- const generate_password_reset_token_1 = __importDefault(require("../../../../../workflows/generate-password-reset-token"));
13
12
  const POST = async (req, res) => {
14
13
  const { token, code } = req.body;
15
14
  if (!token) {
@@ -54,22 +53,10 @@ const POST = async (req, res) => {
54
53
  phone_verified: workflowResult.phone_verified,
55
54
  };
56
55
  }
57
- else if (verifyResult.type === otp_verification_2.OtpPurpose.FORGOT_PASSWORD) {
58
- const { result: workflowResult } = await (0, generate_password_reset_token_1.default)(req.scope).run({
59
- input: {
60
- customer_id: verifyResult.customer_id,
61
- },
62
- });
63
- result = {
64
- verified: true,
65
- reset_token: workflowResult.token,
66
- expires_in: workflowResult.expires_in,
67
- };
68
- }
69
56
  else {
70
57
  throw new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, "Invalid verification type");
71
58
  }
72
59
  return res.status(200).json(result);
73
60
  };
74
61
  exports.POST = POST;
75
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL3N0b3JlL2N1c3RvbWVycy9vdHAvdmVyaWZ5L3JvdXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUNBLHFEQUdrQztBQUNsQyw4RUFBaUY7QUFFakYsc0dBQTRGO0FBQzVGLHlGQUF1RTtBQUN2RSx5RkFBdUU7QUFDdkUsMkhBQXVHO0FBRWhHLE1BQU0sSUFBSSxHQUFHLEtBQUssRUFBRSxHQUFrQixFQUFFLEdBQW1CLEVBQUUsRUFBRTtJQUNwRSxNQUFNLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxHQUFHLEdBQUcsQ0FBQyxJQUczQixDQUFBO0lBRUQsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ1gsTUFBTSxJQUFJLG1CQUFXLENBQ25CLG1CQUFXLENBQUMsS0FBSyxDQUFDLFlBQVksRUFDOUIsbUJBQW1CLENBQ3BCLENBQUE7SUFDSCxDQUFDO0lBRUQsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ1YsTUFBTSxJQUFJLG1CQUFXLENBQ25CLG1CQUFXLENBQUMsS0FBSyxDQUFDLFlBQVksRUFDOUIsc0JBQXNCLENBQ3ZCLENBQUE7SUFDSCxDQUFDO0lBRUQsOEJBQThCO0lBQzlCLE1BQU0sVUFBVSxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUNsQywwQ0FBdUIsQ0FDRSxDQUFBO0lBRTNCLDZCQUE2QjtJQUM3QixNQUFNLE1BQU0sR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxpQ0FBeUIsQ0FBQyxhQUFhLENBQUMsQ0FBQTtJQUN6RSxNQUFNLFNBQVMsR0FBSSxNQUFNLEVBQUUsYUFBcUIsRUFBRSxJQUFJLEVBQUUsU0FBUyxJQUFJLGFBQWEsQ0FBQTtJQUVsRixhQUFhO0lBQ2IsTUFBTSxZQUFZLEdBQUcsTUFBTSxVQUFVLENBQUMsU0FBUyxDQUM3QztRQUNFLEtBQUs7UUFDTCxJQUFJO0tBQ0wsRUFDRCxTQUFTLENBQ1YsQ0FBQTtJQUVELGlDQUFpQztJQUNqQyxJQUFJLE1BQVcsQ0FBQTtJQUVmLElBQUksWUFBWSxDQUFDLElBQUksS0FBSyw2QkFBVSxDQUFDLGtCQUFrQixFQUFFLENBQUM7UUFDeEQsTUFBTSxFQUFFLE1BQU0sRUFBRSxjQUFjLEVBQUUsR0FBRyxNQUFNLElBQUEsc0JBQW1CLEVBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsQ0FBQztZQUMxRSxLQUFLLEVBQUU7Z0JBQ0wsV0FBVyxFQUFFLFlBQVksQ0FBQyxXQUFXO2FBQ3RDO1NBQ0YsQ0FBQyxDQUFBO1FBQ0YsTUFBTSxHQUFHO1lBQ1AsUUFBUSxFQUFFLElBQUk7WUFDZCxRQUFRLEVBQUUsY0FBYyxDQUFDLFFBQVE7WUFDakMsY0FBYyxFQUFFLGNBQWMsQ0FBQyxjQUFjO1NBQzlDLENBQUE7SUFDSCxDQUFDO1NBQU0sSUFBSSxZQUFZLENBQUMsSUFBSSxLQUFLLDZCQUFVLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztRQUMvRCxNQUFNLEVBQUUsTUFBTSxFQUFFLGNBQWMsRUFBRSxHQUFHLE1BQU0sSUFBQSxzQkFBbUIsRUFBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBRyxDQUFDO1lBQzFFLEtBQUssRUFBRTtnQkFDTCxXQUFXLEVBQUUsWUFBWSxDQUFDLFdBQVc7YUFDdEM7U0FDRixDQUFDLENBQUE7UUFDRixNQUFNLEdBQUc7WUFDUCxRQUFRLEVBQUUsSUFBSTtZQUNkLFFBQVEsRUFBRSxjQUFjLENBQUMsUUFBUTtZQUNqQyxjQUFjLEVBQUUsY0FBYyxDQUFDLGNBQWM7U0FDOUMsQ0FBQTtJQUNILENBQUM7U0FBTSxJQUFJLFlBQVksQ0FBQyxJQUFJLEtBQUssNkJBQVUsQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUM1RCxNQUFNLEVBQUUsTUFBTSxFQUFFLGNBQWMsRUFBRSxHQUFHLE1BQU0sSUFBQSx1Q0FBa0MsRUFBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBRyxDQUFDO1lBQ3pGLEtBQUssRUFBRTtnQkFDTCxXQUFXLEVBQUUsWUFBWSxDQUFDLFdBQVc7YUFDdEM7U0FDRixDQUFDLENBQUE7UUFDRixNQUFNLEdBQUc7WUFDUCxRQUFRLEVBQUUsSUFBSTtZQUNkLFdBQVcsRUFBRSxjQUFjLENBQUMsS0FBSztZQUNqQyxVQUFVLEVBQUUsY0FBYyxDQUFDLFVBQVU7U0FDdEMsQ0FBQTtJQUNILENBQUM7U0FBTSxDQUFDO1FBQ04sTUFBTSxJQUFJLG1CQUFXLENBQ25CLG1CQUFXLENBQUMsS0FBSyxDQUFDLFlBQVksRUFDOUIsMkJBQTJCLENBQzVCLENBQUE7SUFDSCxDQUFDO0lBRUQsT0FBTyxHQUFHLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQTtBQUNyQyxDQUFDLENBQUE7QUFsRlksUUFBQSxJQUFJLFFBa0ZoQiJ9
62
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL3N0b3JlL2N1c3RvbWVycy9vdHAvdmVyaWZ5L3JvdXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUNBLHFEQUdrQztBQUNsQyw4RUFBaUY7QUFFakYsc0dBQTRGO0FBQzVGLHlGQUF1RTtBQUN2RSx5RkFBdUU7QUFFaEUsTUFBTSxJQUFJLEdBQUcsS0FBSyxFQUFFLEdBQWtCLEVBQUUsR0FBbUIsRUFBRSxFQUFFO0lBQ3BFLE1BQU0sRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLEdBQUcsR0FBRyxDQUFDLElBRzNCLENBQUE7SUFFRCxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDWCxNQUFNLElBQUksbUJBQVcsQ0FDbkIsbUJBQVcsQ0FBQyxLQUFLLENBQUMsWUFBWSxFQUM5QixtQkFBbUIsQ0FDcEIsQ0FBQTtJQUNILENBQUM7SUFFRCxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDVixNQUFNLElBQUksbUJBQVcsQ0FDbkIsbUJBQVcsQ0FBQyxLQUFLLENBQUMsWUFBWSxFQUM5QixzQkFBc0IsQ0FDdkIsQ0FBQTtJQUNILENBQUM7SUFFRCw4QkFBOEI7SUFDOUIsTUFBTSxVQUFVLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQ2xDLDBDQUF1QixDQUNFLENBQUE7SUFFM0IsNkJBQTZCO0lBQzdCLE1BQU0sTUFBTSxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLGlDQUF5QixDQUFDLGFBQWEsQ0FBQyxDQUFBO0lBQ3pFLE1BQU0sU0FBUyxHQUFJLE1BQU0sRUFBRSxhQUFxQixFQUFFLElBQUksRUFBRSxTQUFTLElBQUksYUFBYSxDQUFBO0lBRWxGLGFBQWE7SUFDYixNQUFNLFlBQVksR0FBRyxNQUFNLFVBQVUsQ0FBQyxTQUFTLENBQzdDO1FBQ0UsS0FBSztRQUNMLElBQUk7S0FDTCxFQUNELFNBQVMsQ0FDVixDQUFBO0lBRUQsaUNBQWlDO0lBQ2pDLElBQUksTUFBVyxDQUFBO0lBRWYsSUFBSSxZQUFZLENBQUMsSUFBSSxLQUFLLDZCQUFVLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztRQUN4RCxNQUFNLEVBQUUsTUFBTSxFQUFFLGNBQWMsRUFBRSxHQUFHLE1BQU0sSUFBQSxzQkFBbUIsRUFBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBRyxDQUFDO1lBQzFFLEtBQUssRUFBRTtnQkFDTCxXQUFXLEVBQUUsWUFBWSxDQUFDLFdBQVc7YUFDdEM7U0FDRixDQUFDLENBQUE7UUFDRixNQUFNLEdBQUc7WUFDUCxRQUFRLEVBQUUsSUFBSTtZQUNkLFFBQVEsRUFBRSxjQUFjLENBQUMsUUFBUTtZQUNqQyxjQUFjLEVBQUUsY0FBYyxDQUFDLGNBQWM7U0FDOUMsQ0FBQTtJQUNILENBQUM7U0FBTSxJQUFJLFlBQVksQ0FBQyxJQUFJLEtBQUssNkJBQVUsQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1FBQy9ELE1BQU0sRUFBRSxNQUFNLEVBQUUsY0FBYyxFQUFFLEdBQUcsTUFBTSxJQUFBLHNCQUFtQixFQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLENBQUM7WUFDMUUsS0FBSyxFQUFFO2dCQUNMLFdBQVcsRUFBRSxZQUFZLENBQUMsV0FBVzthQUN0QztTQUNGLENBQUMsQ0FBQTtRQUNGLE1BQU0sR0FBRztZQUNQLFFBQVEsRUFBRSxJQUFJO1lBQ2QsUUFBUSxFQUFFLGNBQWMsQ0FBQyxRQUFRO1lBQ2pDLGNBQWMsRUFBRSxjQUFjLENBQUMsY0FBYztTQUM5QyxDQUFBO0lBQ0gsQ0FBQztTQUFNLENBQUM7UUFDTixNQUFNLElBQUksbUJBQVcsQ0FDbkIsbUJBQVcsQ0FBQyxLQUFLLENBQUMsWUFBWSxFQUM5QiwyQkFBMkIsQ0FDNUIsQ0FBQTtJQUNILENBQUM7SUFFRCxPQUFPLEdBQUcsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFBO0FBQ3JDLENBQUMsQ0FBQTtBQXZFWSxRQUFBLElBQUksUUF1RWhCIn0=
@@ -0,0 +1,36 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getClientRequest = exports.buildHeaders = exports.normalizeBaseUrl = void 0;
4
+ const normalizeBaseUrl = (baseUrl) => {
5
+ if (!baseUrl) {
6
+ return "";
7
+ }
8
+ return baseUrl.endsWith("/") ? baseUrl.slice(0, -1) : baseUrl;
9
+ };
10
+ exports.normalizeBaseUrl = normalizeBaseUrl;
11
+ const buildHeaders = (options) => {
12
+ const headers = {
13
+ "Content-Type": "application/json",
14
+ ...(options.headers ?? {}),
15
+ };
16
+ const hasPublishableHeader = Object.keys(headers).some((key) => key.toLowerCase() === "x-publishable-api-key");
17
+ if (options.publishableApiKey && !hasPublishableHeader) {
18
+ headers["x-publishable-api-key"] = options.publishableApiKey;
19
+ }
20
+ return headers;
21
+ };
22
+ exports.buildHeaders = buildHeaders;
23
+ const getClientRequest = (client) => {
24
+ if (!client) {
25
+ return undefined;
26
+ }
27
+ if ("request" in client && typeof client.request === "function") {
28
+ return client.request.bind(client);
29
+ }
30
+ if ("client" in client && typeof client.client?.request === "function") {
31
+ return client.client.request.bind(client.client);
32
+ }
33
+ return undefined;
34
+ };
35
+ exports.getClientRequest = getClientRequest;
36
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1jbGllbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvaGVscGVycy9iYXNlLWNsaWVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFvQ08sTUFBTSxnQkFBZ0IsR0FBRyxDQUFDLE9BQWdCLEVBQUUsRUFBRTtJQUNuRCxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDYixPQUFPLEVBQUUsQ0FBQTtJQUNYLENBQUM7SUFDRCxPQUFPLE9BQU8sQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQTtBQUMvRCxDQUFDLENBQUE7QUFMWSxRQUFBLGdCQUFnQixvQkFLNUI7QUFFTSxNQUFNLFlBQVksR0FBRyxDQUFDLE9BQStCLEVBQUUsRUFBRTtJQUM5RCxNQUFNLE9BQU8sR0FBMkI7UUFDdEMsY0FBYyxFQUFFLGtCQUFrQjtRQUNsQyxHQUFHLENBQUMsT0FBTyxDQUFDLE9BQU8sSUFBSSxFQUFFLENBQUM7S0FDM0IsQ0FBQTtJQUVELE1BQU0sb0JBQW9CLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQ3BELENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsV0FBVyxFQUFFLEtBQUssdUJBQXVCLENBQ3ZELENBQUE7SUFFRCxJQUFJLE9BQU8sQ0FBQyxpQkFBaUIsSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUM7UUFDdkQsT0FBTyxDQUFDLHVCQUF1QixDQUFDLEdBQUcsT0FBTyxDQUFDLGlCQUFpQixDQUFBO0lBQzlELENBQUM7SUFFRCxPQUFPLE9BQU8sQ0FBQTtBQUNoQixDQUFDLENBQUE7QUFmWSxRQUFBLFlBQVksZ0JBZXhCO0FBRU0sTUFBTSxnQkFBZ0IsR0FBRyxDQUFDLE1BQXlCLEVBQUUsRUFBRTtJQUM1RCxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDWixPQUFPLFNBQVMsQ0FBQTtJQUNsQixDQUFDO0lBRUQsSUFBSSxTQUFTLElBQUksTUFBTSxJQUFJLE9BQU8sTUFBTSxDQUFDLE9BQU8sS0FBSyxVQUFVLEVBQUUsQ0FBQztRQUNoRSxPQUFPLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFBO0lBQ3BDLENBQUM7SUFFRCxJQUFJLFFBQVEsSUFBSSxNQUFNLElBQUksT0FBTyxNQUFNLENBQUMsTUFBTSxFQUFFLE9BQU8sS0FBSyxVQUFVLEVBQUUsQ0FBQztRQUN2RSxPQUFPLE1BQU0sQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUE7SUFDbEQsQ0FBQztJQUVELE9BQU8sU0FBUyxDQUFBO0FBQ2xCLENBQUMsQ0FBQTtBQWRZLFFBQUEsZ0JBQWdCLG9CQWM1QiJ9
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createCompletePasswordReset = exports.completePasswordReset = exports.createRequestPasswordReset = exports.requestPasswordReset = exports.getClientRequest = exports.buildHeaders = exports.normalizeBaseUrl = void 0;
4
+ // Base client utilities
5
+ var base_client_1 = require("./base-client");
6
+ Object.defineProperty(exports, "normalizeBaseUrl", { enumerable: true, get: function () { return base_client_1.normalizeBaseUrl; } });
7
+ Object.defineProperty(exports, "buildHeaders", { enumerable: true, get: function () { return base_client_1.buildHeaders; } });
8
+ Object.defineProperty(exports, "getClientRequest", { enumerable: true, get: function () { return base_client_1.getClientRequest; } });
9
+ // Password reset helpers
10
+ var reset_password_1 = require("./reset-password");
11
+ Object.defineProperty(exports, "requestPasswordReset", { enumerable: true, get: function () { return reset_password_1.requestPasswordReset; } });
12
+ Object.defineProperty(exports, "createRequestPasswordReset", { enumerable: true, get: function () { return reset_password_1.createRequestPasswordReset; } });
13
+ var reset_password_2 = require("./reset-password");
14
+ Object.defineProperty(exports, "completePasswordReset", { enumerable: true, get: function () { return reset_password_2.completePasswordReset; } });
15
+ Object.defineProperty(exports, "createCompletePasswordReset", { enumerable: true, get: function () { return reset_password_2.createCompletePasswordReset; } });
16
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvaGVscGVycy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSx3QkFBd0I7QUFDeEIsNkNBTXNCO0FBSHBCLCtHQUFBLGdCQUFnQixPQUFBO0FBQ2hCLDJHQUFBLFlBQVksT0FBQTtBQUNaLCtHQUFBLGdCQUFnQixPQUFBO0FBR2xCLHlCQUF5QjtBQUN6QixtREFNeUI7QUFGdkIsc0hBQUEsb0JBQW9CLE9BQUE7QUFDcEIsNEhBQUEsMEJBQTBCLE9BQUE7QUFHNUIsbURBTXlCO0FBRnZCLHVIQUFBLHFCQUFxQixPQUFBO0FBQ3JCLDZIQUFBLDJCQUEyQixPQUFBIn0=
@@ -0,0 +1,193 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createCompletePasswordReset = exports.createRequestPasswordReset = exports.completePasswordReset = exports.requestPasswordReset = void 0;
4
+ const base_client_1 = require("./base-client");
5
+ const RESET_PASSWORD_ENDPOINT = "/store/auth/customer/emailpass/reset-password";
6
+ const COMPLETE_PASSWORD_RESET_ENDPOINT = "/store/auth/customer/emailpass/update";
7
+ const resolveEndpoint = (defaultEndpoint, endpoint) => endpoint?.startsWith("/") ? endpoint : defaultEndpoint;
8
+ /**
9
+ * Request a password reset for a customer
10
+ *
11
+ * This function calls the password reset endpoint which triggers Medusa's built-in
12
+ * password reset flow. The AUTH module will generate a reset token and trigger
13
+ * the `customer.password_reset` event, which sends an email to the customer.
14
+ *
15
+ * @param input - Password reset request input
16
+ * @param options - Transport options (baseUrl, client, publishableApiKey, etc.)
17
+ * @returns Promise resolving to the reset request response
18
+ *
19
+ * @example
20
+ * ```typescript
21
+ * import { requestPasswordReset } from "customer-registration/helpers"
22
+ *
23
+ * // Basic usage
24
+ * const result = await requestPasswordReset(
25
+ * { email: "customer@example.com" },
26
+ * { baseUrl: "https://store.example.com", publishableApiKey: "pk_..." }
27
+ * )
28
+ *
29
+ * // With Medusa SDK client
30
+ * import { sdk } from "@medusajs/js-sdk"
31
+ * const result = await requestPasswordReset(
32
+ * { email: "customer@example.com" },
33
+ * { client: sdk }
34
+ * )
35
+ * ```
36
+ */
37
+ const requestPasswordReset = async (input, options = {}) => {
38
+ const endpoint = resolveEndpoint(RESET_PASSWORD_ENDPOINT, input.endpoint);
39
+ const payload = {
40
+ email: input.email.toLowerCase().trim(),
41
+ };
42
+ const clientRequest = (0, base_client_1.getClientRequest)(options.client);
43
+ if (clientRequest) {
44
+ const headers = (0, base_client_1.buildHeaders)(options);
45
+ const raw = await clientRequest(endpoint, {
46
+ method: "POST",
47
+ body: JSON.stringify(payload),
48
+ headers,
49
+ });
50
+ if (!raw || typeof raw !== "object") {
51
+ throw new Error("Invalid response from password reset endpoint");
52
+ }
53
+ return raw;
54
+ }
55
+ const fetchImpl = options.fetchImpl ?? globalThis.fetch;
56
+ if (!fetchImpl) {
57
+ throw new Error("No fetch implementation available. Provide `fetchImpl` or a Medusa client.");
58
+ }
59
+ const url = `${(0, base_client_1.normalizeBaseUrl)(options.baseUrl)}${endpoint}`;
60
+ const headers = (0, base_client_1.buildHeaders)(options);
61
+ const response = await fetchImpl(url || endpoint, {
62
+ method: "POST",
63
+ headers,
64
+ body: JSON.stringify(payload),
65
+ });
66
+ if (!response.ok) {
67
+ const body = await response.text();
68
+ throw new Error(body || `Failed to request password reset (status ${response.status})`);
69
+ }
70
+ const json = await response.json();
71
+ if (!json || typeof json !== "object") {
72
+ throw new Error("Invalid response format from password reset endpoint");
73
+ }
74
+ return json;
75
+ };
76
+ exports.requestPasswordReset = requestPasswordReset;
77
+ /**
78
+ * Complete a password reset with a new password
79
+ *
80
+ * This function calls the password reset completion endpoint which validates
81
+ * the reset token and updates the customer's password using Medusa's AUTH module.
82
+ *
83
+ * The token can be provided either:
84
+ * - In the `token` field of the input
85
+ * - Via `Authorization: Bearer {token}` header in options.headers
86
+ *
87
+ * @param input - Password reset completion input
88
+ * @param options - Transport options (baseUrl, client, publishableApiKey, etc.)
89
+ * @returns Promise resolving to the reset completion response
90
+ *
91
+ * @example
92
+ * ```typescript
93
+ * import { completePasswordReset } from "customer-registration/helpers"
94
+ *
95
+ * // Basic usage with token in input
96
+ * const result = await completePasswordReset(
97
+ * {
98
+ * email: "customer@example.com",
99
+ * password: "NewSecurePassword123!",
100
+ * token: "reset_token_from_email"
101
+ * },
102
+ * { baseUrl: "https://store.example.com", publishableApiKey: "pk_..." }
103
+ * )
104
+ *
105
+ * // With token in Authorization header
106
+ * const result = await completePasswordReset(
107
+ * {
108
+ * email: "customer@example.com",
109
+ * password: "NewSecurePassword123!",
110
+ * token: "reset_token_from_email"
111
+ * },
112
+ * {
113
+ * baseUrl: "https://store.example.com",
114
+ * publishableApiKey: "pk_...",
115
+ * headers: {
116
+ * "Authorization": "Bearer reset_token_from_email"
117
+ * }
118
+ * }
119
+ * )
120
+ *
121
+ * // With Medusa SDK client
122
+ * import { sdk } from "@medusajs/js-sdk"
123
+ * const result = await completePasswordReset(
124
+ * {
125
+ * email: "customer@example.com",
126
+ * password: "NewSecurePassword123!",
127
+ * token: "reset_token_from_email"
128
+ * },
129
+ * { client: sdk }
130
+ * )
131
+ * ```
132
+ */
133
+ const completePasswordReset = async (input, options = {}) => {
134
+ const endpoint = resolveEndpoint(COMPLETE_PASSWORD_RESET_ENDPOINT, input.endpoint);
135
+ const payload = {
136
+ email: input.email.toLowerCase().trim(),
137
+ password: input.password,
138
+ token: input.token,
139
+ };
140
+ const clientRequest = (0, base_client_1.getClientRequest)(options.client);
141
+ if (clientRequest) {
142
+ const headers = (0, base_client_1.buildHeaders)(options);
143
+ // Add Authorization header if token is provided and not already in headers
144
+ if (input.token && !headers.authorization) {
145
+ headers.authorization = `Bearer ${input.token}`;
146
+ }
147
+ const raw = await clientRequest(endpoint, {
148
+ method: "POST",
149
+ body: JSON.stringify(payload),
150
+ headers,
151
+ });
152
+ if (!raw || typeof raw !== "object" || !("success" in raw)) {
153
+ throw new Error("Invalid response from password reset completion endpoint");
154
+ }
155
+ return raw;
156
+ }
157
+ const fetchImpl = options.fetchImpl ?? globalThis.fetch;
158
+ if (!fetchImpl) {
159
+ throw new Error("No fetch implementation available. Provide `fetchImpl` or a Medusa client.");
160
+ }
161
+ const url = `${(0, base_client_1.normalizeBaseUrl)(options.baseUrl)}${endpoint}`;
162
+ const headers = (0, base_client_1.buildHeaders)(options);
163
+ // Add Authorization header if token is provided and not already in headers
164
+ if (input.token && !headers.authorization) {
165
+ headers.authorization = `Bearer ${input.token}`;
166
+ }
167
+ const response = await fetchImpl(url || endpoint, {
168
+ method: "POST",
169
+ headers,
170
+ body: JSON.stringify(payload),
171
+ });
172
+ if (!response.ok) {
173
+ const body = await response.text();
174
+ throw new Error(body || `Failed to complete password reset (status ${response.status})`);
175
+ }
176
+ const json = await response.json();
177
+ if (!json || typeof json !== "object" || !("success" in json)) {
178
+ throw new Error("Invalid response format from password reset completion endpoint");
179
+ }
180
+ return json;
181
+ };
182
+ exports.completePasswordReset = completePasswordReset;
183
+ /**
184
+ * Factory creator for preconfigured password reset request helper
185
+ */
186
+ const createRequestPasswordReset = (options = {}) => (input) => (0, exports.requestPasswordReset)(input, options);
187
+ exports.createRequestPasswordReset = createRequestPasswordReset;
188
+ /**
189
+ * Factory creator for preconfigured password reset completion helper
190
+ */
191
+ const createCompletePasswordReset = (options = {}) => (input) => (0, exports.completePasswordReset)(input, options);
192
+ exports.createCompletePasswordReset = createCompletePasswordReset;
193
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzZXQtcGFzc3dvcmQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvaGVscGVycy9yZXNldC1wYXNzd29yZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSwrQ0FLc0I7QUFFdEIsTUFBTSx1QkFBdUIsR0FBRywrQ0FBK0MsQ0FBQTtBQUMvRSxNQUFNLGdDQUFnQyxHQUFHLHVDQUF1QyxDQUFBO0FBRWhGLE1BQU0sZUFBZSxHQUFHLENBQUMsZUFBdUIsRUFBRSxRQUFpQixFQUFFLEVBQUUsQ0FDckUsUUFBUSxFQUFFLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxlQUFlLENBQUE7QUFtQ3hEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBNEJHO0FBQ0ksTUFBTSxvQkFBb0IsR0FBRyxLQUFLLEVBQ3ZDLEtBQWdDLEVBQ2hDLFVBQXVDLEVBQUUsRUFDRixFQUFFO0lBQ3pDLE1BQU0sUUFBUSxHQUFHLGVBQWUsQ0FBQyx1QkFBdUIsRUFBRSxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUE7SUFDekUsTUFBTSxPQUFPLEdBQUc7UUFDZCxLQUFLLEVBQUUsS0FBSyxDQUFDLEtBQUssQ0FBQyxXQUFXLEVBQUUsQ0FBQyxJQUFJLEVBQUU7S0FDeEMsQ0FBQTtJQUVELE1BQU0sYUFBYSxHQUFHLElBQUEsOEJBQWdCLEVBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFBO0lBQ3RELElBQUksYUFBYSxFQUFFLENBQUM7UUFDbEIsTUFBTSxPQUFPLEdBQUcsSUFBQSwwQkFBWSxFQUFDLE9BQU8sQ0FBQyxDQUFBO1FBQ3JDLE1BQU0sR0FBRyxHQUFHLE1BQU0sYUFBYSxDQUFDLFFBQVEsRUFBRTtZQUN4QyxNQUFNLEVBQUUsTUFBTTtZQUNkLElBQUksRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQztZQUM3QixPQUFPO1NBQ1IsQ0FBQyxDQUFBO1FB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
@@ -0,0 +1,33 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Migration20250120000000RemoveForgotPasswordFromOtpPurpose = void 0;
4
+ const migrations_1 = require("@mikro-orm/migrations");
5
+ class Migration20250120000000RemoveForgotPasswordFromOtpPurpose extends migrations_1.Migration {
6
+ async up() {
7
+ // Drop the existing check constraint
8
+ this.addSql(`
9
+ ALTER TABLE "otp_verification"
10
+ DROP CONSTRAINT IF EXISTS "otp_verification_purpose_check";
11
+ `);
12
+ // Add new check constraint without 'forgot_password'
13
+ this.addSql(`
14
+ ALTER TABLE "otp_verification"
15
+ ADD CONSTRAINT "otp_verification_purpose_check"
16
+ CHECK ("purpose" IN ('email_verification', 'phone_verification'));
17
+ `);
18
+ }
19
+ async down() {
20
+ // Rollback: restore the original constraint with 'forgot_password'
21
+ this.addSql(`
22
+ ALTER TABLE "otp_verification"
23
+ DROP CONSTRAINT IF EXISTS "otp_verification_purpose_check";
24
+ `);
25
+ this.addSql(`
26
+ ALTER TABLE "otp_verification"
27
+ ADD CONSTRAINT "otp_verification_purpose_check"
28
+ CHECK ("purpose" IN ('email_verification', 'phone_verification', 'forgot_password'));
29
+ `);
30
+ }
31
+ }
32
+ exports.Migration20250120000000RemoveForgotPasswordFromOtpPurpose = Migration20250120000000RemoveForgotPasswordFromOtpPurpose;
33
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTWlncmF0aW9uMjAyNTAxMjAwMDAwMDBSZW1vdmVGb3Jnb3RQYXNzd29yZEZyb21PdHBQdXJwb3NlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL21vZHVsZXMvb3RwLXZlcmlmaWNhdGlvbi9taWdyYXRpb25zL01pZ3JhdGlvbjIwMjUwMTIwMDAwMDAwUmVtb3ZlRm9yZ290UGFzc3dvcmRGcm9tT3RwUHVycG9zZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxzREFBaUQ7QUFFakQsTUFBYSx5REFBMEQsU0FBUSxzQkFBUztJQUN0RixLQUFLLENBQUMsRUFBRTtRQUNOLHFDQUFxQztRQUNyQyxJQUFJLENBQUMsTUFBTSxDQUFDOzs7S0FHWCxDQUFDLENBQUE7UUFFRixxREFBcUQ7UUFDckQsSUFBSSxDQUFDLE1BQU0sQ0FBQzs7OztLQUlYLENBQUMsQ0FBQTtJQUNKLENBQUM7SUFFRCxLQUFLLENBQUMsSUFBSTtRQUNSLG1FQUFtRTtRQUNuRSxJQUFJLENBQUMsTUFBTSxDQUFDOzs7S0FHWCxDQUFDLENBQUE7UUFFRixJQUFJLENBQUMsTUFBTSxDQUFDOzs7O0tBSVgsQ0FBQyxDQUFBO0lBQ0osQ0FBQztDQUNGO0FBN0JELDhIQTZCQyJ9
@@ -6,14 +6,13 @@ var OtpPurpose;
6
6
  (function (OtpPurpose) {
7
7
  OtpPurpose["EMAIL_VERIFICATION"] = "email_verification";
8
8
  OtpPurpose["PHONE_VERIFICATION"] = "phone_verification";
9
- OtpPurpose["FORGOT_PASSWORD"] = "forgot_password";
10
9
  })(OtpPurpose || (exports.OtpPurpose = OtpPurpose = {}));
11
10
  exports.OtpVerification = utils_1.model
12
11
  .define("otp_verification", {
13
12
  id: utils_1.model.id().primaryKey(),
14
13
  customer_id: utils_1.model.text().searchable(),
15
14
  purpose: utils_1.model
16
- .enum(["email_verification", "phone_verification", "forgot_password"])
15
+ .enum(["email_verification", "phone_verification"])
17
16
  .default("email_verification"),
18
17
  hashed_code: utils_1.model.text(),
19
18
  expires_at: utils_1.model.dateTime(),
@@ -34,4 +33,4 @@ exports.OtpVerification = utils_1.model
34
33
  on: ["expires_at"],
35
34
  },
36
35
  ]);
37
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3RwLXZlcmlmaWNhdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9tb2R1bGVzL290cC12ZXJpZmljYXRpb24vbW9kZWxzL290cC12ZXJpZmljYXRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEscURBQWlEO0FBRWpELElBQVksVUFJWDtBQUpELFdBQVksVUFBVTtJQUNwQix1REFBeUMsQ0FBQTtJQUN6Qyx1REFBeUMsQ0FBQTtJQUN6QyxpREFBbUMsQ0FBQTtBQUNyQyxDQUFDLEVBSlcsVUFBVSwwQkFBVixVQUFVLFFBSXJCO0FBRVksUUFBQSxlQUFlLEdBQUcsYUFBSztLQUNqQyxNQUFNLENBQUMsa0JBQWtCLEVBQUU7SUFDMUIsRUFBRSxFQUFFLGFBQUssQ0FBQyxFQUFFLEVBQUUsQ0FBQyxVQUFVLEVBQUU7SUFDM0IsV0FBVyxFQUFFLGFBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQyxVQUFVLEVBQUU7SUFDdEMsT0FBTyxFQUFFLGFBQUs7U0FDWCxJQUFJLENBQUMsQ0FBQyxvQkFBb0IsRUFBRSxvQkFBb0IsRUFBRSxpQkFBaUIsQ0FBQyxDQUFDO1NBQ3JFLE9BQU8sQ0FBQyxvQkFBb0IsQ0FBQztJQUNoQyxXQUFXLEVBQUUsYUFBSyxDQUFDLElBQUksRUFBRTtJQUN6QixVQUFVLEVBQUUsYUFBSyxDQUFDLFFBQVEsRUFBRTtJQUM1QixRQUFRLEVBQUUsYUFBSyxDQUFDLE1BQU0sRUFBRSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7SUFDbkMsV0FBVyxFQUFFLGFBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQyxRQUFRLEVBQUU7Q0FDekMsQ0FBQztLQUNELE9BQU8sQ0FBQztJQUNQO1FBQ0UsSUFBSSxFQUFFLGtDQUFrQztRQUN4QyxFQUFFLEVBQUUsQ0FBQyxhQUFhLENBQUM7S0FDcEI7SUFDRDtRQUNFLElBQUksRUFBRSwwQ0FBMEM7UUFDaEQsRUFBRSxFQUFFLENBQUMsYUFBYSxFQUFFLFNBQVMsQ0FBQztLQUMvQjtJQUNEO1FBQ0UsSUFBSSxFQUFFLGlDQUFpQztRQUN2QyxFQUFFLEVBQUUsQ0FBQyxZQUFZLENBQUM7S0FDbkI7Q0FDRixDQUFDLENBQUEifQ==
36
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3RwLXZlcmlmaWNhdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9tb2R1bGVzL290cC12ZXJpZmljYXRpb24vbW9kZWxzL290cC12ZXJpZmljYXRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEscURBQWlEO0FBRWpELElBQVksVUFHWDtBQUhELFdBQVksVUFBVTtJQUNwQix1REFBeUMsQ0FBQTtJQUN6Qyx1REFBeUMsQ0FBQTtBQUMzQyxDQUFDLEVBSFcsVUFBVSwwQkFBVixVQUFVLFFBR3JCO0FBRVksUUFBQSxlQUFlLEdBQUcsYUFBSztLQUNqQyxNQUFNLENBQUMsa0JBQWtCLEVBQUU7SUFDMUIsRUFBRSxFQUFFLGFBQUssQ0FBQyxFQUFFLEVBQUUsQ0FBQyxVQUFVLEVBQUU7SUFDM0IsV0FBVyxFQUFFLGFBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQyxVQUFVLEVBQUU7SUFDdEMsT0FBTyxFQUFFLGFBQUs7U0FDWCxJQUFJLENBQUMsQ0FBQyxvQkFBb0IsRUFBRSxvQkFBb0IsQ0FBQyxDQUFDO1NBQ2xELE9BQU8sQ0FBQyxvQkFBb0IsQ0FBQztJQUNoQyxXQUFXLEVBQUUsYUFBSyxDQUFDLElBQUksRUFBRTtJQUN6QixVQUFVLEVBQUUsYUFBSyxDQUFDLFFBQVEsRUFBRTtJQUM1QixRQUFRLEVBQUUsYUFBSyxDQUFDLE1BQU0sRUFBRSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7SUFDbkMsV0FBVyxFQUFFLGFBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQyxRQUFRLEVBQUU7Q0FDekMsQ0FBQztLQUNELE9BQU8sQ0FBQztJQUNQO1FBQ0UsSUFBSSxFQUFFLGtDQUFrQztRQUN4QyxFQUFFLEVBQUUsQ0FBQyxhQUFhLENBQUM7S0FDcEI7SUFDRDtRQUNFLElBQUksRUFBRSwwQ0FBMEM7UUFDaEQsRUFBRSxFQUFFLENBQUMsYUFBYSxFQUFFLFNBQVMsQ0FBQztLQUMvQjtJQUNEO1FBQ0UsSUFBSSxFQUFFLGlDQUFpQztRQUN2QyxFQUFFLEVBQUUsQ0FBQyxZQUFZLENBQUM7S0FDbkI7Q0FDRixDQUFDLENBQUEifQ==