@lodashventure/medusa-login-provider 0.4.6 → 0.4.8
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/package.json +2 -2
- package/.medusa/server/medusa-config-auth.example.js +0 -58
- package/.medusa/server/src/api/store/line-pending-customers/route.js +0 -222
- package/.medusa/server/src/index.js +0 -31
- package/.medusa/server/src/providers/line/customer-helper.js +0 -237
- package/.medusa/server/src/providers/line/index.js +0 -12
- package/.medusa/server/src/providers/line/redis-helper.js +0 -132
- package/.medusa/server/src/providers/line/service.js +0 -284
- package/.medusa/server/src/providers/line/types.js +0 -3
- package/.medusa/server/src/providers/line/utils.js +0 -119
- package/.medusa/server/src/subscribers/line-auth-customer.js +0 -198
- package/.medusa/server/src/workflows/line-create-customer.js +0 -53
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@lodashventure/medusa-login-provider",
|
|
3
|
-
"version": "0.4.
|
|
3
|
+
"version": "0.4.8",
|
|
4
4
|
"description": "A starter for Medusa plugins.",
|
|
5
5
|
"author": "Medusa (https://medusajs.com)",
|
|
6
6
|
"license": "MIT",
|
|
@@ -75,7 +75,7 @@
|
|
|
75
75
|
"@medusajs/icons": "^2.11.2",
|
|
76
76
|
"@medusajs/medusa": "2.11.2",
|
|
77
77
|
"@medusajs/test-utils": "2.11.2",
|
|
78
|
-
"@medusajs/ui": "4.0.3"
|
|
78
|
+
"@medusajs/ui": "^4.0.3"
|
|
79
79
|
},
|
|
80
80
|
"engines": {
|
|
81
81
|
"node": ">=20"
|
|
@@ -1,58 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
const utils_1 = require("@medusajs/framework/utils");
|
|
4
|
-
/**
|
|
5
|
-
* Example Medusa configuration with LINE auth provider
|
|
6
|
-
*
|
|
7
|
-
* Add this auth module configuration to your medusa-config.ts
|
|
8
|
-
*/
|
|
9
|
-
exports.default = (0, utils_1.defineConfig)({
|
|
10
|
-
projectConfig: {
|
|
11
|
-
// ... your existing project config
|
|
12
|
-
databaseUrl: process.env.MEDUSA_DATABASE_URL,
|
|
13
|
-
http: {
|
|
14
|
-
storeCors: process.env.MEDUSA_STORE_CORS,
|
|
15
|
-
adminCors: process.env.MEDUSA_ADMIN_CORS,
|
|
16
|
-
authCors: process.env.MEDUSA_AUTH_CORS,
|
|
17
|
-
jwtSecret: process.env.MEDUSA_JWT_SECRET || "supersecret",
|
|
18
|
-
cookieSecret: process.env.MEDUSA_COOKIE_SECRET || "supersecret",
|
|
19
|
-
},
|
|
20
|
-
},
|
|
21
|
-
plugins: [
|
|
22
|
-
// Remove the LINE provider from plugins section if it's there
|
|
23
|
-
// ... other plugins
|
|
24
|
-
],
|
|
25
|
-
modules: [
|
|
26
|
-
// ... other modules
|
|
27
|
-
{
|
|
28
|
-
resolve: "@medusajs/medusa/auth",
|
|
29
|
-
options: {
|
|
30
|
-
providers: [
|
|
31
|
-
// Keep existing providers like emailpass
|
|
32
|
-
{
|
|
33
|
-
resolve: "@medusajs/medusa/auth-emailpass",
|
|
34
|
-
id: "emailpass",
|
|
35
|
-
options: {
|
|
36
|
-
// emailpass options
|
|
37
|
-
},
|
|
38
|
-
},
|
|
39
|
-
// Add LINE provider here
|
|
40
|
-
{
|
|
41
|
-
resolve: "@lodashventure/medusa-login-provider/providers/line",
|
|
42
|
-
id: "line",
|
|
43
|
-
options: {
|
|
44
|
-
lineChannelId: process.env.LINE_CHANNEL_ID,
|
|
45
|
-
lineChannelSecret: process.env.LINE_CHANNEL_SECRET,
|
|
46
|
-
// Optional: specify callback URL if different from default
|
|
47
|
-
callbackUrl: process.env.LINE_CALLBACK_URL,
|
|
48
|
-
// Optional: auto-create customers
|
|
49
|
-
autoCreateCustomer: true,
|
|
50
|
-
syncProfileData: true,
|
|
51
|
-
},
|
|
52
|
-
},
|
|
53
|
-
],
|
|
54
|
-
},
|
|
55
|
-
},
|
|
56
|
-
],
|
|
57
|
-
});
|
|
58
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVkdXNhLWNvbmZpZy1hdXRoLmV4YW1wbGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9tZWR1c2EtY29uZmlnLWF1dGguZXhhbXBsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLHFEQUFrRTtBQUVsRTs7OztHQUlHO0FBQ0gsa0JBQWUsSUFBQSxvQkFBWSxFQUFDO0lBQzFCLGFBQWEsRUFBRTtRQUNiLG1DQUFtQztRQUNuQyxXQUFXLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxtQkFBbUI7UUFDNUMsSUFBSSxFQUFFO1lBQ0osU0FBUyxFQUFFLE9BQU8sQ0FBQyxHQUFHLENBQUMsaUJBQWtCO1lBQ3pDLFNBQVMsRUFBRSxPQUFPLENBQUMsR0FBRyxDQUFDLGlCQUFrQjtZQUN6QyxRQUFRLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxnQkFBaUI7WUFDdkMsU0FBUyxFQUFFLE9BQU8sQ0FBQyxHQUFHLENBQUMsaUJBQWlCLElBQUksYUFBYTtZQUN6RCxZQUFZLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxvQkFBb0IsSUFBSSxhQUFhO1NBQ2hFO0tBQ0Y7SUFDRCxPQUFPLEVBQUU7SUFDUCw4REFBOEQ7SUFDOUQsb0JBQW9CO0tBQ3JCO0lBQ0QsT0FBTyxFQUFFO1FBQ1Asb0JBQW9CO1FBQ3BCO1lBQ0UsT0FBTyxFQUFFLHVCQUF1QjtZQUNoQyxPQUFPLEVBQUU7Z0JBQ1AsU0FBUyxFQUFFO29CQUNULHlDQUF5QztvQkFDekM7d0JBQ0UsT0FBTyxFQUFFLGlDQUFpQzt3QkFDMUMsRUFBRSxFQUFFLFdBQVc7d0JBQ2YsT0FBTyxFQUFFO3dCQUNQLG9CQUFvQjt5QkFDckI7cUJBQ0Y7b0JBQ0QseUJBQXlCO29CQUN6Qjt3QkFDRSxPQUFPLEVBQUUscURBQXFEO3dCQUM5RCxFQUFFLEVBQUUsTUFBTTt3QkFDVixPQUFPLEVBQUU7NEJBQ1AsYUFBYSxFQUFFLE9BQU8sQ0FBQyxHQUFHLENBQUMsZUFBZTs0QkFDMUMsaUJBQWlCLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxtQkFBbUI7NEJBQ2xELDJEQUEyRDs0QkFDM0QsV0FBVyxFQUFFLE9BQU8sQ0FBQyxHQUFHLENBQUMsaUJBQWlCOzRCQUMxQyxrQ0FBa0M7NEJBQ2xDLGtCQUFrQixFQUFFLElBQUk7NEJBQ3hCLGVBQWUsRUFBRSxJQUFJO3lCQUN0QjtxQkFDRjtpQkFDRjthQUNGO1NBQ0Y7S0FDRjtDQUNGLENBQUMsQ0FBQyJ9
|
|
@@ -1,222 +0,0 @@
|
|
|
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 = POST;
|
|
7
|
-
exports.GET = GET;
|
|
8
|
-
const utils_1 = require("@medusajs/framework/utils");
|
|
9
|
-
const ioredis_1 = __importDefault(require("ioredis"));
|
|
10
|
-
const jsonwebtoken_1 = __importDefault(require("jsonwebtoken"));
|
|
11
|
-
const line_create_customer_1 = require("../../../workflows/line-create-customer");
|
|
12
|
-
/**
|
|
13
|
-
* POST /store/line-pending-customers
|
|
14
|
-
* Creates a customer from pending LINE data stored in Redis
|
|
15
|
-
* Requires JWT with auth_identity_id
|
|
16
|
-
*/
|
|
17
|
-
async function POST(req, res) {
|
|
18
|
-
const logger = req.scope.resolve(utils_1.ContainerRegistrationKeys.LOGGER);
|
|
19
|
-
const customerService = req.scope.resolve(utils_1.Modules.CUSTOMER);
|
|
20
|
-
// Extract JWT from Authorization header
|
|
21
|
-
const authHeader = req.headers.authorization;
|
|
22
|
-
if (!authHeader || !authHeader.startsWith("Bearer ")) {
|
|
23
|
-
return res.status(401).json({
|
|
24
|
-
success: false,
|
|
25
|
-
error: "Authorization header with Bearer token is required",
|
|
26
|
-
});
|
|
27
|
-
}
|
|
28
|
-
const token = authHeader.substring(7);
|
|
29
|
-
let auth_identity_id;
|
|
30
|
-
try {
|
|
31
|
-
// Decode JWT to get auth_identity_id (no verification, just decode)
|
|
32
|
-
const decoded = jsonwebtoken_1.default.decode(token);
|
|
33
|
-
if (!decoded || !decoded.auth_identity_id) {
|
|
34
|
-
return res.status(401).json({
|
|
35
|
-
success: false,
|
|
36
|
-
error: "Invalid token: auth_identity_id not found",
|
|
37
|
-
});
|
|
38
|
-
}
|
|
39
|
-
auth_identity_id = decoded.auth_identity_id;
|
|
40
|
-
logger.info(`Extracted auth_identity_id from JWT: ${auth_identity_id}`);
|
|
41
|
-
}
|
|
42
|
-
catch (error) {
|
|
43
|
-
logger.error("Error decoding JWT:", error);
|
|
44
|
-
return res.status(401).json({
|
|
45
|
-
success: false,
|
|
46
|
-
error: "Invalid token",
|
|
47
|
-
});
|
|
48
|
-
}
|
|
49
|
-
// Get Redis URL from environment
|
|
50
|
-
const redisUrl = process.env.MEDUSA_REDIS_URL || process.env.REDIS_URL;
|
|
51
|
-
if (!redisUrl) {
|
|
52
|
-
return res.status(503).json({
|
|
53
|
-
success: false,
|
|
54
|
-
error: "Redis is not configured",
|
|
55
|
-
});
|
|
56
|
-
}
|
|
57
|
-
const redis = new ioredis_1.default(redisUrl);
|
|
58
|
-
const key = `line:pending_customer:${auth_identity_id}`;
|
|
59
|
-
try {
|
|
60
|
-
// Step 1: Retrieve pending customer data from Redis using auth_identity_id
|
|
61
|
-
const pendingDataStr = await redis.get(key);
|
|
62
|
-
if (!pendingDataStr) {
|
|
63
|
-
logger.warn(`No pending customer data found for auth_identity_id: ${auth_identity_id}`);
|
|
64
|
-
return res.status(404).json({
|
|
65
|
-
success: false,
|
|
66
|
-
error: "No pending customer data found for this auth_identity_id",
|
|
67
|
-
});
|
|
68
|
-
}
|
|
69
|
-
const pendingData = JSON.parse(pendingDataStr);
|
|
70
|
-
logger.info(`Retrieved pending customer data for LINE user: ${pendingData.line_user_id}`);
|
|
71
|
-
// Step 2: Check if customer already exists with this email
|
|
72
|
-
if (pendingData.email) {
|
|
73
|
-
const existingCustomers = await customerService.listCustomers({
|
|
74
|
-
email: pendingData.email,
|
|
75
|
-
});
|
|
76
|
-
if (existingCustomers?.length > 0) {
|
|
77
|
-
// Update existing customer with LINE data
|
|
78
|
-
const customer = existingCustomers[0];
|
|
79
|
-
const updated = await customerService.updateCustomers(customer.id, {
|
|
80
|
-
metadata: {
|
|
81
|
-
...customer.metadata,
|
|
82
|
-
line_user_id: pendingData.line_user_id,
|
|
83
|
-
line_display_name: pendingData.display_name,
|
|
84
|
-
line_picture_url: pendingData.picture_url,
|
|
85
|
-
line_status_message: pendingData.status_message,
|
|
86
|
-
line_linked_at: new Date().toISOString(),
|
|
87
|
-
auth_identity_id: auth_identity_id,
|
|
88
|
-
},
|
|
89
|
-
});
|
|
90
|
-
// Step 3: Update auth identity with customer ID
|
|
91
|
-
const authService = req.scope.resolve(utils_1.Modules.AUTH);
|
|
92
|
-
await authService.updateAuthIdentities({
|
|
93
|
-
id: auth_identity_id,
|
|
94
|
-
app_metadata: {
|
|
95
|
-
customer_id: customer.id,
|
|
96
|
-
},
|
|
97
|
-
});
|
|
98
|
-
// Step 4: Delete from Redis after successful creation
|
|
99
|
-
await redis.del(key);
|
|
100
|
-
logger.info(`Linked existing customer ${customer.id} with LINE user ${pendingData.line_user_id}`);
|
|
101
|
-
return res.json({
|
|
102
|
-
success: true,
|
|
103
|
-
customer: updated,
|
|
104
|
-
message: "Existing customer linked with LINE account",
|
|
105
|
-
action: "linked",
|
|
106
|
-
});
|
|
107
|
-
}
|
|
108
|
-
}
|
|
109
|
-
// Step 3: Create new customer using workflow
|
|
110
|
-
logger.info(`Creating new customer for LINE user: ${pendingData.line_user_id}`);
|
|
111
|
-
const { result } = await (0, line_create_customer_1.lineCreateCustomerWorkflow)(req.scope).run({
|
|
112
|
-
input: {
|
|
113
|
-
data: {
|
|
114
|
-
email: pendingData.email || `line_${pendingData.line_user_id}@line.me`,
|
|
115
|
-
line_user_id: pendingData.line_user_id,
|
|
116
|
-
display_name: pendingData.display_name,
|
|
117
|
-
picture_url: pendingData.picture_url,
|
|
118
|
-
name: pendingData.name,
|
|
119
|
-
auth_identity_id: auth_identity_id,
|
|
120
|
-
},
|
|
121
|
-
},
|
|
122
|
-
});
|
|
123
|
-
// Step 4: Update auth identity with customer ID
|
|
124
|
-
const authService = req.scope.resolve(utils_1.Modules.AUTH);
|
|
125
|
-
await authService.updateAuthIdentities({
|
|
126
|
-
id: auth_identity_id,
|
|
127
|
-
app_metadata: {
|
|
128
|
-
customer_id: result.customer.id,
|
|
129
|
-
},
|
|
130
|
-
});
|
|
131
|
-
// Step 5: Delete from Redis after successful creation
|
|
132
|
-
await redis.del(key);
|
|
133
|
-
logger.info(`Created customer ${result.customer.id} from pending LINE data for auth_identity ${auth_identity_id}`);
|
|
134
|
-
return res.status(201).json({
|
|
135
|
-
success: true,
|
|
136
|
-
customer: result.customer,
|
|
137
|
-
message: "Customer created successfully from LINE data",
|
|
138
|
-
action: "created",
|
|
139
|
-
});
|
|
140
|
-
}
|
|
141
|
-
catch (error) {
|
|
142
|
-
logger.error("Error creating customer from pending LINE data:", error);
|
|
143
|
-
return res.status(500).json({
|
|
144
|
-
success: false,
|
|
145
|
-
error: error.message || "Failed to create customer",
|
|
146
|
-
});
|
|
147
|
-
}
|
|
148
|
-
finally {
|
|
149
|
-
await redis.quit();
|
|
150
|
-
}
|
|
151
|
-
}
|
|
152
|
-
/**
|
|
153
|
-
* GET /store/line-pending-customers
|
|
154
|
-
* Checks if pending customer data exists for the auth_identity_id in JWT
|
|
155
|
-
*/
|
|
156
|
-
async function GET(req, res) {
|
|
157
|
-
const logger = req.scope.resolve(utils_1.ContainerRegistrationKeys.LOGGER);
|
|
158
|
-
// Extract JWT from Authorization header
|
|
159
|
-
const authHeader = req.headers.authorization;
|
|
160
|
-
if (!authHeader || !authHeader.startsWith("Bearer ")) {
|
|
161
|
-
return res.status(401).json({
|
|
162
|
-
success: false,
|
|
163
|
-
error: "Authorization header with Bearer token is required",
|
|
164
|
-
});
|
|
165
|
-
}
|
|
166
|
-
const token = authHeader.substring(7);
|
|
167
|
-
let auth_identity_id;
|
|
168
|
-
try {
|
|
169
|
-
// Decode JWT to get auth_identity_id
|
|
170
|
-
const decoded = jsonwebtoken_1.default.decode(token);
|
|
171
|
-
if (!decoded || !decoded.auth_identity_id) {
|
|
172
|
-
return res.status(401).json({
|
|
173
|
-
success: false,
|
|
174
|
-
error: "Invalid token: auth_identity_id not found",
|
|
175
|
-
});
|
|
176
|
-
}
|
|
177
|
-
auth_identity_id = decoded.auth_identity_id;
|
|
178
|
-
}
|
|
179
|
-
catch (error) {
|
|
180
|
-
logger.error("Error decoding JWT:", error);
|
|
181
|
-
return res.status(401).json({
|
|
182
|
-
success: false,
|
|
183
|
-
error: "Invalid token",
|
|
184
|
-
});
|
|
185
|
-
}
|
|
186
|
-
const redisUrl = process.env.MEDUSA_REDIS_URL || process.env.REDIS_URL;
|
|
187
|
-
if (!redisUrl) {
|
|
188
|
-
return res.status(503).json({
|
|
189
|
-
success: false,
|
|
190
|
-
error: "Redis is not configured",
|
|
191
|
-
});
|
|
192
|
-
}
|
|
193
|
-
const redis = new ioredis_1.default(redisUrl);
|
|
194
|
-
const key = `line:pending_customer:${auth_identity_id}`;
|
|
195
|
-
try {
|
|
196
|
-
const pendingDataStr = await redis.get(key);
|
|
197
|
-
if (!pendingDataStr) {
|
|
198
|
-
return res.json({
|
|
199
|
-
success: true,
|
|
200
|
-
has_pending_data: false,
|
|
201
|
-
message: "No pending customer data found",
|
|
202
|
-
});
|
|
203
|
-
}
|
|
204
|
-
const pendingData = JSON.parse(pendingDataStr);
|
|
205
|
-
return res.json({
|
|
206
|
-
success: true,
|
|
207
|
-
has_pending_data: true,
|
|
208
|
-
pending_customer: pendingData,
|
|
209
|
-
});
|
|
210
|
-
}
|
|
211
|
-
catch (error) {
|
|
212
|
-
logger.error("Error retrieving pending customer data:", error);
|
|
213
|
-
return res.status(500).json({
|
|
214
|
-
success: false,
|
|
215
|
-
error: "Failed to retrieve pending customer data",
|
|
216
|
-
});
|
|
217
|
-
}
|
|
218
|
-
finally {
|
|
219
|
-
await redis.quit();
|
|
220
|
-
}
|
|
221
|
-
}
|
|
222
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL3N0b3JlL2xpbmUtcGVuZGluZy1jdXN0b21lcnMvcm91dGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUE0QkEsb0JBc0tDO0FBTUQsa0JBMkVDO0FBbFJELHFEQUErRTtBQUMvRSxzREFBNEI7QUFDNUIsZ0VBQStCO0FBQy9CLGtGQUFxRjtBQW1CckY7Ozs7R0FJRztBQUNJLEtBQUssVUFBVSxJQUFJLENBQUMsR0FBa0IsRUFBRSxHQUFtQjtJQUNoRSxNQUFNLE1BQU0sR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxpQ0FBeUIsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNuRSxNQUFNLGVBQWUsR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxlQUFPLENBQUMsUUFBUSxDQUFDLENBQUM7SUFFNUQsd0NBQXdDO0lBQ3hDLE1BQU0sVUFBVSxHQUFHLEdBQUcsQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDO0lBQzdDLElBQUksQ0FBQyxVQUFVLElBQUksQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUM7UUFDckQsT0FBTyxHQUFHLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQztZQUMxQixPQUFPLEVBQUUsS0FBSztZQUNkLEtBQUssRUFBRSxvREFBb0Q7U0FDNUQsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELE1BQU0sS0FBSyxHQUFHLFVBQVUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDdEMsSUFBSSxnQkFBd0IsQ0FBQztJQUU3QixJQUFJLENBQUM7UUFDSCxvRUFBb0U7UUFDcEUsTUFBTSxPQUFPLEdBQUcsc0JBQUcsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFlLENBQUM7UUFFaEQsSUFBSSxDQUFDLE9BQU8sSUFBSSxDQUFDLE9BQU8s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
|
|
@@ -1,31 +0,0 @@
|
|
|
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
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
17
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
18
|
-
};
|
|
19
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
20
|
-
exports.LineProvider = void 0;
|
|
21
|
-
const utils_1 = require("@medusajs/framework/utils");
|
|
22
|
-
const service_1 = __importDefault(require("./providers/line/service"));
|
|
23
|
-
exports.default = (0, utils_1.ModuleProvider)(utils_1.Modules.AUTH, {
|
|
24
|
-
services: [service_1.default],
|
|
25
|
-
});
|
|
26
|
-
// Export the LINE provider for direct access
|
|
27
|
-
var service_2 = require("./providers/line/service");
|
|
28
|
-
Object.defineProperty(exports, "LineProvider", { enumerable: true, get: function () { return __importDefault(service_2).default; } });
|
|
29
|
-
__exportStar(require("./providers/line/customer-helper"), exports);
|
|
30
|
-
__exportStar(require("./providers/line/utils"), exports);
|
|
31
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxxREFBb0U7QUFDcEUsdUVBQTJEO0FBRTNELGtCQUFlLElBQUEsc0JBQWMsRUFBQyxlQUFPLENBQUMsSUFBSSxFQUFFO0lBQzFDLFFBQVEsRUFBRSxDQUFDLGlCQUFtQixDQUFDO0NBQ2hDLENBQUMsQ0FBQztBQUVILDZDQUE2QztBQUM3QyxvREFBbUU7QUFBMUQsd0hBQUEsT0FBTyxPQUFnQjtBQUNoQyxtRUFBaUQ7QUFDakQseURBQXVDIn0=
|
|
@@ -1,237 +0,0 @@
|
|
|
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
|
-
const CUSTOMER_ID_CONFLICT_TOKEN = "customer_id already exists";
|
|
9
|
-
function findCustomerIdConflictMessage(error) {
|
|
10
|
-
if (error === null || error === undefined) {
|
|
11
|
-
return undefined;
|
|
12
|
-
}
|
|
13
|
-
const stack = [error];
|
|
14
|
-
const visited = new Set();
|
|
15
|
-
while (stack.length) {
|
|
16
|
-
const current = stack.pop();
|
|
17
|
-
if (current === null || current === undefined) {
|
|
18
|
-
continue;
|
|
19
|
-
}
|
|
20
|
-
if (typeof current === "string") {
|
|
21
|
-
if (current.includes(CUSTOMER_ID_CONFLICT_TOKEN)) {
|
|
22
|
-
return current;
|
|
23
|
-
}
|
|
24
|
-
continue;
|
|
25
|
-
}
|
|
26
|
-
if (typeof current === "object") {
|
|
27
|
-
if (visited.has(current)) {
|
|
28
|
-
continue;
|
|
29
|
-
}
|
|
30
|
-
visited.add(current);
|
|
31
|
-
const message = current.message;
|
|
32
|
-
if (typeof message === "string" && message.includes(CUSTOMER_ID_CONFLICT_TOKEN)) {
|
|
33
|
-
return message;
|
|
34
|
-
}
|
|
35
|
-
const cause = current.cause;
|
|
36
|
-
if (cause) {
|
|
37
|
-
stack.push(cause);
|
|
38
|
-
}
|
|
39
|
-
const nestedError = current.error;
|
|
40
|
-
if (nestedError) {
|
|
41
|
-
stack.push(nestedError);
|
|
42
|
-
}
|
|
43
|
-
const nestedErrors = current.errors;
|
|
44
|
-
if (Array.isArray(nestedErrors)) {
|
|
45
|
-
for (const nested of nestedErrors) {
|
|
46
|
-
stack.push(nested);
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
}
|
|
50
|
-
}
|
|
51
|
-
return undefined;
|
|
52
|
-
}
|
|
53
|
-
/**
|
|
54
|
-
* Creates or updates a customer account for a LINE authenticated user
|
|
55
|
-
* Uses Medusa's createCustomerAccountWorkflow for proper integration
|
|
56
|
-
*/
|
|
57
|
-
async function createOrUpdateLineCustomer(options) {
|
|
58
|
-
const { authIdentityId, userMetadata, container, logger } = options;
|
|
59
|
-
const customerService = container.resolve(utils_1.Modules.CUSTOMER);
|
|
60
|
-
const authService = container.resolve(utils_1.Modules.AUTH);
|
|
61
|
-
const email = userMetadata.email || `line_${userMetadata.line_user_id}@line.me`;
|
|
62
|
-
const firstName = userMetadata.first_name || userMetadata.display_name || "LINE User";
|
|
63
|
-
const lastName = userMetadata.last_name || "";
|
|
64
|
-
try {
|
|
65
|
-
// Check if customer already exists
|
|
66
|
-
const existingCustomers = await customerService.listCustomers({ email });
|
|
67
|
-
if (existingCustomers?.length > 0) {
|
|
68
|
-
// Update existing customer
|
|
69
|
-
const customer = existingCustomers[0];
|
|
70
|
-
await customerService.updateCustomers(customer.id, {
|
|
71
|
-
first_name: firstName,
|
|
72
|
-
last_name: lastName,
|
|
73
|
-
metadata: {
|
|
74
|
-
...customer.metadata,
|
|
75
|
-
line_user_id: userMetadata.line_user_id,
|
|
76
|
-
line_display_name: userMetadata.display_name,
|
|
77
|
-
line_picture_url: userMetadata.picture_url,
|
|
78
|
-
line_status_message: userMetadata.status_message,
|
|
79
|
-
line_updated_at: new Date().toISOString(),
|
|
80
|
-
},
|
|
81
|
-
});
|
|
82
|
-
// Update auth identity with customer ID
|
|
83
|
-
await authService.updateAuthIdentities({
|
|
84
|
-
id: authIdentityId,
|
|
85
|
-
app_metadata: {
|
|
86
|
-
customer_id: customer.id,
|
|
87
|
-
},
|
|
88
|
-
});
|
|
89
|
-
if (logger) {
|
|
90
|
-
logger.info(`Updated existing customer ${customer.id} for LINE user ${userMetadata.line_user_id}`);
|
|
91
|
-
}
|
|
92
|
-
return { customer, created: false };
|
|
93
|
-
}
|
|
94
|
-
// Create new customer using workflow
|
|
95
|
-
const { result } = await (0, core_flows_1.createCustomerAccountWorkflow)(container).run({
|
|
96
|
-
input: {
|
|
97
|
-
authIdentityId,
|
|
98
|
-
customerData: {
|
|
99
|
-
email,
|
|
100
|
-
first_name: firstName,
|
|
101
|
-
last_name: lastName,
|
|
102
|
-
metadata: {
|
|
103
|
-
line_user_id: userMetadata.line_user_id,
|
|
104
|
-
line_display_name: userMetadata.display_name,
|
|
105
|
-
line_picture_url: userMetadata.picture_url,
|
|
106
|
-
line_status_message: userMetadata.status_message,
|
|
107
|
-
line_created_at: new Date().toISOString(),
|
|
108
|
-
},
|
|
109
|
-
},
|
|
110
|
-
},
|
|
111
|
-
});
|
|
112
|
-
if (logger) {
|
|
113
|
-
logger.info(`Created new customer ${result.id} for LINE user ${userMetadata.line_user_id}`);
|
|
114
|
-
}
|
|
115
|
-
return { customer: result, created: true };
|
|
116
|
-
}
|
|
117
|
-
catch (error) {
|
|
118
|
-
const conflictMessage = findCustomerIdConflictMessage(error);
|
|
119
|
-
if (conflictMessage) {
|
|
120
|
-
if (logger) {
|
|
121
|
-
logger.info(`customer_id already set in app_metadata, returning existing customer for LINE user ${userMetadata.line_user_id}`);
|
|
122
|
-
}
|
|
123
|
-
try {
|
|
124
|
-
const authIdentities = await authService.listAuthIdentities({
|
|
125
|
-
id: [authIdentityId],
|
|
126
|
-
});
|
|
127
|
-
const linkedCustomerId = authIdentities?.[0]?.app_metadata
|
|
128
|
-
?.customer_id;
|
|
129
|
-
if (linkedCustomerId) {
|
|
130
|
-
try {
|
|
131
|
-
const customer = await customerService.retrieveCustomer(linkedCustomerId);
|
|
132
|
-
return { customer, created: false };
|
|
133
|
-
}
|
|
134
|
-
catch (retrieveError) {
|
|
135
|
-
if (logger) {
|
|
136
|
-
const reason = retrieveError instanceof Error
|
|
137
|
-
? retrieveError.message
|
|
138
|
-
: String(retrieveError);
|
|
139
|
-
logger.warn(`Failed to retrieve customer ${linkedCustomerId} after metadata conflict: ${reason}`);
|
|
140
|
-
}
|
|
141
|
-
}
|
|
142
|
-
}
|
|
143
|
-
}
|
|
144
|
-
catch (authLookupError) {
|
|
145
|
-
if (logger) {
|
|
146
|
-
const reason = authLookupError instanceof Error
|
|
147
|
-
? authLookupError.message
|
|
148
|
-
: String(authLookupError);
|
|
149
|
-
logger.warn(`Unable to verify auth identity metadata after conflict: ${reason}`);
|
|
150
|
-
}
|
|
151
|
-
}
|
|
152
|
-
const existingCustomers = await customerService.listCustomers({ email });
|
|
153
|
-
if (existingCustomers?.length > 0) {
|
|
154
|
-
return { customer: existingCustomers[0], created: false };
|
|
155
|
-
}
|
|
156
|
-
throw new Error(`Auth identity ${authIdentityId} is already linked to a customer, but the customer record could not be retrieved`);
|
|
157
|
-
}
|
|
158
|
-
if (logger) {
|
|
159
|
-
logger.error(`Failed to create/update customer for LINE user ${userMetadata.line_user_id}:`, error);
|
|
160
|
-
}
|
|
161
|
-
// Fallback: Try direct customer creation
|
|
162
|
-
try {
|
|
163
|
-
const customer = await customerService.createCustomers({
|
|
164
|
-
email,
|
|
165
|
-
first_name: firstName,
|
|
166
|
-
last_name: lastName,
|
|
167
|
-
metadata: {
|
|
168
|
-
line_user_id: userMetadata.line_user_id,
|
|
169
|
-
line_display_name: userMetadata.display_name,
|
|
170
|
-
line_picture_url: userMetadata.picture_url,
|
|
171
|
-
line_status_message: userMetadata.status_message,
|
|
172
|
-
line_created_at: new Date().toISOString(),
|
|
173
|
-
auth_identity_id: authIdentityId,
|
|
174
|
-
},
|
|
175
|
-
});
|
|
176
|
-
// Update auth identity with customer ID
|
|
177
|
-
await authService.updateAuthIdentities({
|
|
178
|
-
id: authIdentityId,
|
|
179
|
-
app_metadata: {
|
|
180
|
-
customer_id: customer.id,
|
|
181
|
-
},
|
|
182
|
-
});
|
|
183
|
-
if (logger) {
|
|
184
|
-
logger.info(`Created customer ${customer.id} via fallback method for LINE user ${userMetadata.line_user_id}`);
|
|
185
|
-
}
|
|
186
|
-
return { customer, created: true };
|
|
187
|
-
}
|
|
188
|
-
catch (fallbackError) {
|
|
189
|
-
if (logger) {
|
|
190
|
-
logger.error(`Fallback customer creation also failed:`, fallbackError);
|
|
191
|
-
}
|
|
192
|
-
throw fallbackError;
|
|
193
|
-
}
|
|
194
|
-
}
|
|
195
|
-
}
|
|
196
|
-
/**
|
|
197
|
-
* Extract customer data from LINE user metadata
|
|
198
|
-
*/
|
|
199
|
-
function extractCustomerData(userMetadata) {
|
|
200
|
-
const email = userMetadata.email || `line_${userMetadata.line_user_id}@line.me`;
|
|
201
|
-
const displayName = userMetadata.name || userMetadata.display_name || "";
|
|
202
|
-
const nameParts = displayName.trim().split(" ");
|
|
203
|
-
return {
|
|
204
|
-
email,
|
|
205
|
-
first_name: userMetadata.first_name || nameParts[0] || "LINE User",
|
|
206
|
-
last_name: userMetadata.last_name || nameParts.slice(1).join(" ") || "",
|
|
207
|
-
metadata: {
|
|
208
|
-
line_user_id: userMetadata.line_user_id,
|
|
209
|
-
line_display_name: userMetadata.display_name,
|
|
210
|
-
line_picture_url: userMetadata.picture_url || userMetadata.picture,
|
|
211
|
-
line_status_message: userMetadata.status_message,
|
|
212
|
-
},
|
|
213
|
-
};
|
|
214
|
-
}
|
|
215
|
-
/**
|
|
216
|
-
* Check if a customer needs to be created based on auth identity
|
|
217
|
-
*/
|
|
218
|
-
async function shouldCreateCustomer(authIdentity, container) {
|
|
219
|
-
// Check if customer creation flag is set
|
|
220
|
-
if (!authIdentity.user_metadata?.needs_customer_creation) {
|
|
221
|
-
return false;
|
|
222
|
-
}
|
|
223
|
-
// Check if customer already exists in app_metadata
|
|
224
|
-
if (authIdentity.app_metadata?.customer_id) {
|
|
225
|
-
const customerService = container.resolve(utils_1.Modules.CUSTOMER);
|
|
226
|
-
try {
|
|
227
|
-
await customerService.retrieveCustomer(authIdentity.app_metadata.customer_id);
|
|
228
|
-
return false; // Customer exists
|
|
229
|
-
}
|
|
230
|
-
catch {
|
|
231
|
-
// Customer doesn't exist, should create
|
|
232
|
-
return true;
|
|
233
|
-
}
|
|
234
|
-
}
|
|
235
|
-
return true;
|
|
236
|
-
}
|
|
237
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VzdG9tZXItaGVscGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL3Byb3ZpZGVycy9saW5lL2N1c3RvbWVyLWhlbHBlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQXFGQSxnRUE2S0M7QUFLRCxrREFnQkM7QUFLRCxvREFzQkM7QUFsVEQsNERBQTRFO0FBRTVFLHFEQUFvRDtBQUVwRCxNQUFNLDBCQUEwQixHQUFHLDRCQUE0QixDQUFDO0FBRWhFLFNBQVMsNkJBQTZCLENBQUMsS0FBYztJQUNuRCxJQUFJLEtBQUssS0FBSyxJQUFJLElBQUksS0FBSyxLQUFLLFNBQVMsRUFBRSxDQUFDO1FBQzFDLE9BQU8sU0FBUyxDQUFDO0lBQ25CLENBQUM7SUFFRCxNQUFNLEtBQUssR0FBYyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2pDLE1BQU0sT0FBTyxHQUFHLElBQUksR0FBRyxFQUFXLENBQUM7SUFFbkMsT0FBTyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDcEIsTUFBTSxPQUFPLEdBQUcsS0FBSyxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBRTVCLElBQUksT0FBTyxLQUFLLElBQUksSUFBSSxPQUFPLEtBQUssU0FBUyxFQUFFLENBQUM7WUFDOUMsU0FBUztRQUNYLENBQUM7UUFFRCxJQUFJLE9BQU8sT0FBTyxLQUFLLFFBQVEsRUFBRSxDQUFDO1lBQ2hDLElBQUksT0FBTyxDQUFDLFFBQVEsQ0FBQywwQkFBMEIsQ0FBQyxFQUFFLENBQUM7Z0JBQ2pELE9BQU8sT0FBTyxDQUFDO1lBQ2pCLENBQUM7WUFDRCxTQUFTO1FBQ1gsQ0FBQztRQUVELElBQUksT0FBTyxPQUFPLEtBQUssUUFBUSxFQUFFLENBQUM7WUFDaEMsSUFBSSxPQUFPLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7Z0JBQ3pCLFNBQVM7WUFDWCxDQUFDO1lBQ0QsT0FBTyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FB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
|
|
@@ -1,12 +0,0 @@
|
|
|
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
|
-
const utils_1 = require("@medusajs/framework/utils");
|
|
7
|
-
const service_1 = __importDefault(require("./service"));
|
|
8
|
-
const services = [service_1.default];
|
|
9
|
-
exports.default = (0, utils_1.ModuleProvider)(utils_1.Modules.AUTH, {
|
|
10
|
-
services,
|
|
11
|
-
});
|
|
12
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvcHJvdmlkZXJzL2xpbmUvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxxREFBb0U7QUFDcEUsd0RBQTRDO0FBRTVDLE1BQU0sUUFBUSxHQUFHLENBQUMsaUJBQW1CLENBQUMsQ0FBQztBQUV2QyxrQkFBZSxJQUFBLHNCQUFjLEVBQUMsZUFBTyxDQUFDLElBQUksRUFBRTtJQUMxQyxRQUFRO0NBQ1QsQ0FBQyxDQUFDIn0=
|