@lodashventure/medusa-notification-webhook 4.1.3 → 4.1.5

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.
@@ -9,38 +9,68 @@ const utils_1 = require("@medusajs/framework/utils");
9
9
  const event_hook_1 = require("../modules/event-hook");
10
10
  const call_external_api_1 = __importDefault(require("../workflows/call-external-api"));
11
11
  async function passwordResetHandler({ event: { data }, container, }) {
12
+ console.log("PASSWORD RESET HANDLER - Event data:", JSON.stringify(data));
12
13
  const notificationService = container.resolve(utils_1.Modules.NOTIFICATION);
13
14
  const eventHookService = container.resolve(event_hook_1.EVENT_HOOK_MODULE);
15
+ const customerService = container.resolve(utils_1.Modules.CUSTOMER);
14
16
  const webHookOptions = await eventHookService.getWebHookOptions();
15
17
  const webHookOption = webHookOptions.passwordResetHook;
16
- // Determine the base URL based on user role
17
- const baseUrl = data.role === "admin" || data.role === "member"
18
+ // Extract email from entity_id (which is the email for emailpass provider)
19
+ const email = data.entity_id;
20
+ console.log(`PASSWORD RESET HANDLER - Email extracted: ${email}, Actor type: ${data.actor_type}`);
21
+ // Skip if not an email format (could be LINE or other providers)
22
+ if (!email || !email.includes('@')) {
23
+ console.log(`Skipping password reset for non-email entity: ${email}`);
24
+ return;
25
+ }
26
+ // Try to fetch customer details if actor_type is customer
27
+ let firstName = "";
28
+ let lastName = "";
29
+ let customerId = "";
30
+ if (data.actor_type === "customer") {
31
+ try {
32
+ const customers = await customerService.listCustomers({
33
+ email: email,
34
+ });
35
+ if (customers?.length > 0) {
36
+ const customer = customers[0];
37
+ firstName = customer.first_name || "";
38
+ lastName = customer.last_name || "";
39
+ customerId = customer.id;
40
+ }
41
+ }
42
+ catch (error) {
43
+ console.warn(`Could not fetch customer details for ${email}:`, error);
44
+ }
45
+ }
46
+ // Determine the base URL based on actor type
47
+ const baseUrl = data.actor_type === "user"
18
48
  ? process.env.ADMIN_URL || "http://localhost:9000/app"
19
- : process.env.STOREFRONT_URL || "http://localhost:8000";
49
+ : process.env.STOREFRONT_URL || "http://localhost:3000";
20
50
  // Generate the password reset URL
21
51
  const reset_url = `${baseUrl}/reset-password?token=${data.token}`;
22
52
  // Prepare user display name
23
- const userName = data.first_name && data.last_name
24
- ? `${data.first_name} ${data.last_name}`
25
- : data.first_name || data.email;
53
+ const userName = firstName && lastName
54
+ ? `${firstName} ${lastName}`
55
+ : firstName || email;
26
56
  try {
27
57
  // Send email notification
28
58
  await notificationService.createNotifications({
29
- to: data.email,
59
+ to: email,
30
60
  channel: "email",
31
61
  template: "password-reset",
32
62
  data: {
33
63
  reset_url,
34
- email: data.email,
64
+ email: email,
35
65
  name: userName,
36
- expires_in: "24 hours",
66
+ expires_in: "15 minutes",
37
67
  preview: `Reset your password`,
38
68
  },
39
69
  });
40
- console.log(`Password reset email sent to ${data.email}`);
70
+ console.log(`Password reset email sent to ${email}`);
41
71
  }
42
72
  catch (error) {
43
- console.error(`Failed to send password reset email to ${data.email}:`, error);
73
+ console.error(`Failed to send password reset email to ${email}:`, error);
44
74
  // Don't throw error to prevent blocking the flow
45
75
  }
46
76
  // Execute webhook if configured
@@ -55,9 +85,9 @@ async function passwordResetHandler({ event: { data }, container, }) {
55
85
  name: webHookOption.name || "password-reset",
56
86
  payload: {
57
87
  user: {
58
- id: data.id,
59
- email: data.email,
60
- role: data.role || "customer",
88
+ id: customerId || data.entity_id,
89
+ email: email,
90
+ role: data.actor_type || "customer",
61
91
  name: userName,
62
92
  },
63
93
  reset_url,
@@ -74,10 +104,10 @@ async function passwordResetHandler({ event: { data }, container, }) {
74
104
  payload,
75
105
  },
76
106
  });
77
- console.log(`Password reset webhook called for ${data.email}`);
107
+ console.log(`Password reset webhook called for ${email}`);
78
108
  }
79
109
  catch (error) {
80
- console.error(`Failed to call password reset webhook for ${data.email}:`, error);
110
+ console.error(`Failed to call password reset webhook for ${email}:`, error);
81
111
  // Don't throw error to prevent blocking the flow
82
112
  }
