customer-registration 0.0.112 → 0.0.113

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 (34) hide show
  1. package/.medusa/server/src/api/auth/customer/emailpass/reset-password/route.js +1 -26
  2. package/.medusa/server/src/api/auth/customer/emailpass/route.js +19 -97
  3. package/.medusa/server/src/api/auth/customer/phonepass/register/route.js +50 -0
  4. package/.medusa/server/src/api/auth/customer/phonepass/route.js +105 -0
  5. package/.medusa/server/src/api/middlewares/{block-pending-customer.js → guard-account-deletion.js} +4 -4
  6. package/.medusa/server/src/api/middlewares/ip-rate-limit.js +48 -0
  7. package/.medusa/server/src/api/middlewares/validate-customer-registration.js +60 -0
  8. package/.medusa/server/src/api/middlewares.js +17 -4
  9. package/.medusa/server/src/api/store/customers/account-deletion/cancel-request/route.js +16 -6
  10. package/.medusa/server/src/api/store/customers/account-deletion/validators.js +11 -3
  11. package/.medusa/server/src/api/store/customers/me/contact/route.js +95 -0
  12. package/.medusa/server/src/api/store/customers/me/contact/verify/route.js +83 -0
  13. package/.medusa/server/src/api/store/customers/me/route.js +53 -0
  14. package/.medusa/server/src/api/store/customers/otp/send/route.js +1 -6
  15. package/.medusa/server/src/api/store/customers/otp/verify/route.js +95 -3
  16. package/.medusa/server/src/api/store/customers/route.js +89 -0
  17. package/.medusa/server/src/config.js +32 -23
  18. package/.medusa/server/src/modules/otp-verification/service.js +72 -1
  19. package/.medusa/server/src/providers/phonepass/index.js +9 -0
  20. package/.medusa/server/src/providers/phonepass/service.js +133 -0
  21. package/.medusa/server/src/subscribers/password-reset.js +1 -42
  22. package/.medusa/server/src/workflows/change-password.js +40 -64
  23. package/.medusa/server/src/workflows/send-contact-change-otp-workflow.js +41 -0
  24. package/.medusa/server/src/workflows/steps/determine-contact-method-step.js +8 -2
  25. package/.medusa/server/src/workflows/steps/generate-contact-change-otp-step.js +24 -0
  26. package/.medusa/server/src/workflows/steps/index.js +6 -2
  27. package/.medusa/server/src/workflows/steps/send-notification-step.js +1 -11
  28. package/.medusa/server/src/workflows/steps/sync-phonepass-entity-id-step.js +63 -0
  29. package/.medusa/server/src/workflows/steps/update-password-step.js +21 -29
  30. package/.medusa/server/src/workflows/update-contact-workflow.js +100 -0
  31. package/.medusa/server/src/workflows/verify-phone.js +11 -4
  32. package/README.md +363 -223
  33. package/package.json +3 -1
  34. package/.medusa/server/src/subscribers/customer-updated.js +0 -100
@@ -23,8 +23,6 @@ const config_1 = require("../config");
23
23
  * Medusa's built-in route is used.
24
24
  */
25
25
  async function passwordResetHandler({ event: { data }, container, }) {
26
- console.log("[password-reset] Subscriber triggered");
27
- console.log("[password-reset] Event data received:", JSON.stringify(data, null, 2));
28
26
  // Extract email and token with defensive checks for different event data structures
29
27
  let email;
30
28
  let token;
@@ -57,7 +55,6 @@ async function passwordResetHandler({ event: { data }, container, }) {
57
55
  });
58
56
  return;
59
57
  }
60
- console.log("[password-reset] Extracted email and token", { email, tokenLength: token.length });
61
58
  // Resolve notification service with error handling
62
59
  let notificationService;
63
60
  try {
@@ -71,10 +68,6 @@ async function passwordResetHandler({ event: { data }, container, }) {
71
68
  console.error("[password-reset] Notification service is not configured");
72
69
  return;
73
70
  }
74
- console.log("[password-reset] Notification service resolved", {
75
- hasCreate: typeof notificationService.create === "function",
76
- hasCreateNotifications: typeof notificationService.createNotifications === "function"
77
- });
78
71
  // Get password reset configuration from plugin options
79
72
  const configModule = container.resolve(utils_1.ContainerRegistrationKeys.CONFIG_MODULE);
80
73
  const pluginOptions = (0, config_1.resolveCustomerRegistrationOptions)(configModule);
@@ -133,53 +126,19 @@ async function passwordResetHandler({ event: { data }, container, }) {
133
126
  template: htmlContent, // Some providers expect 'template' field
134
127
  subject: pluginOptions.password_reset.subject, // Include subject at root level too
135
128
  };
136
- console.log("[password-reset] Prepared payload:", JSON.stringify({
137
- to: payload.to,
138
- channel: payload.channel,
139
- subject: payload.subject,
140
- data: {
141
- subject: payload.data.subject,
142
- email: payload.data.email,
143
- hasToken: !!payload.data.token,
144
- hasHtml: !!payload.data.html,
145
- hasText: !!payload.data.text,
146
- },
147
- hasHtml: !!payload.html,
148
- hasText: !!payload.text,
149
- hasBody: !!payload.body,
150
- hasTemplate: !!payload.template,
151
- }, null, 2));
152
129
  try {
153
- console.log("[password-reset] Attempting to send notification...");
154
130
  // Send password reset email using notification service
155
131
  if (typeof notificationService.create === "function") {
156
- console.log("[password-reset] Using notificationService.create method");
157
132
  const result = await notificationService.create(payload);
158
- console.log("[password-reset] Notification service.create result:", result);
159
133
  }
160
134
  else if (typeof notificationService.createNotifications === "function") {
161
- console.log("[password-reset] Using notificationService.createNotifications method");
162
135
  const result = await notificationService.createNotifications([payload]);
163
- console.log("[password-reset] Notification service.createNotifications result:", result);
164
136
  }
165
137
  else {
166
- console.error("[password-reset] Notification service does not support sending notifications", {
167
- serviceType: typeof notificationService,
168
- serviceKeys: Object.keys(notificationService || {})
169
- });
170
138
  return;
171
139
  }
172
- console.log(`[password-reset] ✓ Password reset email sent successfully to ${email}`);
173
140
  }
174
141
  catch (error) {
175
- console.error(`[password-reset] ✗ Failed to send password reset email to ${email}:`, error);
176
- if (error instanceof Error) {
177
- console.error("[password-reset] Error details:", {
178
- message: error.message,
179
- stack: error.stack,
180
- name: error.name
181
- });
182
- }
183
142
  // Don't throw - subscriber errors shouldn't break the main flow
184
143
  }
185
144
  }
