customer-registration 0.0.51 → 0.0.104
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/route.js +7 -11
- package/.medusa/server/src/api/store/customers/otp/send/route.js +36 -0
- package/.medusa/server/src/api/store/customers/otp/verify/route.js +75 -0
- package/.medusa/server/src/modules/customer-registration/index.js +8 -46
- package/.medusa/server/src/modules/customer-registration/migrations/Migration20250120000000AddCustomerVerificationColumns.js +42 -0
- package/.medusa/server/src/modules/customer-registration/service.js +11 -0
- package/.medusa/server/src/modules/otp-verification/index.js +29 -0
- package/.medusa/server/src/modules/otp-verification/migrations/Migration20250118001000CreateOtpVerificationTable.js +52 -0
- package/.medusa/server/src/modules/otp-verification/models/otp-verification.js +37 -0
- package/.medusa/server/src/modules/otp-verification/service.js +388 -0
- package/.medusa/server/src/modules/otp-verification/types.js +3 -0
- package/.medusa/server/src/modules/otp-verification/utils/template.js +78 -0
- package/.medusa/server/src/workflows/generate-password-reset-token.js +38 -0
- package/.medusa/server/src/workflows/send-otp-workflow.js +46 -0
- package/.medusa/server/src/workflows/steps/determine-contact-method-step.js +21 -0
- package/.medusa/server/src/workflows/steps/generate-otp-step.js +24 -0
- package/.medusa/server/src/workflows/steps/index.js +18 -0
- package/.medusa/server/src/workflows/steps/load-template-step.js +15 -0
- package/.medusa/server/src/workflows/steps/prepare-template-data-step.js +13 -0
- package/.medusa/server/src/workflows/steps/resolve-channel-config-step.js +18 -0
- package/.medusa/server/src/workflows/steps/retrieve-customer-step.js +16 -0
- package/.medusa/server/src/workflows/steps/send-notification-step.js +79 -0
- package/.medusa/server/src/workflows/verify-email.js +25 -0
- package/.medusa/server/src/workflows/verify-phone.js +25 -0
- package/README.md +140 -158
- package/package.json +6 -6
- package/.medusa/server/src/api/store/customers/email/otp/resend/route.js +0 -78
- package/.medusa/server/src/api/store/customers/email/otp/verify/route.js +0 -63
- package/.medusa/server/src/api/store/customers/forget-password/otp/resend/route.js +0 -52
- package/.medusa/server/src/api/store/customers/forget-password/otp/verify/route.js +0 -42
- package/.medusa/server/src/api/store/customers/phone/otp/resend/route.js +0 -81
- package/.medusa/server/src/api/store/customers/phone/otp/verify/route.js +0 -68
- package/.medusa/server/src/errors/otp-errors.js +0 -29
- package/.medusa/server/src/loaders/index.js +0 -32
- package/.medusa/server/src/modules/customer-registration/migrations/Migration20251122112915AddEmailPhoneVerifiedColumns.js +0 -67
- package/.medusa/server/src/modules/customer-registration/migrations/Migration20251122112916CreateCustomerOtpTable.js +0 -56
- package/.medusa/server/src/modules/customer-registration/models/customer-otp.js +0 -68
- package/.medusa/server/src/modules/customer-registration/services/otp-service.js +0 -236
- package/.medusa/server/src/services/notification-service.js +0 -81
- package/.medusa/server/src/subscribers/customer-created.js +0 -42
- package/.medusa/server/src/types/plugin-options.js +0 -30
- package/.medusa/server/src/utils/crypto.js +0 -52
- package/.medusa/server/src/utils/customer-update.js +0 -48
- package/.medusa/server/src/utils/otp-generator.js +0 -27
- package/.medusa/server/src/utils/token-generator.js +0 -11
|
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.POST = exports.GET = 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");
|
|
6
7
|
const GET = async (req, res) => {
|
|
7
8
|
const config = req.scope.resolve(utils_1.ContainerRegistrationKeys.CONFIG_MODULE);
|
|
8
9
|
const service = req.scope.resolve(utils_1.Modules.AUTH);
|
|
@@ -43,16 +44,11 @@ const POST = async (req, res) => {
|
|
|
43
44
|
};
|
|
44
45
|
exports.POST = POST;
|
|
45
46
|
const enforceEmailAndPhoneVerification = async ({ email, req, }) => {
|
|
46
|
-
|
|
47
|
-
const
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
throw new utils_1.MedusaError(utils_1.MedusaError.Types.UNAUTHORIZED, "Please verify your email before logging in.");
|
|
52
|
-
}
|
|
53
|
-
const customer = customers[0];
|
|
54
|
-
if (!customer.email_verified) {
|
|
55
|
-
throw new utils_1.MedusaError(utils_1.MedusaError.Types.UNAUTHORIZED, "Please verify your email before logging in.");
|
|
47
|
+
// Get OTP verification service
|
|
48
|
+
const otpService = req.scope.resolve(otp_verification_1.OTP_VERIFICATION_MODULE);
|
|
49
|
+
const verificationStatus = await otpService.getCustomerVerificationByEmail(req.scope, email);
|
|
50
|
+
if (!verificationStatus.email_verified) {
|
|
51
|
+
throw new utils_1.MedusaError(utils_1.MedusaError.Types.UNAUTHORIZED, "Email not verified.");
|
|
56
52
|
}
|
|
57
53
|
};
|
|
58
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
54
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL2F1dGgvY3VzdG9tZXIvZW1haWxwYXNzL3JvdXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQU1BLHFEQUlrQztBQUNsQywyRkFBb0c7QUFDcEcsMkVBQThFO0FBS3ZFLE1BQU0sR0FBRyxHQUFHLEtBQUssRUFBRSxHQUFrQixFQUFFLEdBQW1CLEVBQUUsRUFBRTtJQUNuRSxNQUFNLE1BQU0sR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FDOUIsaUNBQXlCLENBQUMsYUFBYSxDQUN4QyxDQUFBO0lBRUQsTUFBTSxPQUFPLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsZUFBTyxDQUFDLElBQUksQ0FBQyxDQUFBO0lBRS9DLE1BQU0sUUFBUSxHQUFHO1FBQ2YsR0FBRyxFQUFFLEdBQUcsQ0FBQyxHQUFHO1FBQ1osT0FBTyxFQUFFLEdBQUcsQ0FBQyxPQUFPO1FBQ3BCLEtBQUssRUFBRSxHQUFHLENBQUMsS0FBSztRQUNoQixJQUFJLEVBQUUsR0FBRyxDQUFDLElBQUk7UUFDZCxRQUFRLEVBQUUsR0FBRyxDQUFDLFFBQVE7S0FDQSxDQUFBO0lBRXhCLE1BQU0sRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLFlBQVksRUFBRSxRQUFRLEVBQUUsR0FDOUMsTUFBTSxPQUFPLENBQUMsWUFBWSxDQUFDLFdBQVcsRUFBRSxRQUFRLENBQUMsQ0FBQTtJQUVuRCxJQUFJLFFBQVEsRUFBRSxDQUFDO1FBQ2IsT0FBTyxHQUFHLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUE7SUFDM0MsQ0FBQztJQUVELElBQUksT0FBTyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBQzVCLE1BQU0sS0FBSyxHQUFHLFlBQVksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLFNBQVMsSUFBSSxFQUFFLENBQUE7UUFFcEUsTUFBTSxnQ0FBZ0MsQ0FBQztZQUNyQyxLQUFLO1lBQ0wsR0FBRztTQUNKLENBQUMsQ0FBQTtRQUVGLE1BQU0sRUFBRSxJQUFJLEVBQUUsR0FBRyxNQUFNLENBQUMsYUFBYSxDQUFBO1FBQ3JDLE1BQU0sS0FBSyxHQUFHLElBQUEsb0RBQStCLEVBQzNDO1lBQ0UsWUFBWTtZQUNaLFNBQVMsRUFBRSxVQUFVO1lBQ3JCLFlBQVksRUFBRSxXQUFXO1NBQzFCLEVBQ0Q7WUFDRSxNQUFNLEVBQUUsSUFBSSxDQUFDLFNBQVU7WUFDdkIsU0FBUyxFQUFFLElBQUksQ0FBQyxZQUFZO1lBQzVCLE9BQU8sRUFBRSxJQUFJLENBQUMsVUFBVTtTQUN6QixDQUNGLENBQUE7UUFFRCxPQUFPLEdBQUcsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQTtJQUN4QyxDQUFDO0lBRUQsTUFBTSxJQUFJLG1CQUFXLENBQ25CLG1CQUFXLENBQUMsS0FBSyxDQUFDLFlBQVksRUFDOUIsS0FBSyxJQUFJLHVCQUF1QixDQUNqQyxDQUFBO0FBQ0gsQ0FBQyxDQUFBO0FBbkRZLFFBQUEsR0FBRyxPQW1EZjtBQUVNLE1BQU0sSUFBSSxHQUFHLEtBQUssRUFBRSxHQUFrQixFQUFFLEdBQW1CLEVBQUUsRUFBRTtJQUNwRSxNQUFNLElBQUEsV0FBRyxFQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQTtBQUNyQixDQUFDLENBQUE7QUFGWSxRQUFBLElBQUksUUFFaEI7QUFFRCxNQUFNLGdDQUFnQyxHQUFHLEtBQUssRUFBRSxFQUM5QyxLQUFLLEVBQ0wsR0FBRyxHQUlKLEVBQUUsRUFBRTtJQUNILCtCQUErQjtJQUMvQixNQUFNLFVBQVUsR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FDbEMsMENBQXVCLENBQ0UsQ0FBQTtJQUUzQixNQUFNLGtCQUFrQixHQUFHLE1BQU0sVUFBVSxDQUFDLDhCQUE4QixDQUN4RSxHQUFHLENBQUMsS0FBK0IsRUFDbkMsS0FBSyxDQUNOLENBQUE7SUFFRCxJQUFJLENBQUMsa0JBQWtCLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDdkMsTUFBTSxJQUFJLG1CQUFXLENBQ25CLG1CQUFXLENBQUMsS0FBSyxDQUFDLFlBQVksRUFDOUIscUJBQXFCLENBQ3RCLENBQUE7SUFDSCxDQUFDO0FBQ0gsQ0FBQyxDQUFBIn0=
|
|
@@ -0,0 +1,36 @@
|
|
|
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 otp_verification_1 = require("../../../../../modules/otp-verification/models/otp-verification");
|
|
9
|
+
const send_otp_workflow_1 = __importDefault(require("../../../../../workflows/send-otp-workflow"));
|
|
10
|
+
const POST = async (req, res) => {
|
|
11
|
+
const { customer_id, type } = req.body;
|
|
12
|
+
console.log("=== [otp/send] Route Called ===");
|
|
13
|
+
console.log("Request body:", { customer_id, type });
|
|
14
|
+
if (!customer_id) {
|
|
15
|
+
throw new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, "customer_id is required");
|
|
16
|
+
}
|
|
17
|
+
if (!type || !Object.values(otp_verification_1.OtpPurpose).includes(type)) {
|
|
18
|
+
throw new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, `Type must be one of: ${Object.values(otp_verification_1.OtpPurpose).join(", ")}`);
|
|
19
|
+
}
|
|
20
|
+
console.log("=== [otp/send] Starting Workflow ===");
|
|
21
|
+
// Execute workflow
|
|
22
|
+
const { result } = await (0, send_otp_workflow_1.default)(req.scope).run({
|
|
23
|
+
input: {
|
|
24
|
+
customer_id,
|
|
25
|
+
type: type,
|
|
26
|
+
},
|
|
27
|
+
});
|
|
28
|
+
console.log("=== [otp/send] Workflow Completed ===");
|
|
29
|
+
console.log("Result:", { token: result.token, expires_at: result.expires_at });
|
|
30
|
+
return res.status(200).json({
|
|
31
|
+
token: result.token,
|
|
32
|
+
expires_at: result.expires_at,
|
|
33
|
+
});
|
|
34
|
+
};
|
|
35
|
+
exports.POST = POST;
|
|
36
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL3N0b3JlL2N1c3RvbWVycy9vdHAvc2VuZC9yb3V0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFDQSxxREFBdUQ7QUFDdkQsc0dBQTRGO0FBQzVGLG1HQUF3RTtBQUVqRSxNQUFNLElBQUksR0FBRyxLQUFLLEVBQUUsR0FBa0IsRUFBRSxHQUFtQixFQUFFLEVBQUU7SUFDcEUsTUFBTSxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUUsR0FBRyxHQUFHLENBQUMsSUFHakMsQ0FBQTtJQUVELE9BQU8sQ0FBQyxHQUFHLENBQUMsaUNBQWlDLENBQUMsQ0FBQTtJQUM5QyxPQUFPLENBQUMsR0FBRyxDQUFDLGVBQWUsRUFBRSxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFBO0lBRW5ELElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUNqQixNQUFNLElBQUksbUJBQVcsQ0FDbkIsbUJBQVcsQ0FBQyxLQUFLLENBQUMsWUFBWSxFQUM5Qix5QkFBeUIsQ0FDMUIsQ0FBQTtJQUNILENBQUM7SUFFRCxJQUFJLENBQUMsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyw2QkFBVSxDQUFDLENBQUMsUUFBUSxDQUFDLElBQWtCLENBQUMsRUFBRSxDQUFDO1FBQ3JFLE1BQU0sSUFBSSxtQkFBVyxDQUNuQixtQkFBVyxDQUFDLEtBQUssQ0FBQyxZQUFZLEVBQzlCLHdCQUF3QixNQUFNLENBQUMsTUFBTSxDQUFDLDZCQUFVLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FDL0QsQ0FBQTtJQUNILENBQUM7SUFFRCxPQUFPLENBQUMsR0FBRyxDQUFDLHNDQUFzQyxDQUFDLENBQUE7SUFFbkQsbUJBQW1CO0lBQ25CLE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxNQUFNLElBQUEsMkJBQWUsRUFBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBRyxDQUFDO1FBQ3RELEtBQUssRUFBRTtZQUNMLFdBQVc7WUFDWCxJQUFJLEVBQUUsSUFBa0I7U0FDekI7S0FDRixDQUFDLENBQUE7SUFFRixPQUFPLENBQUMsR0FBRyxDQUFDLHVDQUF1QyxDQUFDLENBQUE7SUFDcEQsT0FBTyxDQUFDLEdBQUcsQ0FBQyxTQUFTLEVBQUUsRUFBRSxLQUFLLEVBQUUsTUFBTSxDQUFDLEtBQUssRUFBRSxVQUFVLEVBQUUsTUFBTSxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUE7SUFFOUUsT0FBTyxHQUFHLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQztRQUMxQixLQUFLLEVBQUUsTUFBTSxDQUFDLEtBQUs7UUFDbkIsVUFBVSxFQUFFLE1BQU0sQ0FBQyxVQUFVO0tBQzlCLENBQUMsQ0FBQTtBQUNKLENBQUMsQ0FBQTtBQXhDWSxRQUFBLElBQUksUUF3Q2hCIn0=
|
|
@@ -0,0 +1,75 @@
|
|
|
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 otp_verification_1 = require("../../../../../modules/otp-verification");
|
|
9
|
+
const otp_verification_2 = require("../../../../../modules/otp-verification/models/otp-verification");
|
|
10
|
+
const verify_email_1 = __importDefault(require("../../../../../workflows/verify-email"));
|
|
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
|
+
const POST = async (req, res) => {
|
|
14
|
+
const { token, code } = req.body;
|
|
15
|
+
if (!token) {
|
|
16
|
+
throw new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, "Token is required");
|
|
17
|
+
}
|
|
18
|
+
if (!code) {
|
|
19
|
+
throw new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, "OTP code is required");
|
|
20
|
+
}
|
|
21
|
+
// Get OTP service from module
|
|
22
|
+
const otpService = req.scope.resolve(otp_verification_1.OTP_VERIFICATION_MODULE);
|
|
23
|
+
// Get JWT secret from config
|
|
24
|
+
const config = req.scope.resolve(utils_1.ContainerRegistrationKeys.CONFIG_MODULE);
|
|
25
|
+
const jwtSecret = config?.projectConfig?.http?.jwtSecret || "supersecret";
|
|
26
|
+
// Verify OTP
|
|
27
|
+
const verifyResult = await otpService.verifyOtp({
|
|
28
|
+
token,
|
|
29
|
+
code,
|
|
30
|
+
}, jwtSecret);
|
|
31
|
+
// Execute workflow based on type
|
|
32
|
+
let result;
|
|
33
|
+
if (verifyResult.type === otp_verification_2.OtpPurpose.EMAIL_VERIFICATION) {
|
|
34
|
+
const { result: workflowResult } = await (0, verify_email_1.default)(req.scope).run({
|
|
35
|
+
input: {
|
|
36
|
+
customer_id: verifyResult.customer_id,
|
|
37
|
+
},
|
|
38
|
+
});
|
|
39
|
+
result = {
|
|
40
|
+
verified: true,
|
|
41
|
+
customer: workflowResult.customer,
|
|
42
|
+
email_verified: workflowResult.email_verified,
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
else if (verifyResult.type === otp_verification_2.OtpPurpose.PHONE_VERIFICATION) {
|
|
46
|
+
const { result: workflowResult } = await (0, verify_phone_1.default)(req.scope).run({
|
|
47
|
+
input: {
|
|
48
|
+
customer_id: verifyResult.customer_id,
|
|
49
|
+
},
|
|
50
|
+
});
|
|
51
|
+
result = {
|
|
52
|
+
verified: true,
|
|
53
|
+
customer: workflowResult.customer,
|
|
54
|
+
phone_verified: workflowResult.phone_verified,
|
|
55
|
+
};
|
|
56
|
+
}
|
|
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
|
+
else {
|
|
70
|
+
throw new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, "Invalid verification type");
|
|
71
|
+
}
|
|
72
|
+
return res.status(200).json(result);
|
|
73
|
+
};
|
|
74
|
+
exports.POST = POST;
|
|
75
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL3N0b3JlL2N1c3RvbWVycy9vdHAvdmVyaWZ5L3JvdXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUNBLHFEQUdrQztBQUNsQyw4RUFBaUY7QUFFakYsc0dBQTRGO0FBQzVGLHlGQUF1RTtBQUN2RSx5RkFBdUU7QUFDdkUsMkhBQXVHO0FBRWhHLE1BQU0sSUFBSSxHQUFHLEtBQUssRUFBRSxHQUFrQixFQUFFLEdBQW1CLEVBQUUsRUFBRTtJQUNwRSxNQUFNLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxHQUFHLEdBQUcsQ0FBQyxJQUczQixDQUFBO0lBRUQsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ1gsTUFBTSxJQUFJLG1CQUFXLENBQ25CLG1CQUFXLENBQUMsS0FBSyxDQUFDLFlBQVksRUFDOUIsbUJBQW1CLENBQ3BCLENBQUE7SUFDSCxDQUFDO0lBRUQsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ1YsTUFBTSxJQUFJLG1CQUFXLENBQ25CLG1CQUFXLENBQUMsS0FBSyxDQUFDLFlBQVksRUFDOUIsc0JBQXNCLENBQ3ZCLENBQUE7SUFDSCxDQUFDO0lBRUQsOEJBQThCO0lBQzlCLE1BQU0sVUFBVSxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUNsQywwQ0FBdUIsQ0FDRSxDQUFBO0lBRTNCLDZCQUE2QjtJQUM3QixNQUFNLE1BQU0sR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxpQ0FBeUIsQ0FBQyxhQUFhLENBQUMsQ0FBQTtJQUN6RSxNQUFNLFNBQVMsR0FBSSxNQUFNLEVBQUUsYUFBcUIsRUFBRSxJQUFJLEVBQUUsU0FBUyxJQUFJLGFBQWEsQ0FBQTtJQUVsRixhQUFhO0lBQ2IsTUFBTSxZQUFZLEdBQUcsTUFBTSxVQUFVLENBQUMsU0FBUyxDQUM3QztRQUNFLEtBQUs7UUFDTCxJQUFJO0tBQ0wsRUFDRCxTQUFTLENBQ1YsQ0FBQTtJQUVELGlDQUFpQztJQUNqQyxJQUFJLE1BQVcsQ0FBQTtJQUVmLElBQUksWUFBWSxDQUFDLElBQUksS0FBSyw2QkFBVSxDQUFDLGtCQUFrQixFQUFFLENBQUM7UUFDeEQsTUFBTSxFQUFFLE1BQU0sRUFBRSxjQUFjLEVBQUUsR0FBRyxNQUFNLElBQUEsc0JBQW1CLEVBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsQ0FBQztZQUMxRSxLQUFLLEVBQUU7Z0JBQ0wsV0FBVyxFQUFFLFlBQVksQ0FBQyxXQUFXO2FBQ3RDO1NBQ0YsQ0FBQyxDQUFBO1FBQ0YsTUFBTSxHQUFHO1lBQ1AsUUFBUSxFQUFFLElBQUk7WUFDZCxRQUFRLEVBQUUsY0FBYyxDQUFDLFFBQVE7WUFDakMsY0FBYyxFQUFFLGNBQWMsQ0FBQyxjQUFjO1NBQzlDLENBQUE7SUFDSCxDQUFDO1NBQU0sSUFBSSxZQUFZLENBQUMsSUFBSSxLQUFLLDZCQUFVLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztRQUMvRCxNQUFNLEVBQUUsTUFBTSxFQUFFLGNBQWMsRUFBRSxHQUFHLE1BQU0sSUFBQSxzQkFBbUIsRUFBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBRyxDQUFDO1lBQzFFLEtBQUssRUFBRTtnQkFDTCxXQUFXLEVBQUUsWUFBWSxDQUFDLFdBQVc7YUFDdEM7U0FDRixDQUFDLENBQUE7UUFDRixNQUFNLEdBQUc7WUFDUCxRQUFRLEVBQUUsSUFBSTtZQUNkLFFBQVEsRUFBRSxjQUFjLENBQUMsUUFBUTtZQUNqQyxjQUFjLEVBQUUsY0FBYyxDQUFDLGNBQWM7U0FDOUMsQ0FBQTtJQUNILENBQUM7U0FBTSxJQUFJLFlBQVksQ0FBQyxJQUFJLEtBQUssNkJBQVUsQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUM1RCxNQUFNLEVBQUUsTUFBTSxFQUFFLGNBQWMsRUFBRSxHQUFHLE1BQU0sSUFBQSx1Q0FBa0MsRUFBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBRyxDQUFDO1lBQ3pGLEtBQUssRUFBRTtnQkFDTCxXQUFXLEVBQUUsWUFBWSxDQUFDLFdBQVc7YUFDdEM7U0FDRixDQUFDLENBQUE7UUFDRixNQUFNLEdBQUc7WUFDUCxRQUFRLEVBQUUsSUFBSTtZQUNkLFdBQVcsRUFBRSxjQUFjLENBQUMsS0FBSztZQUNqQyxVQUFVLEVBQUUsY0FBYyxDQUFDLFVBQVU7U0FDdEMsQ0FBQTtJQUNILENBQUM7U0FBTSxDQUFDO1FBQ04sTUFBTSxJQUFJLG1CQUFXLENBQ25CLG1CQUFXLENBQUMsS0FBSyxDQUFDLFlBQVksRUFDOUIsMkJBQTJCLENBQzVCLENBQUE7SUFDSCxDQUFDO0lBRUQsT0FBTyxHQUFHLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQTtBQUNyQyxDQUFDLENBQUE7QUFsRlksUUFBQSxJQUFJLFFBa0ZoQiJ9
|
|
@@ -1,49 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
-
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
-
};
|
|
16
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
-
exports.
|
|
3
|
+
exports.CustomerRegistrationService = exports.CUSTOMER_REGISTRATION_MODULE = void 0;
|
|
18
4
|
const utils_1 = require("@medusajs/framework/utils");
|
|
19
|
-
const
|
|
20
|
-
Object.defineProperty(exports, "
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
serviceName: exports.CUSTOMER_REGISTRATION_MODULE,
|
|
27
|
-
service: otp_service_1.OTPService,
|
|
28
|
-
load: (container, options) => {
|
|
29
|
-
const config = options;
|
|
30
|
-
container.register({
|
|
31
|
-
[exports.CUSTOMER_REGISTRATION_MODULE]: {
|
|
32
|
-
resolve: (cradle) => {
|
|
33
|
-
const customerService = cradle[utils_1.Modules.CUSTOMER];
|
|
34
|
-
const notificationService = cradle[utils_1.Modules.NOTIFICATION];
|
|
35
|
-
const manager = cradle.manager;
|
|
36
|
-
return new otp_service_1.OTPService({
|
|
37
|
-
customerService,
|
|
38
|
-
notificationService,
|
|
39
|
-
manager,
|
|
40
|
-
config,
|
|
41
|
-
});
|
|
42
|
-
},
|
|
43
|
-
},
|
|
44
|
-
});
|
|
45
|
-
},
|
|
46
|
-
};
|
|
47
|
-
__exportStar(require("./migrations/Migration20251122112915AddEmailPhoneVerifiedColumns"), exports);
|
|
48
|
-
__exportStar(require("./migrations/Migration20251122112916CreateCustomerOtpTable"), exports);
|
|
49
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbW9kdWxlcy9jdXN0b21lci1yZWdpc3RyYXRpb24vaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxxREFBbUQ7QUFDbkQsd0RBQW1EO0FBa0M3QiwyRkFsQ2Isd0JBQVUsT0FrQ2E7QUFqQ2hDLHdEQUFtRDtBQWlDMUMsNEZBakNBLDBCQUFXLE9BaUNBO0FBNUJQLFFBQUEsNEJBQTRCLEdBQUcsc0JBQXNCLENBQUE7QUFFbEUsa0JBQWU7SUFDYixHQUFHLEVBQUUsb0NBQTRCO0lBQ2pDLFdBQVcsRUFBRSxvQ0FBNEI7SUFDekMsT0FBTyxFQUFFLHdCQUFVO0lBQ25CLElBQUksRUFBRSxDQUFDLFNBQWMsRUFBRSxPQUFZLEVBQUUsRUFBRTtRQUNyQyxNQUFNLE1BQU0sR0FBRyxPQUFrQyxDQUFBO1FBRWpELFNBQVMsQ0FBQyxRQUFRLENBQUM7WUFDakIsQ0FBQyxvQ0FBNEIsQ0FBQyxFQUFFO2dCQUM5QixPQUFPLEVBQUUsQ0FBQyxNQUFXLEVBQUUsRUFBRTtvQkFDdkIsTUFBTSxlQUFlLEdBQUcsTUFBTSxDQUFDLGVBQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQTtvQkFDaEQsTUFBTSxtQkFBbUIsR0FBRyxNQUFNLENBQUMsZUFBTyxDQUFDLFlBQVksQ0FBQyxDQUFBO29CQUN4RCxNQUFNLE9BQU8sR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFBO29CQUU5QixPQUFPLElBQUksd0JBQVUsQ0FBQzt3QkFDcEIsZUFBZTt3QkFDZixtQkFBbUI7d0JBQ25CLE9BQU87d0JBQ1AsTUFBTTtxQkFDUCxDQUFDLENBQUE7Z0JBQ0osQ0FBQzthQUNGO1NBQ0YsQ0FBQyxDQUFBO0lBQ0osQ0FBQztDQUNGLENBQUE7QUFHRCxtR0FBZ0Y7QUFDaEYsNkZBQTBFIn0=
|
|
5
|
+
const service_1 = require("./service");
|
|
6
|
+
Object.defineProperty(exports, "CustomerRegistrationService", { enumerable: true, get: function () { return service_1.CustomerRegistrationService; } });
|
|
7
|
+
exports.CUSTOMER_REGISTRATION_MODULE = "customer_registration";
|
|
8
|
+
exports.default = (0, utils_1.Module)(exports.CUSTOMER_REGISTRATION_MODULE, {
|
|
9
|
+
service: service_1.CustomerRegistrationService,
|
|
10
|
+
});
|
|
11
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbW9kdWxlcy9jdXN0b21lci1yZWdpc3RyYXRpb24vaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEscURBQWtEO0FBQ2xELHVDQUF1RDtBQVE5Qyw0R0FSQSxxQ0FBMkIsT0FRQTtBQU52QixRQUFBLDRCQUE0QixHQUFHLHVCQUF1QixDQUFBO0FBRW5FLGtCQUFlLElBQUEsY0FBTSxFQUFDLG9DQUE0QixFQUFFO0lBQ2xELE9BQU8sRUFBRSxxQ0FBMkI7Q0FDckMsQ0FBQyxDQUFBIn0=
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Migration20250120000000AddCustomerVerificationColumns = void 0;
|
|
4
|
+
const migrations_1 = require("@mikro-orm/migrations");
|
|
5
|
+
class Migration20250120000000AddCustomerVerificationColumns extends migrations_1.Migration {
|
|
6
|
+
async up() {
|
|
7
|
+
this.addSql(`
|
|
8
|
+
ALTER TABLE "customer"
|
|
9
|
+
ADD COLUMN IF NOT EXISTS "email_verified" boolean NOT NULL DEFAULT false;
|
|
10
|
+
`);
|
|
11
|
+
this.addSql(`
|
|
12
|
+
ALTER TABLE "customer"
|
|
13
|
+
ADD COLUMN IF NOT EXISTS "phone_verified" boolean NOT NULL DEFAULT false;
|
|
14
|
+
`);
|
|
15
|
+
this.addSql(`
|
|
16
|
+
CREATE INDEX IF NOT EXISTS "IDX_customer_email_verified"
|
|
17
|
+
ON "customer" ("email_verified");
|
|
18
|
+
`);
|
|
19
|
+
this.addSql(`
|
|
20
|
+
CREATE INDEX IF NOT EXISTS "IDX_customer_phone_verified"
|
|
21
|
+
ON "customer" ("phone_verified");
|
|
22
|
+
`);
|
|
23
|
+
}
|
|
24
|
+
async down() {
|
|
25
|
+
this.addSql(`
|
|
26
|
+
DROP INDEX IF EXISTS "IDX_customer_phone_verified";
|
|
27
|
+
`);
|
|
28
|
+
this.addSql(`
|
|
29
|
+
DROP INDEX IF EXISTS "IDX_customer_email_verified";
|
|
30
|
+
`);
|
|
31
|
+
this.addSql(`
|
|
32
|
+
ALTER TABLE "customer"
|
|
33
|
+
DROP COLUMN IF EXISTS "phone_verified";
|
|
34
|
+
`);
|
|
35
|
+
this.addSql(`
|
|
36
|
+
ALTER TABLE "customer"
|
|
37
|
+
DROP COLUMN IF EXISTS "email_verified";
|
|
38
|
+
`);
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
exports.Migration20250120000000AddCustomerVerificationColumns = Migration20250120000000AddCustomerVerificationColumns;
|
|
42
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTWlncmF0aW9uMjAyNTAxMjAwMDAwMDBBZGRDdXN0b21lclZlcmlmaWNhdGlvbkNvbHVtbnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbW9kdWxlcy9jdXN0b21lci1yZWdpc3RyYXRpb24vbWlncmF0aW9ucy9NaWdyYXRpb24yMDI1MDEyMDAwMDAwMEFkZEN1c3RvbWVyVmVyaWZpY2F0aW9uQ29sdW1ucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxzREFBaUQ7QUFFakQsTUFBYSxxREFBc0QsU0FBUSxzQkFBUztJQUNsRixLQUFLLENBQUMsRUFBRTtRQUNOLElBQUksQ0FBQyxNQUFNLENBQUM7OztLQUdYLENBQUMsQ0FBQTtRQUVGLElBQUksQ0FBQyxNQUFNLENBQUM7OztLQUdYLENBQUMsQ0FBQTtRQUVGLElBQUksQ0FBQyxNQUFNLENBQUM7OztLQUdYLENBQUMsQ0FBQTtRQUVGLElBQUksQ0FBQyxNQUFNLENBQUM7OztLQUdYLENBQUMsQ0FBQTtJQUNKLENBQUM7SUFFRCxLQUFLLENBQUMsSUFBSTtRQUNSLElBQUksQ0FBQyxNQUFNLENBQUM7O0tBRVgsQ0FBQyxDQUFBO1FBRUYsSUFBSSxDQUFDLE1BQU0sQ0FBQzs7S0FFWCxDQUFDLENBQUE7UUFFRixJQUFJLENBQUMsTUFBTSxDQUFDOzs7S0FHWCxDQUFDLENBQUE7UUFFRixJQUFJLENBQUMsTUFBTSxDQUFDOzs7S0FHWCxDQUFDLENBQUE7SUFDSixDQUFDO0NBQ0Y7QUExQ0Qsc0hBMENDIn0=
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.CustomerRegistrationService = void 0;
|
|
4
|
+
const utils_1 = require("@medusajs/framework/utils");
|
|
5
|
+
class CustomerRegistrationService extends (0, utils_1.MedusaService)({}) {
|
|
6
|
+
constructor(container, moduleOptions, moduleDeclaration) {
|
|
7
|
+
super(container, moduleOptions, moduleDeclaration);
|
|
8
|
+
}
|
|
9
|
+
}
|
|
10
|
+
exports.CustomerRegistrationService = CustomerRegistrationService;
|
|
11
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9tb2R1bGVzL2N1c3RvbWVyLXJlZ2lzdHJhdGlvbi9zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLHFEQUF5RDtBQUl6RCxNQUFhLDJCQUE0QixTQUFRLElBQUEscUJBQWEsRUFBQyxFQUFFLENBQUM7SUFDaEUsWUFDRSxTQUErQixFQUMvQixhQUF1QyxFQUN2QyxpQkFBeUQ7UUFFekQsS0FBSyxDQUFDLFNBQVMsRUFBRSxhQUFhLEVBQUUsaUJBQWlCLENBQUMsQ0FBQTtJQUNwRCxDQUFDO0NBSUY7QUFYRCxrRUFXQyJ9
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
exports.OtpVerificationService = exports.OTP_VERIFICATION_MODULE = void 0;
|
|
18
|
+
const utils_1 = require("@medusajs/framework/utils");
|
|
19
|
+
const service_1 = require("./service");
|
|
20
|
+
exports.OTP_VERIFICATION_MODULE = "otp_verification";
|
|
21
|
+
exports.default = (0, utils_1.Module)(exports.OTP_VERIFICATION_MODULE, {
|
|
22
|
+
service: service_1.OtpVerificationService,
|
|
23
|
+
});
|
|
24
|
+
__exportStar(require("./models/otp-verification"), exports);
|
|
25
|
+
__exportStar(require("./types"), exports);
|
|
26
|
+
__exportStar(require("./utils/template"), exports);
|
|
27
|
+
var service_2 = require("./service");
|
|
28
|
+
Object.defineProperty(exports, "OtpVerificationService", { enumerable: true, get: function () { return service_2.OtpVerificationService; } });
|
|
29
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbW9kdWxlcy9vdHAtdmVyaWZpY2F0aW9uL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEscURBQWtEO0FBQ2xELHVDQUFrRDtBQUVyQyxRQUFBLHVCQUF1QixHQUFHLGtCQUFrQixDQUFBO0FBRXpELGtCQUFlLElBQUEsY0FBTSxFQUFDLCtCQUF1QixFQUFFO0lBQzdDLE9BQU8sRUFBRSxnQ0FBc0I7Q0FDaEMsQ0FBQyxDQUFBO0FBRUYsNERBQXlDO0FBQ3pDLDBDQUF1QjtBQUN2QixtREFBZ0M7QUFDaEMscUNBQWtEO0FBQXpDLGlIQUFBLHNCQUFzQixPQUFBIn0=
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Migration20250118001000CreateOtpVerificationTable = void 0;
|
|
4
|
+
const migrations_1 = require("@mikro-orm/migrations");
|
|
5
|
+
class Migration20250118001000CreateOtpVerificationTable extends migrations_1.Migration {
|
|
6
|
+
async up() {
|
|
7
|
+
this.addSql(`
|
|
8
|
+
create table if not exists "otp_verification" (
|
|
9
|
+
"id" text not null,
|
|
10
|
+
"customer_id" text not null,
|
|
11
|
+
"purpose" text check ("purpose" in ('email_verification', 'phone_verification', 'forgot_password')) not null default 'email_verification',
|
|
12
|
+
"hashed_code" text not null,
|
|
13
|
+
"expires_at" timestamptz not null,
|
|
14
|
+
"attempts" integer not null default 0,
|
|
15
|
+
"verified_at" timestamptz null,
|
|
16
|
+
"created_at" timestamptz not null default now(),
|
|
17
|
+
"updated_at" timestamptz not null default now(),
|
|
18
|
+
"deleted_at" timestamptz null,
|
|
19
|
+
constraint "otp_verification_pkey" primary key ("id")
|
|
20
|
+
);
|
|
21
|
+
`);
|
|
22
|
+
this.addSql(`
|
|
23
|
+
create index if not exists "IDX_otp_verification_customer_id"
|
|
24
|
+
on "otp_verification" ("customer_id");
|
|
25
|
+
`);
|
|
26
|
+
this.addSql(`
|
|
27
|
+
create index if not exists "IDX_otp_verification_customer_id_purpose"
|
|
28
|
+
on "otp_verification" ("customer_id", "purpose");
|
|
29
|
+
`);
|
|
30
|
+
this.addSql(`
|
|
31
|
+
create index if not exists "IDX_otp_verification_expires_at"
|
|
32
|
+
on "otp_verification" ("expires_at");
|
|
33
|
+
`);
|
|
34
|
+
}
|
|
35
|
+
async down() {
|
|
36
|
+
// Migration rollback - drop indexes first, then table
|
|
37
|
+
this.addSql(`
|
|
38
|
+
drop index if exists "IDX_otp_verification_expires_at";
|
|
39
|
+
`);
|
|
40
|
+
this.addSql(`
|
|
41
|
+
drop index if exists "IDX_otp_verification_customer_id_purpose";
|
|
42
|
+
`);
|
|
43
|
+
this.addSql(`
|
|
44
|
+
drop index if exists "IDX_otp_verification_customer_id";
|
|
45
|
+
`);
|
|
46
|
+
this.addSql(`
|
|
47
|
+
drop table if exists "otp_verification";
|
|
48
|
+
`);
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
exports.Migration20250118001000CreateOtpVerificationTable = Migration20250118001000CreateOtpVerificationTable;
|
|
52
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTWlncmF0aW9uMjAyNTAxMTgwMDEwMDBDcmVhdGVPdHBWZXJpZmljYXRpb25UYWJsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9tb2R1bGVzL290cC12ZXJpZmljYXRpb24vbWlncmF0aW9ucy9NaWdyYXRpb24yMDI1MDExODAwMTAwMENyZWF0ZU90cFZlcmlmaWNhdGlvblRhYmxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLHNEQUFpRDtBQUVqRCxNQUFhLGlEQUFrRCxTQUFRLHNCQUFTO0lBQzlFLEtBQUssQ0FBQyxFQUFFO1FBQ04sSUFBSSxDQUFDLE1BQU0sQ0FBQzs7Ozs7Ozs7Ozs7Ozs7S0FjWCxDQUFDLENBQUE7UUFFRixJQUFJLENBQUMsTUFBTSxDQUFDOzs7S0FHWCxDQUFDLENBQUE7UUFFRixJQUFJLENBQUMsTUFBTSxDQUFDOzs7S0FHWCxDQUFDLENBQUE7UUFFRixJQUFJLENBQUMsTUFBTSxDQUFDOzs7S0FHWCxDQUFDLENBQUE7SUFDSixDQUFDO0lBRUQsS0FBSyxDQUFDLElBQUk7UUFDUixzREFBc0Q7UUFDdEQsSUFBSSxDQUFDLE1BQU0sQ0FBQzs7S0FFWCxDQUFDLENBQUE7UUFFRixJQUFJLENBQUMsTUFBTSxDQUFDOztLQUVYLENBQUMsQ0FBQTtRQUVGLElBQUksQ0FBQyxNQUFNLENBQUM7O0tBRVgsQ0FBQyxDQUFBO1FBRUYsSUFBSSxDQUFDLE1BQU0sQ0FBQzs7S0FFWCxDQUFDLENBQUE7SUFDSixDQUFDO0NBQ0Y7QUFwREQsOEdBb0RDIn0=
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.OtpVerification = exports.OtpPurpose = void 0;
|
|
4
|
+
const utils_1 = require("@medusajs/framework/utils");
|
|
5
|
+
var OtpPurpose;
|
|
6
|
+
(function (OtpPurpose) {
|
|
7
|
+
OtpPurpose["EMAIL_VERIFICATION"] = "email_verification";
|
|
8
|
+
OtpPurpose["PHONE_VERIFICATION"] = "phone_verification";
|
|
9
|
+
OtpPurpose["FORGOT_PASSWORD"] = "forgot_password";
|
|
10
|
+
})(OtpPurpose || (exports.OtpPurpose = OtpPurpose = {}));
|
|
11
|
+
exports.OtpVerification = utils_1.model
|
|
12
|
+
.define("otp_verification", {
|
|
13
|
+
id: utils_1.model.id().primaryKey(),
|
|
14
|
+
customer_id: utils_1.model.text().searchable(),
|
|
15
|
+
purpose: utils_1.model
|
|
16
|
+
.enum(["email_verification", "phone_verification", "forgot_password"])
|
|
17
|
+
.default("email_verification"),
|
|
18
|
+
hashed_code: utils_1.model.text(),
|
|
19
|
+
expires_at: utils_1.model.dateTime(),
|
|
20
|
+
attempts: utils_1.model.number().default(0),
|
|
21
|
+
verified_at: utils_1.model.dateTime().nullable(),
|
|
22
|
+
})
|
|
23
|
+
.indexes([
|
|
24
|
+
{
|
|
25
|
+
name: "IDX_otp_verification_customer_id",
|
|
26
|
+
on: ["customer_id"],
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
name: "IDX_otp_verification_customer_id_purpose",
|
|
30
|
+
on: ["customer_id", "purpose"],
|
|
31
|
+
},
|
|
32
|
+
{
|
|
33
|
+
name: "IDX_otp_verification_expires_at",
|
|
34
|
+
on: ["expires_at"],
|
|
35
|
+
},
|
|
36
|
+
]);
|
|
37
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3RwLXZlcmlmaWNhdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9tb2R1bGVzL290cC12ZXJpZmljYXRpb24vbW9kZWxzL290cC12ZXJpZmljYXRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEscURBQWlEO0FBRWpELElBQVksVUFJWDtBQUpELFdBQVksVUFBVTtJQUNwQix1REFBeUMsQ0FBQTtJQUN6Qyx1REFBeUMsQ0FBQTtJQUN6QyxpREFBbUMsQ0FBQTtBQUNyQyxDQUFDLEVBSlcsVUFBVSwwQkFBVixVQUFVLFFBSXJCO0FBRVksUUFBQSxlQUFlLEdBQUcsYUFBSztLQUNqQyxNQUFNLENBQUMsa0JBQWtCLEVBQUU7SUFDMUIsRUFBRSxFQUFFLGFBQUssQ0FBQyxFQUFFLEVBQUUsQ0FBQyxVQUFVLEVBQUU7SUFDM0IsV0FBVyxFQUFFLGFBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQyxVQUFVLEVBQUU7SUFDdEMsT0FBTyxFQUFFLGFBQUs7U0FDWCxJQUFJLENBQUMsQ0FBQyxvQkFBb0IsRUFBRSxvQkFBb0IsRUFBRSxpQkFBaUIsQ0FBQyxDQUFDO1NBQ3JFLE9BQU8sQ0FBQyxvQkFBb0IsQ0FBQztJQUNoQyxXQUFXLEVBQUUsYUFBSyxDQUFDLElBQUksRUFBRTtJQUN6QixVQUFVLEVBQUUsYUFBSyxDQUFDLFFBQVEsRUFBRTtJQUM1QixRQUFRLEVBQUUsYUFBSyxDQUFDLE1BQU0sRUFBRSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7SUFDbkMsV0FBVyxFQUFFLGFBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQyxRQUFRLEVBQUU7Q0FDekMsQ0FBQztLQUNELE9BQU8sQ0FBQztJQUNQO1FBQ0UsSUFBSSxFQUFFLGtDQUFrQztRQUN4QyxFQUFFLEVBQUUsQ0FBQyxhQUFhLENBQUM7S0FDcEI7SUFDRDtRQUNFLElBQUksRUFBRSwwQ0FBMEM7UUFDaEQsRUFBRSxFQUFFLENBQUMsYUFBYSxFQUFFLFNBQVMsQ0FBQztLQUMvQjtJQUNEO1FBQ0UsSUFBSSxFQUFFLGlDQUFpQztRQUN2QyxFQUFFLEVBQUUsQ0FBQyxZQUFZLENBQUM7S0FDbkI7Q0FDRixDQUFDLENBQUEifQ==
|