83
113
  }
@@ -85,4 +115,4 @@ async function passwordResetHandler({ event: { data }, container, }) {
85
115
  exports.config = {
86
116
  event: "auth.password_reset",
87
117
  };
88
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFzc3dvcmQtcmVzZXQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvc3Vic2NyaWJlcnMvcGFzc3dvcmQtcmVzZXQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBT0EsdUNBc0dDO0FBM0dELHFEQUFpRTtBQUNqRSxzREFBMEQ7QUFFMUQsdUZBQXFFO0FBRXRELEtBQUssVUFBVSxvQkFBb0IsQ0FBQyxFQUNqRCxLQUFLLEVBQUUsRUFBRSxJQUFJLEVBQUUsRUFDZixTQUFTLEdBUVQ7SUFDQSxNQUFNLG1CQUFtQixHQUFHLFNBQVMsQ0FBQyxPQUFPLENBQzNDLGVBQU8sQ0FBQyxZQUFZLENBQ3JCLENBQUM7SUFDRixNQUFNLGdCQUFnQixHQUFHLFNBQVMsQ0FBQyxPQUFPLENBQ3hDLDhCQUFpQixDQUNsQixDQUFDO0lBRUYsTUFBTSxjQUFjLEdBQUcsTUFBTSxnQkFBZ0IsQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO0lBQ2xFLE1BQU0sYUFBYSxHQUFHLGNBQWMsQ0FBQyxpQkFBaUIsQ0FBQztJQUV2RCw0Q0FBNEM7SUFDNUMsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLElBQUksS0FBSyxPQUFPLElBQUksSUFBSSxDQUFDLElBQUksS0FBSyxRQUFRO1FBQzdELENBQUMsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLFNBQVMsSUFBSSwyQkFBMkI7UUFDdEQsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsY0FBYyxJQUFJLHVCQUF1QixDQUFDO0lBRTFELGtDQUFrQztJQUNsQyxNQUFNLFNBQVMsR0FBRyxHQUFHLE9BQU8seUJBQXlCLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUVsRSw0QkFBNEI7SUFDNUIsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLFVBQVUsSUFBSSxJQUFJLENBQUMsU0FBUztRQUNoRCxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsVUFBVSxJQUFJLElBQUksQ0FBQyxTQUFTLEVB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
118
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFzc3dvcmQtcmVzZXQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvc3Vic2NyaWJlcnMvcGFzc3dvcmQtcmVzZXQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBT0EsdUNBdUlDO0FBNUlELHFEQUFpRTtBQUNqRSxzREFBMEQ7QUFFMUQsdUZBQXFFO0FBRXRELEtBQUssVUFBVSxvQkFBb0IsQ0FBQyxFQUNqRCxLQUFLLEVBQUUsRUFBRSxJQUFJLEVBQUUsRUFDZixTQUFTLEdBS1Q7SUFDQSxPQUFPLENBQUMsR0FBRyxDQUFDLHNDQUFzQyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUUxRSxNQUFNLG1CQUFtQixHQUFHLFNBQVMsQ0FBQyxPQUFPLENBQzNDLGVBQU8sQ0FBQyxZQUFZLENBQ3JCLENBQUM7SUFDRixNQUFNLGdCQUFnQixHQUFHLFNBQVMsQ0FBQyxPQUFPLENBQ3hDLDhCQUFpQixDQUNsQixDQUFDO0lBQ0YsTUFBTSxlQUFlLEdBQUcsU0FBUyxDQUFDLE9BQU8sQ0FBQyxlQUFPLENBQUMsUUFBUSxDQUFDLENBQUM7SUFFNUQsTUFBTSxjQUFjLEdBQUcsTUFBTSxnQkFBZ0IsQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO0lBQ2xFLE1BQU0sYUFBYSxHQUFHLGNBQWMsQ0FBQyxpQkFBaUIsQ0FBQztJQUV2RCwyRUFBMkU7SUFDM0UsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQztJQUU3QixPQUFPLENBQUMsR0FBRyxDQUFDLDZDQUE2QyxLQUFLLGlCQUFpQixJQUFJLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQztJQUVsRyxpRUFBaUU7SUFDakUsSUFBSSxDQUFDLEtBQUssSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztRQUNuQyxPQUFPLENBQUMsR0FBRyxDQUFDLGlEQUFpRCxLQUFLLEVBQUUsQ0FB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
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lodashventure/medusa-notification-webhook",
3
- "version": "4.1.3",
3
+ "version": "4.1.5",
4
4
  "description": "A starter for Medusa plugins.",
5
5
  "author": "Medusa (https://medusajs.com)",
6
6
  "license": "MIT",