@@ -193,4 +152,4 @@ async function passwordResetHandler({ event: { data }, container, }) {
193
152
  exports.config = {
194
153
  event: "auth.password_reset",
195
154
  };
196
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFzc3dvcmQtcmVzZXQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvc3Vic2NyaWJlcnMvcGFzc3dvcmQtcmVzZXQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBdUNBLHVDQTBMQztBQTdORCxxREFBMkY7QUFDM0Ysa0VBQW1FO0FBQ25FLHNDQUdrQjtBQWFsQjs7Ozs7Ozs7Ozs7Ozs7OztHQWdCRztBQUNZLEtBQUssVUFBVSxvQkFBb0IsQ0FBQyxFQUNqRCxLQUFLLEVBQUUsRUFBRSxJQUFJLEVBQUUsRUFDZixTQUFTLEdBQzhCO0lBQ3ZDLE9BQU8sQ0FBQyxHQUFHLENBQUMsdUNBQXVDLENBQUMsQ0FBQTtJQUNwRCxPQUFPLENBQUMsR0FBRyxDQUFDLHVDQUF1QyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFBO0lBRW5GLG9GQUFvRjtJQUNwRixJQUFJLEtBQXlCLENBQUE7SUFDN0IsSUFBSSxLQUF5QixDQUFBO0lBRTdCLGtEQUFrRDtJQUNsRCxJQUFJLElBQUksSUFBSSxPQUFPLElBQUksS0FBSyxRQUFRLEVBQUUsQ0FBQztRQUNyQyxvQkFBb0I7UUFDcEIsS0FBSyxHQUFJLElBQUksQ0FBQyxLQUFnQixJQUFLLElBQUksQ0FBQyxjQUF5QixDQUFBO1FBQ2pFLEtBQUssR0FBSSxJQUFJLENBQUMsS0FBZ0IsSUFBSyxJQUFJLENBQUMsV0FBc0IsSUFBSyxJQUFJLENBQUMsb0JBQStCLENBQUE7UUFFdkcsMEJBQTBCO1FBQzFCLElBQUksQ0FBQyxLQUFLLElBQUssSUFBWSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ2pDLE1BQU0sVUFBVSxHQUFJLElBQVksQ0FBQyxJQUFJLENBQUE7WUFDckMsS0FBSyxHQUFHLFVBQVUsQ0FBQyxLQUFLLElBQUksVUFBVSxDQUFDLGNBQWMsQ0FBQTtZQUNyRCxLQUFLLEdBQUcsVUFBVSxDQUFDLEtBQUss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
155
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFzc3dvcmQtcmVzZXQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvc3Vic2NyaWJlcnMvcGFzc3dvcmQtcmVzZXQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBdUNBLHVDQTRJQztBQS9LRCxxREFBMkY7QUFDM0Ysa0VBQW1FO0FBQ25FLHNDQUdrQjtBQWFsQjs7Ozs7Ozs7Ozs7Ozs7OztHQWdCRztBQUNZLEtBQUssVUFBVSxvQkFBb0IsQ0FBQyxFQUNqRCxLQUFLLEVBQUUsRUFBRSxJQUFJLEVBQUUsRUFDZixTQUFTLEdBQzhCO0lBQ3ZDLG9GQUFvRjtJQUNwRixJQUFJLEtBQXlCLENBQUE7SUFDN0IsSUFBSSxLQUF5QixDQUFBO0lBRTdCLGtEQUFrRDtJQUNsRCxJQUFJLElBQUksSUFBSSxPQUFPLElBQUksS0FBSyxRQUFRLEVBQUUsQ0FBQztRQUNyQyxvQkFBb0I7UUFDcEIsS0FBSyxHQUFJLElBQUksQ0FBQyxLQUFnQixJQUFLLElBQUksQ0FBQyxjQUF5QixDQUFBO1FBQ2pFLEtBQUssR0FBSSxJQUFJLENBQUMsS0FBZ0IsSUFBSyxJQUFJLENBQUMsV0FBc0IsSUFBSyxJQUFJLENBQUMsb0JBQStCLENBQUE7UUFFdkcsMEJBQTBCO1FBQzFCLElBQUksQ0FBQyxLQUFLLElBQUssSUFBWSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ2pDLE1BQU0sVUFBVSxHQUFJLElBQVksQ0FBQyxJQUFJLENBQUE7WUFDckMsS0FBSyxHQUFHLFVBQVUsQ0FBQyxLQUFLLElBQUksVUFBVSxDQUFDLGNBQWMsQ0FBQTtZQUNyRCxLQUFLLEdBQUcsVUFBVSxDQUFDLEtBQUssSUFBSSxVQUFVLENBQUMsV0FBVyxJQUFJLFVBQVUsQ0FBQyxvQkFBb0IsQ0FBQTtRQUN2RixDQUFDO0lBQ0gsQ0FBQztJQUVELDJCQUEyQjtJQUMzQixJQUFJLENBQUMsS0FBSyxJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsSUFBSSxDQUFDLEtBQUss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
@@ -6,15 +6,12 @@ const utils_1 = require("@medusajs/framework/utils");
6
6
  const password_validation_1 = require("../utils/password-validation");
7
7
  const password_hashing_1 = require("../utils/password-hashing");
8
8
  const validatePasswordStep = (0, workflows_sdk_1.createStep)("validate-password", async ({ new_password, confirm_password }) => {
9
- // Validate password strength
10
9
  (0, password_validation_1.validatePasswordStrength)(new_password);
11
- // Validate passwords match
12
10
  (0, password_validation_1.validatePasswordMatch)(new_password, confirm_password);
13
11
  return new workflows_sdk_1.StepResponse({ validated: true });
14
12
  });
15
13
  const verifyCustomerStep = (0, workflows_sdk_1.createStep)("verify-customer", async ({ customer_id }, { container }) => {
16
14
  const customerService = container.resolve(utils_1.Modules.CUSTOMER);
17
- // Verify customer exists
18
15
  const customer = await customerService.retrieveCustomer(customer_id);
19
16
  if (!customer) {
20
17
  throw new utils_1.MedusaError(utils_1.MedusaError.Types.NOT_FOUND, "Customer not found");
@@ -22,96 +19,75 @@ const verifyCustomerStep = (0, workflows_sdk_1.createStep)("verify-customer", as
22
19
  return new workflows_sdk_1.StepResponse({ customer_id, verified: true });
23
20
  });
24
21
  const verifyOldPasswordStep = (0, workflows_sdk_1.createStep)("verify-old-password", async ({ customer_id, old_password }, { container }) => {
25
- // Get customer to retrieve email
26
22
  const customerService = container.resolve(utils_1.Modules.CUSTOMER);
27
23
  const customer = await customerService.retrieveCustomer(customer_id);
28
- if (!customer || !customer.email) {
29
- throw new utils_1.MedusaError(utils_1.MedusaError.Types.NOT_FOUND, "Customer not found or email missing");
24
+ if (!customer) {
25
+ throw new utils_1.MedusaError(utils_1.MedusaError.Types.NOT_FOUND, "Customer not found");
26
+ }
27
+ // Resolve provider and entity_id — supports both emailpass and phonepass
28
+ const provider = customer.email ? "emailpass" : "phonepass";
29
+ const entity_id = customer.email
30
+ ? customer.email.toLowerCase()
31
+ : customer.phone;
32
+ if (!entity_id) {
33
+ throw new utils_1.MedusaError(utils_1.MedusaError.Types.NOT_FOUND, "Customer has no email or phone — cannot verify password");
30
34
  }
31
- // Get PostgreSQL connection (Knex instance) from container
32
35
  const knex = container.resolve(utils_1.ContainerRegistrationKeys.PG_CONNECTION);
33
- // Find provider_identity by entity_id (customer email) and provider
34
- const providerIdentityResult = await knex.raw(`SELECT id, provider_metadata
36
+ const result = await knex.raw(`SELECT provider_metadata
35
37
  FROM provider_identity
36
- WHERE entity_id = ? AND provider = 'emailpass'
37
- LIMIT 1`, [customer.email.toLowerCase()]);
38
- const providerIdentity = providerIdentityResult.rows?.[0] || providerIdentityResult[0]?.[0];
38
+ WHERE entity_id = ? AND provider = ?
39
+ LIMIT 1`, [entity_id, provider]);
40
+ const providerIdentity = result.rows?.[0] ?? result[0]?.[0];
39
41
  if (!providerIdentity) {
40
42
  throw new utils_1.MedusaError(utils_1.MedusaError.Types.NOT_FOUND, "Provider identity not found for customer");
41
43
  }
42
- // Get password hash from provider_metadata
43
- const providerMetadata = providerIdentity.provider_metadata || {};
44
- const passwordHash = providerMetadata.password;
44
+ const passwordHash = providerIdentity.provider_metadata?.password;
45
45
  if (!passwordHash) {
46
46
  throw new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, "No password set for this account");
47
47
  }
48
- // Verify old password using scrypt (matching Medusa's format)
49
48
  const isValid = await (0, password_hashing_1.verifyPassword)(old_password, passwordHash);
50
49
  if (!isValid) {
51
50
  throw new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, "Current password is incorrect");
52
51
  }
53
52
  return new workflows_sdk_1.StepResponse({ verified: true });
54
53
  });
55
- const hashPasswordStep = (0, workflows_sdk_1.createStep)("hash-password", async ({ password }) => {
56
- // Use scrypt to match Medusa's password hashing format
57
- const passwordHash = await (0, password_hashing_1.hashPassword)(password);
58
- return new workflows_sdk_1.StepResponse({ password_hash: passwordHash });
59
- });
60
- const updatePasswordStep = (0, workflows_sdk_1.createStep)("update-password", async ({ customer_id, password_hash }, { container }) => {
61
- // Get customer to retrieve email
54
+ const changePasswordUpdateStep = (0, workflows_sdk_1.createStep)("change-password-update", async ({ customer_id, new_password }, { container }) => {
62
55
  const customerService = container.resolve(utils_1.Modules.CUSTOMER);
63
56
  const customer = await customerService.retrieveCustomer(customer_id);
64
- if (!customer || !customer.email) {
65
- throw new utils_1.MedusaError(utils_1.MedusaError.Types.NOT_FOUND, "Customer not found or email missing");
57
+ if (!customer) {
58
+ throw new utils_1.MedusaError(utils_1.MedusaError.Types.NOT_FOUND, "Customer not found");
66
59
  }
67
- // Get PostgreSQL connection (Knex instance) from container
68
- const knex = container.resolve(utils_1.ContainerRegistrationKeys.PG_CONNECTION);
69
- // Find provider_identity by entity_id (customer email) and provider
70
- const providerIdentityResult = await knex.raw(`SELECT id, provider_metadata
71
- FROM provider_identity
72
- WHERE entity_id = ? AND provider = 'emailpass'
73
- LIMIT 1`, [customer.email.toLowerCase()]);
74
- const providerIdentity = providerIdentityResult.rows?.[0] || providerIdentityResult[0]?.[0];
75
- if (!providerIdentity) {
76
- throw new utils_1.MedusaError(utils_1.MedusaError.Types.NOT_FOUND, "Provider identity not found for customer");
60
+ // Resolve provider and entity_id supports both emailpass and phonepass
61
+ const provider = customer.email ? "emailpass" : "phonepass";
62
+ const entity_id = customer.email
63
+ ? customer.email.toLowerCase()
64
+ : customer.phone;
65
+ if (!entity_id) {
66
+ throw new utils_1.MedusaError(utils_1.MedusaError.Types.NOT_FOUND, "Customer has no email or phone — cannot update password");
67
+ }
68
+ // Delegate to AUTH module — it handles hashing internally
69
+ const authService = container.resolve(utils_1.Modules.AUTH);
70
+ const updateResult = await authService.updateProvider(provider, {
71
+ entity_id,
72
+ password: new_password,
73
+ });
74
+ if (!updateResult.success) {
75
+ throw new utils_1.MedusaError(utils_1.MedusaError.Types.UNEXPECTED_STATE, updateResult.error || "Failed to update password");
77
76
  }
78
- // Update password hash in provider_metadata
79
- await knex.raw(`UPDATE provider_identity
80
- SET provider_metadata = jsonb_set(
81
- COALESCE(provider_metadata, '{}'::jsonb),
82
- '{password}',
83
- to_jsonb(?::text)
84
- ),
85
- updated_at = NOW()
86
- WHERE id = ?`, [password_hash, providerIdentity.id]);
87
77
  return new workflows_sdk_1.StepResponse({ customer_id, success: true });
88
78
  });
89
79
  exports.changePasswordWorkflow = (0, workflows_sdk_1.createWorkflow)("change-password", (input) => {
90
- // Validate password strength and match (runs during execution)
91
80
  validatePasswordStep({
92
81
  new_password: input.new_password,
93
82
  confirm_password: input.confirm_password,
94
83
  });
95
- // Verify customer exists
96
- const { customer_id } = verifyCustomerStep({
97
- customer_id: input.customer_id,
98
- });
99
- // Verify old password
100
- verifyOldPasswordStep({
84
+ const { customer_id } = verifyCustomerStep({ customer_id: input.customer_id });
85
+ verifyOldPasswordStep({ customer_id, old_password: input.old_password });
86
+ const { customer_id: updated_customer_id } = changePasswordUpdateStep({
101
87
  customer_id,
102
- old_password: input.old_password,
103
- });
104
- // Hash the new password
105
- const { password_hash } = hashPasswordStep({ password: input.new_password });
106
- // Update password hash in database
107
- const { customer_id: updated_customer_id } = updatePasswordStep({
108
- customer_id,
109
- password_hash,
110
- });
111
- return new workflows_sdk_1.WorkflowResponse({
112
- customer_id: updated_customer_id,
113
- success: true,
88
+ new_password: input.new_password,
114
89
  });
90
+ return new workflows_sdk_1.WorkflowResponse({ customer_id: updated_customer_id, success: true });
115
91
  });
116
92
  exports.default = exports.changePasswordWorkflow;
117
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhbmdlLXBhc3N3b3JkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3dvcmtmbG93cy9jaGFuZ2UtcGFzc3dvcmQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEscUVBSzBDO0FBQzFDLHFEQUlrQztBQUVsQyxzRUFBOEY7QUFDOUYsZ0VBQXdFO0FBU3hFLE1BQU0sb0JBQW9CLEdBQUcsSUFBQSwwQkFBVSxFQUNyQyxtQkFBbUIsRUFDbkIsS0FBSyxFQUNILEVBQUUsWUFBWSxFQUFFLGdCQUFnQixFQUFzRCxFQUN0RixFQUFFO0lBQ0YsNkJBQTZCO0lBQzdCLElBQUEsOENBQXdCLEVBQUMsWUFBWSxDQUFDLENBQUE7SUFFdEMsMkJBQTJCO0lBQzNCLElBQUEsMkNBQXFCLEVBQUMsWUFBWSxFQUFFLGdCQUFnQixDQUFDLENBQUE7SUFFckQsT0FBTyxJQUFJLDRCQUFZLENBQUMsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQTtBQUM5QyxDQUFDLENBQ0YsQ0FBQTtBQUVELE1BQU0sa0JBQWtCLEdBQUcsSUFBQSwwQkFBVSxFQUNuQyxpQkFBaUIsRUFDakIsS0FBSyxFQUFFLEVBQUUsV0FBVyxFQUEyQixFQUFFLEVBQUUsU0FBUyxFQUFFLEVBQUUsRUFBRTtJQUNoRSxNQUFNLGVBQWUsR0FBRyxTQUFTLENBQUMsT0FBTyxDQUN2QyxlQUFPLENBQUMsUUFBUSxDQUNTLENBQUE7SUFFM0IseUJBQXlCO0lBQ3pCLE1BQU0sUUFBUSxHQUFHLE1BQU0sZUFBZSxDQUFDLGdCQUFnQixDQUFDLFdBQVcsQ0FBQyxDQUFBO0lBQ3BFLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUNkLE1BQU0sSUFBSSxtQkFBVyxDQUNuQixtQkFBVyxDQUFDLEtBQUssQ0FBQyxTQUFTLEVBQzNCLG9CQUFvQixDQUNyQixDQUFBO0lBQ0gsQ0FBQztJQUVELE9BQU8sSUFBSSw0QkFBWSxDQUFDLEVBQUUsV0FBVyxFQUFF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
93
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhbmdlLXBhc3N3b3JkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3dvcmtmbG93cy9jaGFuZ2UtcGFzc3dvcmQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEscUVBSzBDO0FBQzFDLHFEQUlrQztBQUVsQyxzRUFBOEY7QUFDOUYsZ0VBQTBEO0FBUzFELE1BQU0sb0JBQW9CLEdBQUcsSUFBQSwwQkFBVSxFQUNyQyxtQkFBbUIsRUFDbkIsS0FBSyxFQUNILEVBQUUsWUFBWSxFQUFFLGdCQUFnQixFQUFzRCxFQUN0RixFQUFFO0lBQ0YsSUFBQSw4Q0FBd0IsRUFBQyxZQUFZLENBQUMsQ0FBQTtJQUN0QyxJQUFBLDJDQUFxQixFQUFDLFlBQVksRUFBRSxnQkFBZ0IsQ0FBQyxDQUFBO0lBQ3JELE9BQU8sSUFBSSw0QkFBWSxDQUFDLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUE7QUFDOUMsQ0FBQyxDQUNGLENBQUE7QUFFRCxNQUFNLGtCQUFrQixHQUFHLElBQUEsMEJBQVUsRUFDbkMsaUJBQWlCLEVBQ2pCLEtBQUssRUFBRSxFQUFFLFdBQVcsRUFBMkIsRUFBRSxFQUFFLFNBQVMsRUFBRSxFQUFFLEVBQUU7SUFDaEUsTUFBTSxlQUFlLEdBQUcsU0FBUyxDQUFDLE9BQU8sQ0FBeUIsZUFBTyxDQUFDLFFBQVEsQ0FBQyxDQUFBO0lBQ25GLE1BQU0sUUFBUSxHQUFHLE1BQU0sZUFBZSxDQUFDLGdCQUFnQixDQUFDLFdBQVcsQ0FBQyxDQUFBO0lBQ3BFLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUNkLE1BQU0sSUFBSSxtQkFBVyxDQUFDLG1CQUFXLENBQUMsS0FBSyxDQUFDLFNBQVMsRUFBRSxvQkFBb0IsQ0FBQyxDQUFBO0lBQzFFLENBQUM7SUFDRCxPQUFPLElBQUksNEJBQVksQ0FBQyxFQUFFLFdBQVcsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQTtBQUMxRCxDQUFD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
@@ -0,0 +1,41 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.sendContactChangeOtpWorkflow = void 0;
4
+ const workflows_sdk_1 = require("@medusajs/framework/workflows-sdk");
5
+ const steps_1 = require("./steps");
6
+ /**
7
+ * Generates an OTP whose JWT payload contains the `new_value` (new phone or
8
+ * email) and sends it to that new contact address — NOT the current one on
9
+ * the customer record. No metadata staging is required.
10
+ */
11
+ exports.sendContactChangeOtpWorkflow = (0, workflows_sdk_1.createWorkflow)("send-contact-change-otp", (input) => {
12
+ const { customer } = (0, steps_1.retrieveCustomerStep)({ customer_id: input.customer_id });
13
+ const { channelConfig } = (0, steps_1.resolveChannelConfigStep)({ type: input.otp_type });
14
+ const { token, expires_at, code } = (0, steps_1.generateContactChangeOtpStep)({
15
+ customer_id: input.customer_id,
16
+ type: input.otp_type,
17
+ new_value: input.new_value,
18
+ contact_type: input.contact_type,
19
+ });
20
+ const { templateData } = (0, steps_1.prepareTemplateDataStep)({
21
+ customer,
22
+ otpCode: code,
23
+ });
24
+ const { renderedContent } = (0, steps_1.loadTemplateStep)({
25
+ templatePath: channelConfig.template || null,
26
+ templateData,
27
+ });
28
+ // Send OTP to the NEW contact value, not customer.phone / customer.email
29
+ const notificationInput = (0, workflows_sdk_1.transform)({ input, channelConfig, templateData, renderedContent }, (data) => ({
30
+ to: data.input.new_value,
31
+ channel: data.channelConfig.channel,
32
+ channelConfig: data.channelConfig,
33
+ templateData: data.templateData,
34
+ renderedContent: data.renderedContent,
35
+ contactType: data.input.contact_type,
36
+ }));
37
+ (0, steps_1.sendNotificationStep)(notificationInput);
38
+ return new workflows_sdk_1.WorkflowResponse({ token, expires_at });
39
+ });
40
+ exports.default = exports.sendContactChangeOtpWorkflow;
41
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VuZC1jb250YWN0LWNoYW5nZS1vdHAtd29ya2Zsb3cuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvd29ya2Zsb3dzL3NlbmQtY29udGFjdC1jaGFuZ2Utb3RwLXdvcmtmbG93LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLHFFQUkwQztBQUUxQyxtQ0FPZ0I7QUFjaEI7Ozs7R0FJRztBQUNVLFFBQUEsNEJBQTRCLEdBQUcsSUFBQSw4QkFBYyxFQUN4RCx5QkFBeUIsRUFDekIsQ0FBQyxLQUFnQyxFQUFnRCxFQUFFO0lBQ2pGLE1BQU0sRUFBRSxRQUFRLEVBQUUsR0FBRyxJQUFBLDRCQUFvQixFQUFDLEVBQUUsV0FBVyxFQUFFLEtBQUssQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFBO0lBRTdFLE1BQU0sRUFBRSxhQUFhLEVBQUUsR0FBRyxJQUFBLGdDQUF3QixFQUFDLEVBQUUsSUFBSSxFQUFFLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFBO0lBRTVFLE1BQU0sRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRSxHQUFHLElBQUEsb0NBQTRCLEVBQUM7UUFDL0QsV0FBVyxFQUFFLEtBQUssQ0FBQyxXQUFXO1FBQzlCLElBQUksRUFBRSxLQUFLLENBQUMsUUFBUTtRQUNwQixTQUFTLEVBQUUsS0FBSyxDQUFDLFNBQVM7UUFDMUIsWUFBWSxFQUFFLEtBQUssQ0FBQyxZQUFZO0tBQ2pDLENBQUMsQ0FBQTtJQUVGLE1BQU0sRUFBRSxZQUFZLEVBQUUsR0FBRyxJQUFBLCtCQUF1QixFQUFDO1FBQy9DLFFBQVE7UUFDUixPQUFPLEVBQUUsSUFBSTtLQUNkLENBQUMsQ0FBQTtJQUVGLE1BQU0sRUFBRSxlQUFlLEVBQUUsR0FBRyxJQUFBLHdCQUFnQixFQUFDO1FBQzNDLFlBQVksRUFBRSxhQUFhLENBQUMsUUFBUSxJQUFJLElBQUk7UUFDNUMsWUFBWTtLQUNiLENBQUMsQ0FBQTtJQUVGLHlFQUF5RTtJQUN6RSxNQUFNLGlCQUFpQixHQUFHLElBQUEseUJBQVMsRUFDakMsRUFBRSxLQUFLLEVBQUUsYUFBYSxFQUFFLFlBQVksRUFBRSxlQUFlLEVBQUUsRUFDdkQsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDVCxFQUFFLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTO1FBQ3hCLE9BQU8sRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDLE9BQU87UUFDbkMsYUFBYSxFQUFFLElBQUksQ0FBQyxhQUFhO1FBQ2pDLFlBQVksRUFBRSxJQUFJLENBQUMsWUFBWTtRQUMvQixlQUFlLEVBQUUsSUFBSSxDQUFDLGVBQWU7UUFDckMsV0FBVyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsWUFBWTtLQUNyQyxDQUFDLENBQ0gsQ0FBQTtJQUNELElBQUEsNEJBQW9CLEVBQUMsaUJBQWlCLENBQUMsQ0FBQTtJQUV2QyxPQUFPLElBQUksZ0NBQWdCLENBQUMsRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLENBQUMsQ0FBQTtBQUNwRCxDQUFDLENBQ0YsQ0FBQTtBQUVELGtCQUFlLG9DQUE0QixDQUFBIn0=
@@ -7,7 +7,13 @@ exports.determineContactMethodStep = (0, workflows_sdk_1.createStep)("determine-
7
7
  const { customer, channelConfig } = input;
8
8
  const channelName = channelConfig.channel.toLowerCase();
9
9
  const contactType = channelName === "email" ? "email" : "phone";
10
- const contactValue = contactType === "email" ? customer.email : customer.phone;
10
+ let contactValue;
11
+ if (contactType === "email") {
12
+ contactValue = customer.email;
13
+ }
14
+ else {
15
+ contactValue = customer.phone;
16
+ }
11
17
  if (!contactValue) {
12
18
  throw new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, contactType === "email"
13
19
  ? "Customer email is required for this verification type"
@@ -18,4 +24,4 @@ exports.determineContactMethodStep = (0, workflows_sdk_1.createStep)("determine-
18
24
  contactType,
19
25
  });
20
26
  });
21
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGV0ZXJtaW5lLWNvbnRhY3QtbWV0aG9kLXN0ZXAuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvd29ya2Zsb3dzL3N0ZXBzL2RldGVybWluZS1jb250YWN0LW1ldGhvZC1zdGVwLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLHFFQUE0RTtBQUM1RSxxREFBdUQ7QUFZMUMsUUFBQSwwQkFBMEIsR0FBRyxJQUFBLDBCQUFVLEVBQ2xELDBCQUEwQixFQUMxQixLQUFLLEVBQ0gsS0FBa0MsRUFDbUIsRUFBRTtJQUN2RCxNQUFNLEVBQUUsUUFBUSxFQUFFLGFBQWEsRUFBRSxHQUFHLEtBQUssQ0FBQTtJQUV6QyxNQUFNLFdBQVcsR0FBRyxhQUFhLENBQUMsT0FBTyxDQUFDLFdBQVcsRUFBRSxDQUFBO0lBQ3ZELE1BQU0sV0FBVyxHQUNmLFdBQVcsS0FBSyxPQUFPLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFBO0lBQzdDLE1BQU0sWUFBWSxHQUNoQixXQUFXLEtBQUssT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFBO0lBRTNELElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUNsQixNQUFNLElBQUksbUJBQVcsQ0FDbkIsbUJBQVcsQ0FBQyxLQUFLLENBQUMsWUFBWSxFQUM5QixXQUFXLEtBQUssT0FBTztZQUNyQixDQUFDLENBQUMsdURBQXVEO1lBQ3pELENBQUMsQ0FBQyw4REFBOEQsQ0FDbkUsQ0FBQTtJQUNILENBQUM7SUFFRCxPQUFPLElBQUksNEJBQVksQ0FBK0I7UUFDcEQsWUFBWTtRQUNaLFdBQVc7S0FDWixDQUFDLENBQUE7QUFDSixDQUFDLENBQ0YsQ0FBQSJ9
27
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGV0ZXJtaW5lLWNvbnRhY3QtbWV0aG9kLXN0ZXAuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvd29ya2Zsb3dzL3N0ZXBzL2RldGVybWluZS1jb250YWN0LW1ldGhvZC1zdGVwLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLHFFQUE0RTtBQUM1RSxxREFBdUQ7QUFZMUMsUUFBQSwwQkFBMEIsR0FBRyxJQUFBLDBCQUFVLEVBQ2xELDBCQUEwQixFQUMxQixLQUFLLEVBQ0gsS0FBa0MsRUFDbUIsRUFBRTtJQUN2RCxNQUFNLEVBQUUsUUFBUSxFQUFFLGFBQWEsRUFBRSxHQUFHLEtBQUssQ0FBQTtJQUV6QyxNQUFNLFdBQVcsR0FBRyxhQUFhLENBQUMsT0FBTyxDQUFDLFdBQVcsRUFBRSxDQUFBO0lBQ3ZELE1BQU0sV0FBVyxHQUNmLFdBQVcsS0FBSyxPQUFPLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFBO0lBRTdDLElBQUksWUFBZ0MsQ0FBQTtJQUVwQyxJQUFJLFdBQVcsS0FBSyxPQUFPLEVBQUUsQ0FBQztRQUM1QixZQUFZLEdBQUcsUUFBUSxDQUFDLEtBQUssQ0FBQTtJQUMvQixDQUFDO1NBQU0sQ0FBQztRQUNOLFlBQVksR0FBRyxRQUFRLENBQUMsS0FBSyxDQUFBO0lBQy9CLENBQUM7SUFFRCxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDbEIsTUFBTSxJQUFJLG1CQUFXLENBQ25CLG1CQUFXLENBQUMsS0FBSyxDQUFDLFlBQVksRUFDOUIsV0FBVyxLQUFLLE9BQU87WUFDckIsQ0FBQyxDQUFDLHVEQUF1RDtZQUN6RCxDQUFDLENBQUMsOERBQThELENBQ25FLENBQUE7SUFDSCxDQUFDO0lBRUQsT0FBTyxJQUFJLDRCQUFZLENBQStCO1FBQ3BELFlBQVk7UUFDWixXQUFXO0tBQ1osQ0FBQyxDQUFBO0FBQ0osQ0FBQyxDQUNGLENBQUEifQ==
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.generateContactChangeOtpStep = void 0;
4
+ const workflows_sdk_1 = require("@medusajs/framework/workflows-sdk");
5
+ const utils_1 = require("@medusajs/framework/utils");
6
+ const otp_verification_1 = require("../../modules/otp-verification");
7
+ /**
8
+ * Generates an OTP for a contact-change request.
9
+ * The new_value and contact_type are embedded in the signed JWT so that no
10
+ * metadata staging on the customer record is required.
11
+ */
12
+ exports.generateContactChangeOtpStep = (0, workflows_sdk_1.createStep)("generate-contact-change-otp", async (input, { container }) => {
13
+ const config = container.resolve(utils_1.ContainerRegistrationKeys.CONFIG_MODULE);
14
+ const jwtSecret = config?.projectConfig
15
+ ?.http?.jwtSecret || "supersecret";
16
+ const otpService = container.resolve(otp_verification_1.OTP_VERIFICATION_MODULE);
17
+ const otpResult = await otpService.generateOtpForContactChange({ customer_id: input.customer_id, type: input.type }, jwtSecret, input.new_value, input.contact_type);
18
+ return new workflows_sdk_1.StepResponse({
19
+ token: otpResult.token,
20
+ expires_at: otpResult.expires_at,
21
+ code: otpResult.code,
22
+ });
23
+ });
24
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuZXJhdGUtY29udGFjdC1jaGFuZ2Utb3RwLXN0ZXAuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvd29ya2Zsb3dzL3N0ZXBzL2dlbmVyYXRlLWNvbnRhY3QtY2hhbmdlLW90cC1zdGVwLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLHFFQUE0RTtBQUM1RSxxREFBcUU7QUFDckUscUVBQXdFO0FBaUJ4RTs7OztHQUlHO0FBQ1UsUUFBQSw0QkFBNEIsR0FBRyxJQUFBLDBCQUFVLEVBQ3BELDZCQUE2QixFQUM3QixLQUFLLEVBQUUsS0FBb0MsRUFBRSxFQUFFLFNBQVMsRUFBRSxFQUFFLEVBQUU7SUFDNUQsTUFBTSxNQUFNLEdBQUcsU0FBUyxDQUFDLE9BQU8sQ0FBQyxpQ0FBeUIsQ0FBQyxhQUFhLENBQUMsQ0FBQTtJQUN6RSxNQUFNLFNBQVMsR0FDWixNQUFNLEVBQUUsYUFBNkU7UUFDcEYsRUFBRSxJQUFJLEVBQUUsU0FBUyxJQUFJLGFBQWEsQ0FBQTtJQUV0QyxNQUFNLFVBQVUsR0FBRyxTQUFTLENBQUMsT0FBTyxDQUF5QiwwQ0FBdUIsQ0FBQyxDQUFBO0lBRXJGLE1BQU0sU0FBUyxHQUFHLE1BQU0sVUFBVSxDQUFDLDJCQUEyQixDQUM1RCxFQUFFLFdBQVcsRUFBRSxLQUFLLENBQUMsV0FBVyxFQUFFLElBQUksRUFBRSxLQUFLLENBQUMsSUFBSSxFQUFFLEVBQ3BELFNBQVMsRUFDVCxLQUFLLENBQUMsU0FBUyxFQUNmLEtBQUssQ0FBQyxZQUFZLENBQ25CLENBQUE7SUFFRCxPQUFPLElBQUksNEJBQVksQ0FBaUM7UUFDdEQsS0FBSyxFQUFFLFNBQVMsQ0FBQyxLQUFLO1FBQ3RCLFVBQVUsRUFBRSxTQUFTLENBQUMsVUFBVTtRQUNoQyxJQUFJLEVBQUUsU0FBUyxDQUFDLElBQUk7S0FDckIsQ0FBQyxDQUFBO0FBQ0osQ0FBQyxDQUNGLENBQUEifQ==
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.updatePasswordStep = exports.findCustomerByEmailStep = exports.prepareTemplateDataStep = exports.generateOtpStep = exports.determineContactMethodStep = exports.retrieveCustomerStep = exports.sendNotificationStep = exports.loadTemplateStep = exports.resolveChannelConfigStep = void 0;
3
+ exports.syncPhonepassEntityIdStep = exports.updatePasswordStep = exports.findCustomerByEmailStep = exports.prepareTemplateDataStep = exports.generateContactChangeOtpStep = exports.generateOtpStep = exports.determineContactMethodStep = exports.retrieveCustomerStep = exports.sendNotificationStep = exports.loadTemplateStep = exports.resolveChannelConfigStep = void 0;
4
4
  var resolve_channel_config_step_1 = require("./resolve-channel-config-step");
5
5
  Object.defineProperty(exports, "resolveChannelConfigStep", { enumerable: true, get: function () { return resolve_channel_config_step_1.resolveChannelConfigStep; } });
6
6
  var load_template_step_1 = require("./load-template-step");
@@ -13,10 +13,14 @@ var determine_contact_method_step_1 = require("./determine-contact-method-step")
13
13
  Object.defineProperty(exports, "determineContactMethodStep", { enumerable: true, get: function () { return determine_contact_method_step_1.determineContactMethodStep; } });
14
14
  var generate_otp_step_1 = require("./generate-otp-step");
15
15
  Object.defineProperty(exports, "generateOtpStep", { enumerable: true, get: function () { return generate_otp_step_1.generateOtpStep; } });
16
+ var generate_contact_change_otp_step_1 = require("./generate-contact-change-otp-step");
17
+ Object.defineProperty(exports, "generateContactChangeOtpStep", { enumerable: true, get: function () { return generate_contact_change_otp_step_1.generateContactChangeOtpStep; } });
16
18
  var prepare_template_data_step_1 = require("./prepare-template-data-step");
17
19
  Object.defineProperty(exports, "prepareTemplateDataStep", { enumerable: true, get: function () { return prepare_template_data_step_1.prepareTemplateDataStep; } });
18
20
  var find_customer_by_email_step_1 = require("./find-customer-by-email-step");
19
21
  Object.defineProperty(exports, "findCustomerByEmailStep", { enumerable: true, get: function () { return find_customer_by_email_step_1.findCustomerByEmailStep; } });
20
22
  var update_password_step_1 = require("./update-password-step");
21
23
  Object.defineProperty(exports, "updatePasswordStep", { enumerable: true, get: function () { return update_password_step_1.updatePasswordStep; } });
22
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvd29ya2Zsb3dzL3N0ZXBzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDZFQUF3RTtBQUEvRCx1SUFBQSx3QkFBd0IsT0FBQTtBQUNqQywyREFBdUQ7QUFBOUMsc0hBQUEsZ0JBQWdCLE9BQUE7QUFDekIsbUVBQStEO0FBQXRELDhIQUFBLG9CQUFvQixPQUFBO0FBQzdCLG1FQUErRDtBQUF0RCw4SEFBQSxvQkFBb0IsT0FBQTtBQUM3QixpRkFBNEU7QUFBbkUsMklBQUEsMEJBQTBCLE9BQUE7QUFDbkMseURBQXFEO0FBQTVDLG9IQUFBLGVBQWUsT0FBQTtBQUN4QiwyRUFBc0U7QUFBN0QscUlBQUEsdUJBQXVCLE9BQUE7QUFDaEMsNkVBQXVFO0FBQTlELHNJQUFBLHVCQUF1QixPQUFBO0FBQ2hDLCtEQUEyRDtBQUFsRCwwSEFBQSxrQkFBa0IsT0FBQSJ9
24
+ var sync_phonepass_entity_id_step_1 = require("./sync-phonepass-entity-id-step");
25
+ Object.defineProperty(exports, "syncPhonepassEntityIdStep", { enumerable: true, get: function () { return sync_phonepass_entity_id_step_1.syncPhonepassEntityIdStep; } });
26
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvd29ya2Zsb3dzL3N0ZXBzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDZFQUF3RTtBQUEvRCx1SUFBQSx3QkFBd0IsT0FBQTtBQUNqQywyREFBdUQ7QUFBOUMsc0hBQUEsZ0JBQWdCLE9BQUE7QUFDekIsbUVBQStEO0FBQXRELDhIQUFBLG9CQUFvQixPQUFBO0FBQzdCLG1FQUErRDtBQUF0RCw4SEFBQSxvQkFBb0IsT0FBQTtBQUM3QixpRkFBNEU7QUFBbkUsMklBQUEsMEJBQTBCLE9BQUE7QUFDbkMseURBQXFEO0FBQTVDLG9IQUFBLGVBQWUsT0FBQTtBQUN4Qix1RkFBaUY7QUFBeEUsZ0pBQUEsNEJBQTRCLE9BQUE7QUFDckMsMkVBQXNFO0FBQTdELHFJQUFBLHVCQUF1QixPQUFBO0FBQ2hDLDZFQUF1RTtBQUE5RCxzSUFBQSx1QkFBdUIsT0FBQTtBQUNoQywrREFBMkQ7QUFBbEQsMEhBQUEsa0JBQWtCLE9BQUE7QUFDM0IsaUZBQTJFO0FBQWxFLDBJQUFBLHlCQUF5QixPQUFBIn0=
@@ -123,43 +123,33 @@ function prepareSmsPayload(to, channel, renderedContent) {
123
123
  exports.sendNotificationStep = (0, workflows_sdk_1.createStep)("send-notification", async (input, { container }) => {
124
124
  let payload;
125
125
  if (input.contactType === "email") {
126
- console.log("[send-notification] Preparing email payload");
127
126
  payload = prepareEmailPayload(input.to, input.renderedContent, input.channelConfig, input.templateData);
128
- console.log("Email payload:", JSON.stringify(payload, null, 2));
129
127
  }
130
128
  else {
131
- console.log("[send-notification] Preparing SMS payload");
132
129
  payload = prepareSmsPayload(input.to, input.channel, input.renderedContent);
133
- console.log("SMS payload:", JSON.stringify(payload, null, 2));
134
130
  }
135
131
  // Use notification service with payload structure matching sendNotificationsStep
136
132
  const notificationService = container.resolve(utils_1.Modules.NOTIFICATION);
137
133
  if (!notificationService) {
138
134
  throw new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, "Notification service is not configured.");
139
135
  }
140
- console.log("=== [send-notification] Attempting to send ===");
141
- console.log("Payload:", JSON.stringify(payload, null, 2));
142
136
  // Use create method with payload structure matching @medusajs/medusa/core-flows
143
137
  try {
144
138
  if (typeof notificationService.create === "function") {
145
139
  await notificationService.create(payload);
146
- console.log("[send-notification] Successfully sent using notificationService.create");
147
140
  }
148
141
  else if (typeof notificationService.createNotifications === "function") {
149
142
  await notificationService.createNotifications([payload]);
150
- console.log("[send-notification] Successfully sent using notificationService.createNotifications");
151
143
  }
152
144
  else {
153
145
  throw new utils_1.MedusaError(utils_1.MedusaError.Types.UNEXPECTED_STATE, "Notification service does not support sending notifications.");
154
146
  }
155
147
  }
156
148
  catch (error) {
157
- console.error("[send-notification] Failed to send notification:", error);
158
149
  throw new utils_1.MedusaError(utils_1.MedusaError.Types.UNEXPECTED_STATE, `Failed to send notification: ${error instanceof Error ? error.message : String(error)}`);
159
150
  }
160
- console.log("=== [send-notification] Notification Sent Successfully ===");
161
151
  return new workflows_sdk_1.StepResponse({
162
152
  sent: true,
163
153
  });
164
154
  });
165
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VuZC1ub3RpZmljYXRpb24tc3RlcC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy93b3JrZmxvd3Mvc3RlcHMvc2VuZC1ub3RpZmljYXRpb24tc3RlcC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxxRUFBNEU7QUFDNUUscURBQWdFO0FBQ2hFLDRFQUFtRztBQUNuRywyQ0FBNEI7QUFnQjVCOzs7R0FHRztBQUNILFNBQVMsbUJBQW1CLENBQzFCLEVBQVUsRUFDVixlQUE4QixFQUM5QixhQUFrQixFQUNsQixZQUEwQjtJQUUxQixpRUFBaUU7SUFDakUsSUFBSSxTQUFTLEdBQUcsZUFBZSxDQUFBO0lBQy9CLElBQUksQ0FBQyxTQUFTLElBQUksWUFBWSxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBQ25DLHlDQUF5QztRQUN6QywwRkFBMEY7UUFDMUYsdUVBQXVFO1FBQ3ZFLE1BQU0sbUJBQW1CLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FDdEMsU0FBUyxFQUNULHNEQUFzRCxDQUN2RCxDQUFBO1FBRUQsU0FBUyxHQUFHLElBQUEsZ0NBQXFCLEVBQUMsbUJBQW1CLEVBQUU7WUFDckQsR0FBRyxFQUFFLFlBQVksQ0FBQyxHQUFHO1lBQ3JCLGFBQWEsRUFBRSxZQUFZLENBQUMsYUFBYSxJQUFJLFVBQVU7U0FDeEQsQ0FBQyxDQUFBO1FBRUYscURBQXFEO1FBQ3JELElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUNmLE1BQU0sWUFBWSxHQUFHLFlBQVksQ0FBQyxhQUFhLElBQUksVUFBVSxDQUFBO1lBQzdELFNBQVMsR0FBRzs7Ozt1QkFJSyxZQUFZOzs7Z0JBR25CLFlBQVksQ0FBQyxHQUFHOzs7Ozs7O09BT3pCLENBQUMsSUFBSSxFQUFFLENBQUE7UUFDVixDQUFDO0lBQ0gsQ0FBQztJQUVELHNDQUFzQztJQUN0QyxNQUFNLFNBQVMsR0FBRyxTQUFT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
155
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VuZC1ub3RpZmljYXRpb24tc3RlcC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy93b3JrZmxvd3Mvc3RlcHMvc2VuZC1ub3RpZmljYXRpb24tc3RlcC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxxRUFBNEU7QUFDNUUscURBQWdFO0FBQ2hFLDRFQUFtRztBQUNuRywyQ0FBNEI7QUFnQjVCOzs7R0FHRztBQUNILFNBQVMsbUJBQW1CLENBQzFCLEVBQVUsRUFDVixlQUE4QixFQUM5QixhQUFrQixFQUNsQixZQUEwQjtJQUUxQixpRUFBaUU7SUFDakUsSUFBSSxTQUFTLEdBQUcsZUFBZSxDQUFBO0lBQy9CLElBQUksQ0FBQyxTQUFTLElBQUksWUFBWSxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBQ25DLHlDQUF5QztRQUN6QywwRkFBMEY7UUFDMUYsdUVBQXVFO1FBQ3ZFLE1BQU0sbUJBQW1CLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FDdEMsU0FBUyxFQUNULHNEQUFzRCxDQUN2RCxDQUFBO1FBRUQsU0FBUyxHQUFHLElBQUEsZ0NBQXFCLEVBQUMsbUJBQW1CLEVBQUU7WUFDckQsR0FBRyxFQUFFLFlBQVksQ0FBQyxHQUFHO1lBQ3JCLGFBQWEsRUFBRSxZQUFZLENBQUMsYUFBYSxJQUFJLFVBQVU7U0FDeEQsQ0FBQyxDQUFBO1FBRUYscURBQXFEO1FBQ3JELElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUNmLE1BQU0sWUFBWSxHQUFHLFlBQVksQ0FBQyxhQUFhLElBQUksVUFBVSxDQUFBO1lBQzdELFNBQVMsR0FBRzs7Ozt1QkFJSyxZQUFZOzs7Z0JBR25CLFlBQVksQ0FBQyxHQUFHOzs7Ozs7O09BT3pCLENBQUMsSUFBSSxFQUFFLENBQUE7UUFDVixDQUFDO0lBQ0gsQ0FBQztJQUVELHNDQUFzQztJQUN0QyxNQUFNLFNBQVMsR0FBRyxTQUFT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
@@ -0,0 +1,63 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.syncPhonepassEntityIdStep = void 0;
4
+ const workflows_sdk_1 = require("@medusajs/framework/workflows-sdk");
5
+ const utils_1 = require("@medusajs/framework/utils");
6
+ /**
7
+ * After a customer verifies a new phone number, update the phonepass
8
+ * provider_identity.entity_id so the customer can log in with the new number.
9
+ *
10
+ * This is needed because phonepass.authenticate() looks up the identity by
11
+ * entity_id. If the customer changed their phone and the entity_id is stale,
12
+ * login silently fails even though the password is correct.
13
+ */
14
+ exports.syncPhonepassEntityIdStep = (0, workflows_sdk_1.createStep)("sync-phonepass-entity-id", async (input, { container }) => {
15
+ const { login_identifier } = input;
16
+ // Only sync when phonepass is actually used for login
17
+ if (login_identifier !== "phone" && login_identifier !== "both") {
18
+ return new workflows_sdk_1.StepResponse({ synced: false, old_phone: null, new_phone: null }, null);
19
+ }
20
+ const knex = container.resolve(utils_1.ContainerRegistrationKeys.PG_CONNECTION);
21
+ // Get the customer's current phone
22
+ const customerRow = await knex.raw(`SELECT phone FROM customer WHERE id = ? LIMIT 1`, [input.customer_id]);
23
+ const currentPhone = (customerRow.rows?.[0] ?? customerRow[0]?.[0])?.phone ?? null;
24
+ if (!currentPhone) {
25
+ return new workflows_sdk_1.StepResponse({ synced: false, old_phone: null, new_phone: null }, null);
26
+ }
27
+ // Find the auth_identity for this customer
28
+ const authRow = await knex.raw(`SELECT id FROM auth_identity WHERE app_metadata->>'customer_id' = ? LIMIT 1`, [input.customer_id]);
29
+ const authIdentityId = (authRow.rows?.[0] ?? authRow[0]?.[0])?.id ?? null;
30
+ if (!authIdentityId) {
31
+ return new workflows_sdk_1.StepResponse({ synced: false, old_phone: null, new_phone: null }, null);
32
+ }
33
+ // Find the phonepass provider_identity linked to this auth identity
34
+ const piRow = await knex.raw(`SELECT id, entity_id
35
+ FROM provider_identity
36
+ WHERE auth_identity_id = ? AND provider = 'phonepass'
37
+ LIMIT 1`, [authIdentityId]);
38
+ const pi = piRow.rows?.[0] ?? piRow[0]?.[0] ?? null;
39
+ if (!pi) {
40
+ // No phonepass identity exists — nothing to sync
41
+ return new workflows_sdk_1.StepResponse({ synced: false, old_phone: null, new_phone: currentPhone }, null);
42
+ }
43
+ const oldPhone = pi.entity_id;
44
+ if (oldPhone === currentPhone) {
45
+ // entity_id is already up to date
46
+ return new workflows_sdk_1.StepResponse({ synced: false, old_phone: oldPhone, new_phone: currentPhone }, null);
47
+ }
48
+ await knex.raw(`UPDATE provider_identity
49
+ SET entity_id = ?, updated_at = NOW()
50
+ WHERE id = ?`, [currentPhone, pi.id]);
51
+ return new workflows_sdk_1.StepResponse({ synced: true, old_phone: oldPhone, new_phone: currentPhone }, { provider_identity_id: pi.id, old_phone: oldPhone });
52
+ },
53
+ // Compensation: restore the old entity_id if a later step in the workflow fails.
54
+ // Medusa calls this with `undefined` when no compensation data was set.
55
+ async (compensationData, { container }) => {
56
+ if (!compensationData)
57
+ return;
58
+ const knex = container.resolve(utils_1.ContainerRegistrationKeys.PG_CONNECTION);
59
+ await knex.raw(`UPDATE provider_identity
60
+ SET entity_id = ?, updated_at = NOW()
61
+ WHERE id = ?`, [compensationData.old_phone, compensationData.provider_identity_id]);
62
+ });
63
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3luYy1waG9uZXBhc3MtZW50aXR5LWlkLXN0ZXAuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvd29ya2Zsb3dzL3N0ZXBzL3N5bmMtcGhvbmVwYXNzLWVudGl0eS1pZC1zdGVwLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLHFFQUE0RTtBQUM1RSxxREFBcUU7QUF1QnJFOzs7Ozs7O0dBT0c7QUFDVSxRQUFBLHlCQUF5QixHQUFHLElBQUEsMEJBQVUsRUFDakQsMEJBQTBCLEVBQzFCLEtBQUssRUFBRSxLQUFpQyxFQUFFLEVBQUUsU0FBUyxFQUFFLEVBQXdFLEVBQUU7SUFDL0gsTUFBTSxFQUFFLGdCQUFnQixFQUFFLEdBQUcsS0FBSyxDQUFBO0lBRWxDLHNEQUFzRDtJQUN0RCxJQUFJLGdCQUFnQixLQUFLLE9BQU8sSUFBSSxnQkFBZ0IsS0FBSyxNQUFNLEVBQUUsQ0FBQztRQUNoRSxPQUFPLElBQUksNEJBQVksQ0FDckIsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxFQUNuRCxJQUFJLENBQ0wsQ0FBQTtJQUNILENBQUM7SUFFRCxNQUFNLElBQUksR0FBRyxTQUFTLENBQUMsT0FBTyxDQUFDLGlDQUF5QixDQUFDLGFBQWEsQ0FBQyxDQUFBO0lBRXZFLG1DQUFtQztJQUNuQyxNQUFNLFdBQVcsR0FBRyxNQUFNLElBQUksQ0FBQyxHQUFHLENBQ2hDLGlEQUFpRCxFQUNqRCxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FDcEIsQ0FBQTtJQUNELE1BQU0sWUFBWSxHQUNoQixDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxXQUFXLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssSUFBSSxJQUFJLENBQUE7SUFFL0QsSUFBSSxDQUFDLFlBQVksRUFBRSxD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