@lodashventure/medusa-login-provider 4.1.3 → 4.1.4

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.
@@ -1,4 +1,18 @@
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
+ };
2
16
  var __importDefault = (this && this.__importDefault) || function (mod) {
3
17
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
18
  };
@@ -12,4 +26,6 @@ exports.default = (0, utils_1.ModuleProvider)(utils_1.Modules.AUTH, {
12
26
  // Export the LINE provider for direct access
13
27
  var service_2 = require("./providers/line/service");
14
28
  Object.defineProperty(exports, "LineProvider", { enumerable: true, get: function () { return __importDefault(service_2).default; } });
15
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEscURBQW9FO0FBQ3BFLHVFQUEyRDtBQUUzRCxrQkFBZSxJQUFBLHNCQUFjLEVBQUMsZUFBTyxDQUFDLElBQUksRUFBRTtJQUMxQyxRQUFRLEVBQUUsQ0FBQyxpQkFBbUIsQ0FBQztDQUNoQyxDQUFDLENBQUM7QUFFSCw2Q0FBNkM7QUFDN0Msb0RBQW1FO0FBQTFELHdIQUFBLE9BQU8sT0FBZ0IifQ==
29
+ __exportStar(require("./providers/line/customer-helper"), exports);
30
+ __exportStar(require("./providers/line/utils"), exports);
31
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxxREFBb0U7QUFDcEUsdUVBQTJEO0FBRTNELGtCQUFlLElBQUEsc0JBQWMsRUFBQyxlQUFPLENBQUMsSUFBSSxFQUFFO0lBQzFDLFFBQVEsRUFBRSxDQUFDLGlCQUFtQixDQUFDO0NBQ2hDLENBQUMsQ0FBQztBQUVILDZDQUE2QztBQUM3QyxvREFBbUU7QUFBMUQsd0hBQUEsT0FBTyxPQUFnQjtBQUNoQyxtRUFBaUQ7QUFDakQseURBQXVDIn0=
@@ -0,0 +1,152 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createOrUpdateLineCustomer = createOrUpdateLineCustomer;
4
+ exports.extractCustomerData = extractCustomerData;
5
+ exports.shouldCreateCustomer = shouldCreateCustomer;
6
+ const core_flows_1 = require("@medusajs/medusa/core-flows");
7
+ const utils_1 = require("@medusajs/framework/utils");
8
+ /**
9
+ * Creates or updates a customer account for a LINE authenticated user
10
+ * Uses Medusa's createCustomerAccountWorkflow for proper integration
11
+ */
12
+ async function createOrUpdateLineCustomer(options) {
13
+ const { authIdentityId, userMetadata, container, logger } = options;
14
+ const customerService = container.resolve(utils_1.Modules.CUSTOMER);
15
+ const authService = container.resolve(utils_1.Modules.AUTH);
16
+ const email = userMetadata.email || `line_${userMetadata.line_user_id}@line.me`;
17
+ const firstName = userMetadata.first_name || userMetadata.display_name || "LINE User";
18
+ const lastName = userMetadata.last_name || "";
19
+ try {
20
+ // Check if customer already exists
21
+ const existingCustomers = await customerService.listCustomers({ email });
22
+ if (existingCustomers?.length > 0) {
23
+ // Update existing customer
24
+ const customer = existingCustomers[0];
25
+ await customerService.updateCustomers(customer.id, {
26
+ first_name: firstName,
27
+ last_name: lastName,
28
+ metadata: {
29
+ ...customer.metadata,
30
+ line_user_id: userMetadata.line_user_id,
31
+ line_display_name: userMetadata.display_name,
32
+ line_picture_url: userMetadata.picture_url,
33
+ line_status_message: userMetadata.status_message,
34
+ line_updated_at: new Date().toISOString(),
35
+ },
36
+ });
37
+ // Update auth identity with customer ID
38
+ await authService.updateAuthIdentities({
39
+ id: authIdentityId,
40
+ app_metadata: {
41
+ customer_id: customer.id,
42
+ },
43
+ });
44
+ if (logger) {
45
+ logger.info(`Updated existing customer ${customer.id} for LINE user ${userMetadata.line_user_id}`);
46
+ }
47
+ return { customer, created: false };
48
+ }
49
+ // Create new customer using workflow
50
+ const { result } = await (0, core_flows_1.createCustomerAccountWorkflow)(container).run({
51
+ input: {
52
+ authIdentityId,
53
+ customerData: {
54
+ email,
55
+ first_name: firstName,
56
+ last_name: lastName,
57
+ metadata: {
58
+ line_user_id: userMetadata.line_user_id,
59
+ line_display_name: userMetadata.display_name,
60
+ line_picture_url: userMetadata.picture_url,
61
+ line_status_message: userMetadata.status_message,
62
+ line_created_at: new Date().toISOString(),
63
+ },
64
+ },
65
+ },
66
+ });
67
+ if (logger) {
68
+ logger.info(`Created new customer ${result.id} for LINE user ${userMetadata.line_user_id}`);
69
+ }
70
+ return { customer: result, created: true };
71
+ }
72
+ catch (error) {
73
+ if (logger) {
74
+ logger.error(`Failed to create/update customer for LINE user ${userMetadata.line_user_id}:`, error);
75
+ }
76
+ // Fallback: Try direct customer creation
77
+ try {
78
+ const customer = await customerService.createCustomers({
79
+ email,
80
+ first_name: firstName,
81
+ last_name: lastName,
82
+ metadata: {
83
+ line_user_id: userMetadata.line_user_id,
84
+ line_display_name: userMetadata.display_name,
85
+ line_picture_url: userMetadata.picture_url,
86
+ line_status_message: userMetadata.status_message,
87
+ line_created_at: new Date().toISOString(),
88
+ auth_identity_id: authIdentityId,
89
+ },
90
+ });
91
+ // Update auth identity with customer ID
92
+ await authService.updateAuthIdentities({
93
+ id: authIdentityId,
94
+ app_metadata: {
95
+ customer_id: customer.id,
96
+ },
97
+ });
98
+ if (logger) {
99
+ logger.info(`Created customer ${customer.id} via fallback method for LINE user ${userMetadata.line_user_id}`);
100
+ }
101
+ return { customer, created: true };
102
+ }
103
+ catch (fallbackError) {
104
+ if (logger) {
105
+ logger.error(`Fallback customer creation also failed:`, fallbackError);
106
+ }
107
+ throw fallbackError;
108
+ }
109
+ }
110
+ }
111
+ /**
112
+ * Extract customer data from LINE user metadata
113
+ */
114
+ function extractCustomerData(userMetadata) {
115
+ const email = userMetadata.email || `line_${userMetadata.line_user_id}@line.me`;
116
+ const displayName = userMetadata.name || userMetadata.display_name || "";
117
+ const nameParts = displayName.trim().split(" ");
118
+ return {
119
+ email,
120
+ first_name: userMetadata.first_name || nameParts[0] || "LINE User",
121
+ last_name: userMetadata.last_name || nameParts.slice(1).join(" ") || "",
122
+ metadata: {
123
+ line_user_id: userMetadata.line_user_id,
124
+ line_display_name: userMetadata.display_name,
125
+ line_picture_url: userMetadata.picture_url || userMetadata.picture,
126
+ line_status_message: userMetadata.status_message,
127
+ },
128
+ };
129
+ }
130
+ /**
131
+ * Check if a customer needs to be created based on auth identity
132
+ */
133
+ async function shouldCreateCustomer(authIdentity, container) {
134
+ // Check if customer creation flag is set
135
+ if (!authIdentity.user_metadata?.needs_customer_creation) {
136
+ return false;
137
+ }
138
+ // Check if customer already exists in app_metadata
139
+ if (authIdentity.app_metadata?.customer_id) {
140
+ const customerService = container.resolve(utils_1.Modules.CUSTOMER);
141
+ try {
142
+ await customerService.retrieveCustomer(authIdentity.app_metadata.customer_id);
143
+ return false; // Customer exists
144
+ }
145
+ catch {
146
+ // Customer doesn't exist, should create
147
+ return true;
148
+ }
149
+ }
150
+ return true;
151
+ }
152
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VzdG9tZXItaGVscGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL3Byb3ZpZGVycy9saW5lL2N1c3RvbWVyLWhlbHBlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQTJCQSxnRUFnSEM7QUFLRCxrREFnQkM7QUFLRCxvREFzQkM7QUEzTEQsNERBQTRFO0FBRTVFLHFEQUFvRDtBQXFCcEQ7OztHQUdHO0FBQ0ksS0FBSyxVQUFVLDBCQUEwQixDQUM5QyxPQUFrQztJQUVsQyxNQUFNLEVBQUUsY0FBYyxFQUFFLFlBQVksRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLEdBQUcsT0FBTyxDQUFDO0lBQ3BFLE1BQU0sZUFBZSxHQUFHLFNBQVMsQ0FBQyxPQUFPLENBQUMsZUFBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQzVELE1BQU0sV0FBVyxHQUFHLFNBQVMsQ0FBQyxPQUFPLENBQUMsZUFBTyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBRXBELE1BQU0sS0FBSyxHQUFHLFlBQVksQ0FBQyxLQUFLLElBQUksUUFBUSxZQUFZLENBQUMsWUFBWSxVQUFVLENBQUM7SUFDaEYsTUFBTSxTQUFTLEdBQUcsWUFBWSxDQUFDLFVBQVUsSUFBSSxZQUFZLENBQUMsWUFBWSxJQUFJLFdBQVcsQ0FBQztJQUN0RixNQUFNLFFBQVEsR0FBRyxZQUFZLENBQUMsU0FBUyxJQUFJLEVBQUUsQ0FBQztJQUU5QyxJQUFJLENBQUM7UUFDSCxtQ0FBbUM7UUFDbkMsTUFBTSxpQkFBaUIsR0FBRyxNQUFNLGVBQWUsQ0FBQyxhQUFhLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO1FBRXpFLElBQUksaUJBQWlCLEVBQUUsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQ2xDLDJCQUEyQjtZQUMzQixNQUFNLFFBQVEsR0FBRyxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUV0QyxNQUFNLGVBQWUsQ0FBQyxlQUFlLENBQUMsUUFB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
@@ -5,7 +5,8 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  const utils_1 = require("@medusajs/framework/utils");
7
7
  const service_1 = __importDefault(require("./service"));
8
+ const services = [service_1.default];
8
9
  exports.default = (0, utils_1.ModuleProvider)(utils_1.Modules.AUTH, {
9
- services: [service_1.default],
10
+ services,
10
11
  });
11
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvcHJvdmlkZXJzL2xpbmUvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxxREFBb0U7QUFDcEUsd0RBQTRDO0FBRTVDLGtCQUFlLElBQUEsc0JBQWMsRUFBQyxlQUFPLENBQUMsSUFBSSxFQUFFO0lBQzFDLFFBQVEsRUFBRSxDQUFDLGlCQUFtQixDQUFDO0NBQ2hDLENBQUMsQ0FBQyJ9
12
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvcHJvdmlkZXJzL2xpbmUvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxxREFBb0U7QUFDcEUsd0RBQTRDO0FBRTVDLE1BQU0sUUFBUSxHQUFHLENBQUMsaUJBQW1CLENBQUMsQ0FBQztBQUV2QyxrQkFBZSxJQUFBLHNCQUFjLEVBQUMsZUFBTyxDQUFDLElBQUksRUFBRTtJQUMxQyxRQUFRO0NBQ1QsQ0FBQyxDQUFDIn0=
@@ -7,19 +7,16 @@ const utils_1 = require("@medusajs/framework/utils");
7
7
  const jsonwebtoken_1 = __importDefault(require("jsonwebtoken"));
8
8
  const crypto_1 = __importDefault(require("crypto"));
9
9
  class LineProviderService extends utils_1.AbstractAuthModuleProvider {
10
- constructor({ logger, customerService }, options) {
10
+ constructor(dependencies, options) {
11
11
  super();
12
12
  this.LINE_TOKEN_ENDPOINT = "https://api.line.me/oauth2/v2.1/token";
13
13
  this.LINE_PROFILE_ENDPOINT = "https://api.line.me/v2/profile";
14
- this.LINE_VERIFY_ENDPOINT = "https://api.line.me/oauth2/v2.1/verify";
15
- this.LINE_JWKS_ENDPOINT = "https://api.line.me/oauth2/v2.1/certs";
16
- this.logger_ = logger;
14
+ this.logger_ = dependencies.logger;
17
15
  this.options_ = {
18
16
  autoCreateCustomer: true,
19
17
  syncProfileData: true,
20
18
  ...options,
21
19
  };
22
- this.customerService_ = customerService;
23
20
  }
24
21
  static validateOptions(options) {
25
22
  if (!options.lineChannelId) {
@@ -43,23 +40,18 @@ class LineProviderService extends utils_1.AbstractAuthModuleProvider {
43
40
  }
44
41
  const stateKey = crypto_1.default.randomBytes(32).toString("hex");
45
42
  // Use Medusa's native callback URL pattern
46
- const baseUrl = body?.callback_url || this.options_.callbackUrl || this.options_.lineRedirectUrl;
47
- const callbackUrl = baseUrl?.includes('/auth/customer/line/callback')
48
- ? baseUrl
49
- : `${baseUrl}/auth/customer/line/callback`;
43
+ const baseUrl = body?.callback_url;
50
44
  const state = {
51
- callback_url: callbackUrl,
52
- success_redirect: body?.success_redirect || this.options_.successRedirect || '/',
53
- failure_redirect: body?.failure_redirect || this.options_.failureRedirect || '/login',
45
+ callback_url: baseUrl,
54
46
  };
55
47
  await authIdentityService.setState(stateKey, state);
56
- return this.getRedirect(this.options_.lineChannelId, callbackUrl, stateKey);
48
+ return this.getRedirect(this.options_.lineChannelId, baseUrl, stateKey);
57
49
  }
58
50
  async validateCallback(req, authIdentityService) {
59
51
  const query = req.query ?? {};
60
52
  const body = req.body ?? {};
61
53
  if (query.error) {
62
- this.logger_.error(`LINE OAuth error: ${query.error}`);
54
+ this.logger_.error(`LINE OAuth error: ${query.error} - ${query.error_description} - ${query.error_uri} - state: ${query.state}`);
63
55
  return {
64
56
  success: false,
65
57
  error: `${query.error_description}, read more at: ${query.error_uri}`,
@@ -67,29 +59,41 @@ class LineProviderService extends utils_1.AbstractAuthModuleProvider {
67
59
  }
68
60
  const code = query?.code ?? body?.code;
69
61
  if (!code) {
62
+ this.logger_.error(`LINE callback validation failed: No authorization code provided - query: ${JSON.stringify(query)} - body: ${JSON.stringify(body)}`);
70
63
  return { success: false, error: "No authorization code provided" };
71
64
  }
72
65
  const stateKey = query?.state ?? body?.state;
73
66
  if (!stateKey) {
67
+ this.logger_.error(`LINE callback validation failed: No state parameter provided - code: ${code ? "present" : "missing"}`);
74
68
  return { success: false, error: "No state parameter provided" };
75
69
  }
76
70
  const state = await authIdentityService.getState(stateKey);
77
71
  if (!state) {
72
+ this.logger_.error(`LINE callback validation failed: Invalid state or session expired - stateKey: ${stateKey}`);
78
73
  return { success: false, error: "Invalid state or session expired" };
79
74
  }
80
75
  try {
76
+ this.logger_.info(`Starting LINE token exchange - hasCode: ${!!code}, hasState: ${!!stateKey}`);
81
77
  const tokenResponse = await this.exchangeCodeForTokens(code, state.callback_url);
78
+ this.logger_.info("LINE token exchange successful, verifying ID token");
82
79
  const idTokenPayload = await this.verifyIdToken(tokenResponse.id_token);
80
+ this.logger_.info("ID token verified, fetching user profile");
83
81
  const profile = await this.fetchUserProfile(tokenResponse.access_token);
84
- const { authIdentity, customer } = await this.findOrCreateAuthIdentity(idTokenPayload, profile, tokenResponse, authIdentityService);
82
+ this.logger_.info(`LINE user profile fetched successfully - userId: ${profile.userId}, displayName: ${profile.displayName}, hasEmail: ${!!idTokenPayload.email}`);
83
+ const { authIdentity } = await this.findOrCreateAuthIdentity(idTokenPayload, profile, tokenResponse, authIdentityService);
84
+ const profileRes = await fetch("https://api.line.me/v2/profile", {
85
+ headers: { Authorization: `Bearer ${tokenResponse.access_token}` },
86
+ }).then((res) => res.json());
85
87
  return {
86
88
  success: true,
87
89
  authIdentity,
88
90
  };
89
91
  }
90
92
  catch (error) {
91
- this.logger_.error("LINE callback validation failed:", error);
92
- return { success: false, error: error.message };
93
+ const errorMessage = error instanceof Error ? error.message : String(error);
94
+ const errorStack = error instanceof Error ? error.stack : undefined;
95
+ this.logger_.error(`LINE callback validation failed: ${errorMessage} - code: ${code ? "present" : "missing"}, state: ${stateKey ? "present" : "missing"}, stack: ${errorStack}`);
96
+ return { success: false, error: errorMessage };
93
97
  }
94
98
  }
95
99
  async exchangeCodeForTokens(code, redirectUri) {
@@ -108,6 +112,7 @@ class LineProviderService extends utils_1.AbstractAuthModuleProvider {
108
112
  });
109
113
  if (!response.ok) {
110
114
  const errorData = await response.text();
115
+ this.logger_.error(`LINE token exchange failed - status: ${response.status}, statusText: ${response.statusText}, errorData: ${errorData}, clientId: ${this.options_.lineChannelId}`);
111
116
  throw new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, `Failed to exchange authorization code: ${response.status} ${errorData}`);
112
117
  }
113
118
  return response.json();
@@ -138,6 +143,7 @@ class LineProviderService extends utils_1.AbstractAuthModuleProvider {
138
143
  });
139
144
  if (!response.ok) {
140
145
  const errorData = await response.text();
146
+ this.logger_.error(`Failed to fetch LINE profile - status: ${response.status}, statusText: ${response.statusText}, errorData: ${errorData}`);
141
147
  throw new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, `Failed to fetch LINE profile: ${response.status} ${errorData}`);
142
148
  }
143
149
  return response.json();
@@ -145,6 +151,11 @@ class LineProviderService extends utils_1.AbstractAuthModuleProvider {
145
151
  async findOrCreateAuthIdentity(idTokenPayload, profile, tokenResponse, authIdentityService) {
146
152
  const entity_id = profile.userId;
147
153
  const userMetadata = {
154
+ // New format for consistency
155
+ userId: profile.userId,
156
+ displayName: profile.displayName,
157
+ pictureUrl: profile.pictureUrl,
158
+ // Legacy format for backwards compatibility
148
159
  line_user_id: profile.userId,
149
160
  display_name: profile.displayName,
150
161
  picture_url: profile.pictureUrl,
@@ -152,78 +163,47 @@ class LineProviderService extends utils_1.AbstractAuthModuleProvider {
152
163
  email: idTokenPayload.email,
153
164
  name: idTokenPayload.name || profile.displayName,
154
165
  picture: idTokenPayload.picture || profile.pictureUrl,
166
+ first_name: (idTokenPayload.name || profile.displayName || "").split(" ")[0] ||
167
+ profile.displayName,
168
+ last_name: (idTokenPayload.name || profile.displayName || "")
169
+ .split(" ")
170
+ .slice(1)
171
+ .join(" ") || "",
172
+ needs_customer_creation: this.options_.autoCreateCustomer,
173
+ };
174
+ // Store tokens in provider metadata for potential later use
175
+ const providerMetadata = {
176
+ access_token: tokenResponse.access_token,
177
+ refresh_token: tokenResponse.refresh_token,
178
+ expires_in: tokenResponse.expires_in,
179
+ token_type: tokenResponse.token_type,
180
+ scope: tokenResponse.scope,
155
181
  };
156
182
  let authIdentity;
157
- let customer;
158
183
  try {
159
184
  authIdentity = await authIdentityService.retrieve({ entity_id });
160
- if (this.options_.syncProfileData && authIdentity) {
161
- authIdentity = await authIdentityService.update(entity_id, { user_metadata: userMetadata });
162
- }
163
- if (this.customerService_) {
164
- customer = await this.findCustomerByLineId(profile.userId);
165
- }
185
+ authIdentity = await authIdentityService.update(entity_id, {
186
+ user_metadata: userMetadata,
187
+ provider_metadata: providerMetadata,
188
+ });
166
189
  }
167
190
  catch (error) {
168
191
  if (error.type === utils_1.MedusaError.Types.NOT_FOUND) {
192
+ this.logger_.info(`Creating new auth identity for LINE user - entity_id: ${entity_id}, displayName: ${userMetadata.display_name}, email: ${userMetadata.email || `line_${entity_id}@line.me`}`);
169
193
  authIdentity = await authIdentityService.create({
170
194
  entity_id,
171
195
  user_metadata: userMetadata,
196
+ provider_metadata: providerMetadata,
172
197
  });
173
- if (this.options_.autoCreateCustomer && this.customerService_) {
174
- customer = await this.createCustomerFromLineProfile(profile, idTokenPayload);
175
- }
198
+ this.logger_.info(`Auth identity created successfully - authIdentityId: ${authIdentity.id}, entity_id: ${entity_id}`);
176
199
  }
177
200
  else {
201
+ const errorMessage = error instanceof Error ? error.message : String(error);
202
+ this.logger_.error(`Failed to find or create auth identity - error: ${errorMessage}, entity_id: ${entity_id}`);
178
203
  throw error;
179
204
  }
180
205
  }
181
- return { authIdentity, customer };
182
- }
183
- async findCustomerByLineId(lineUserId) {
184
- if (!this.customerService_) {
185
- return null;
186
- }
187
- try {
188
- const [customers] = await this.customerService_.listAndCount({
189
- metadata: {
190
- line_user_id: lineUserId,
191
- },
192
- }, {});
193
- return customers.length > 0 ? customers[0] : null;
194
- }
195
- catch (error) {
196
- this.logger_.error("Failed to find customer by LINE ID:", error);
197
- return null;
198
- }
199
- }
200
- async createCustomerFromLineProfile(profile, idTokenPayload) {
201
- if (!this.customerService_) {
202
- return null;
203
- }
204
- const email = idTokenPayload.email || `line-${profile.userId}@line.local`;
205
- const [firstName, ...lastNameParts] = profile.displayName.split(" ");
206
- const lastName = lastNameParts.join(" ") || "";
207
- try {
208
- const customer = await this.customerService_.create({
209
- email,
210
- first_name: firstName,
211
- last_name: lastName,
212
- metadata: {
213
- channel: "line",
214
- line_user_id: profile.userId,
215
- line_display_name: profile.displayName,
216
- line_picture_url: profile.pictureUrl,
217
- created_via: "line_oauth",
218
- },
219
- });
220
- this.logger_.info(`Created new customer from LINE profile: ${customer.id}`);
221
- return customer;
222
- }
223
- catch (error) {
224
- this.logger_.error("Failed to create customer from LINE profile:", error);
225
- return null;
226
- }
206
+ return { authIdentity };
227
207
  }
228
208
  async refreshToken(refreshToken) {
229
209
  try {
@@ -279,12 +259,10 @@ class LineProviderService extends utils_1.AbstractAuthModuleProvider {
279
259
  authUrl.searchParams.set("redirect_uri", callbackUrl);
280
260
  authUrl.searchParams.set("state", stateKey);
281
261
  authUrl.searchParams.set("nonce", nonce);
282
- authUrl.searchParams.set("prompt", "consent");
283
- authUrl.searchParams.set("max_age", "0");
284
262
  return { success: true, location: authUrl.toString() };
285
263
  }
286
264
  }
287
265
  LineProviderService.identifier = "line";
288
266
  LineProviderService.DISPLAY_NAME = "LINE";
289
267
  exports.default = LineProviderService;
290
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9wcm92aWRlcnMvbGluZS9zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEscURBR21DO0FBT25DLGdFQUErQztBQUMvQyxvREFBNEI7QUErQzVCLE1BQU0sbUJBQW9CLFNBQVEsa0NBQTBCO0lBVzFELFlBQ0UsRUFBRSxNQUFNLEVBQUUsZUFBZSxFQUF3QixFQUNqRCxPQUFnQjtRQUVoQixLQUFLLEVBQUUsQ0FBQztRQVRPLHdCQUFtQixHQUFHLHVDQUF1QyxDQUFDO1FBQzlELDBCQUFxQixHQUFHLGdDQUFnQyxDQUFDO1FBQ3pELHlCQUFvQixHQUFHLHdDQUF3QyxDQUFDO1FBQ2hFLHVCQUFrQixHQUFHLHVDQUF1QyxDQUFDO1FBUTVFLElBQUksQ0FBQyxPQUFPLEdBQUcsTUFBTSxDQUFDO1FBQ3RCLElBQUksQ0FBQyxRQUFRLEdBQUc7WUFDZCxrQkFBa0IsRUFBRSxJQUFJO1lBQ3hCLGVBQWUsRUFBRSxJQUFJO1lBQ3JCLEdBQUcsT0FBTztTQUNYLENBQUM7UUFDRixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsZUFBZSxDQUFDO0lBQzFDLENBQUM7SUFFRCxNQUFNLENBQUMsZUFBZSxDQUFDLE9BQXlCO1FBQzlDLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDM0IsTUFBTSxJQUFJLEtBQUssQ0FBQyw2QkFBNkIsQ0FBQyxDQUFDO1FBQ2pELENBQUM7UUFDRCxJQUFJLENBQUMsT0FBTyxDQUFDLGlCQUFpQixFQUFFLENBQUM7WUFDL0IsTUFBTSxJQUFJLEtBQUssQ0FBQyxpQ0FBaUMsQ0FBQyxDQUFDO1FBQ3JELENBQUM7SUFDSCxDQUFDO0lBRUQsS0FBSyxDQUFDLFFBQVEsQ0FDWixJQUF5QixFQUN6QixtQkFBZ0Q7UUFFaEQsTUFBTSxJQUFJLG1CQUFXLENBQ25CLG1CQUFXLENBQUMsS0FBSyxDQUFDLFdB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
268
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9wcm92aWRlcnMvbGluZS9zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEscURBR21DO0FBT25DLGdFQUErQztBQUMvQyxvREFBNEI7QUE4QzVCLE1BQU0sbUJBQW9CLFNBQVEsa0NBQTBCO0lBUzNELFlBQVksWUFBa0MsRUFBRSxPQUFnQjtRQUMvRCxLQUFLLEVBQUUsQ0FBQztRQUxRLHdCQUFtQixHQUNuQyx1Q0FBdUMsQ0FBQztRQUN4QiwwQkFBcUIsR0FBRyxnQ0FBZ0MsQ0FBQztRQUt6RSxJQUFJLENBQUMsT0FBTyxHQUFHLFlBQVksQ0FBQyxNQUFNLENBQUM7UUFDbkMsSUFBSSxDQUFDLFFBQVEsR0FBRztZQUNmLGtCQUFrQixFQUFFLElBQUk7WUFDeEIsZUFBZSxFQUFFLElBQUk7WUFDckIsR0FBRyxPQUFPO1NBQ1YsQ0FBQztJQUNILENBQUM7SUFFRCxNQUFNLENBQUMsZUFBZSxDQUFDLE9BQXlCO1FBQy9DLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDNUIsTUFBTSxJQUFJLEtBQUssQ0FBQyw2QkFBNkIsQ0FBQyxDQUFDO1FBQ2hELENBQUM7UUFDRCxJQUFJLENBQUMsT0FBTyxDQUFDLGlCQUFpQixFQUFFLENBQUM7WUFDaEMsTUFBTSxJQUFJLEtBQUssQ0FBQyxpQ0FBaUMsQ0FBQyxDQUFDO1FBQ3BELENBQUM7SUFDRixDQUFDO0lBRUQsS0FBSyxDQUFDLFFBQVEsQ0FDYixJQUF5QixFQUN6QixtQkFBZ0Q7UUFFaEQsTUFBTSxJQUFJLG1CQUFXLENBQ3BCLG1CQUFXLENBQUMsS0FBSyxDQUFDLFdBQVcsRUFDN0Isd0VBQXdFLENBQ3hFLENBQUM7SUFDSCxDQUFDO0lBRUQsS0FBSyxDQUFDLFlBQVksQ0FDakIsSUFBeUIsRUFDekIsbUJBQWdEO1FBRWhELE1BQU0sS0FBSyxHQUEyQixJQUFJ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
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lodashventure/medusa-login-provider",
3
- "version": "4.1.3",
3
+ "version": "4.1.4",
4
4
  "description": "A starter for Medusa plugins.",
5
5
  "author": "Medusa (https://medusajs.com)",
6
6
  "license": "MIT",