@lodashventure/medusa-login-provider 0.4.6 → 0.4.7
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 +1 -1
- 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
|
@@ -1,198 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.config = void 0;
|
|
4
|
-
exports.default = lineAuthCustomerSubscriber;
|
|
5
|
-
const utils_1 = require("@medusajs/framework/utils");
|
|
6
|
-
const core_flows_1 = require("@medusajs/medusa/core-flows");
|
|
7
|
-
const CUSTOMER_ID_CONFLICT_TOKEN = "customer_id already exists";
|
|
8
|
-
function findCustomerIdConflictMessage(error) {
|
|
9
|
-
if (error === null || error === undefined) {
|
|
10
|
-
return undefined;
|
|
11
|
-
}
|
|
12
|
-
const stack = [error];
|
|
13
|
-
const visited = new Set();
|
|
14
|
-
while (stack.length) {
|
|
15
|
-
const current = stack.pop();
|
|
16
|
-
if (current === null || current === undefined) {
|
|
17
|
-
continue;
|
|
18
|
-
}
|
|
19
|
-
if (typeof current === "string") {
|
|
20
|
-
if (current.includes(CUSTOMER_ID_CONFLICT_TOKEN)) {
|
|
21
|
-
return current;
|
|
22
|
-
}
|
|
23
|
-
continue;
|
|
24
|
-
}
|
|
25
|
-
if (typeof current === "object") {
|
|
26
|
-
if (visited.has(current)) {
|
|
27
|
-
continue;
|
|
28
|
-
}
|
|
29
|
-
visited.add(current);
|
|
30
|
-
const message = current.message;
|
|
31
|
-
if (typeof message === "string" && message.includes(CUSTOMER_ID_CONFLICT_TOKEN)) {
|
|
32
|
-
return message;
|
|
33
|
-
}
|
|
34
|
-
const cause = current.cause;
|
|
35
|
-
if (cause) {
|
|
36
|
-
stack.push(cause);
|
|
37
|
-
}
|
|
38
|
-
const nestedError = current.error;
|
|
39
|
-
if (nestedError) {
|
|
40
|
-
stack.push(nestedError);
|
|
41
|
-
}
|
|
42
|
-
const nestedErrors = current.errors;
|
|
43
|
-
if (Array.isArray(nestedErrors)) {
|
|
44
|
-
for (const nested of nestedErrors) {
|
|
45
|
-
stack.push(nested);
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
}
|
|
50
|
-
return undefined;
|
|
51
|
-
}
|
|
52
|
-
async function lineAuthCustomerSubscriber({ event, container, }) {
|
|
53
|
-
// Check if this is a LINE provider authentication that needs customer creation
|
|
54
|
-
const isLineProvider = event.data.provider === "line" ||
|
|
55
|
-
event.data.provider_identities?.[0]?.provider === "line";
|
|
56
|
-
const needsCustomerCreation = event.data.user_metadata?.needs_customer_creation;
|
|
57
|
-
// Also check if customer_id already exists in app_metadata to avoid conflicts
|
|
58
|
-
const customerIdAlreadySet = event.data.app_metadata?.customer_id;
|
|
59
|
-
if (!isLineProvider || !needsCustomerCreation || customerIdAlreadySet) {
|
|
60
|
-
return;
|
|
61
|
-
}
|
|
62
|
-
const logger = container.resolve(utils_1.ContainerRegistrationKeys.LOGGER);
|
|
63
|
-
const customerService = container.resolve(utils_1.Modules.CUSTOMER);
|
|
64
|
-
try {
|
|
65
|
-
const { entity_id, user_metadata, id: authIdentityId } = event.data;
|
|
66
|
-
if (!user_metadata) {
|
|
67
|
-
logger.info("No user metadata found for LINE auth identity");
|
|
68
|
-
return;
|
|
69
|
-
}
|
|
70
|
-
// Check if customer already exists
|
|
71
|
-
let existingCustomers;
|
|
72
|
-
try {
|
|
73
|
-
existingCustomers = await customerService.listCustomers({
|
|
74
|
-
email: user_metadata.email || `line_${entity_id}@line.me`,
|
|
75
|
-
});
|
|
76
|
-
}
|
|
77
|
-
catch (error) {
|
|
78
|
-
logger.error("Error checking for existing customer:", error);
|
|
79
|
-
existingCustomers = [];
|
|
80
|
-
}
|
|
81
|
-
if (existingCustomers?.length > 0) {
|
|
82
|
-
// Update existing customer with LINE profile data
|
|
83
|
-
const customer = existingCustomers[0];
|
|
84
|
-
await customerService.updateCustomers(customer.id, {
|
|
85
|
-
first_name: user_metadata.first_name || user_metadata.display_name,
|
|
86
|
-
last_name: user_metadata.last_name || "",
|
|
87
|
-
metadata: {
|
|
88
|
-
...customer.metadata,
|
|
89
|
-
line_user_id: user_metadata.line_user_id,
|
|
90
|
-
line_display_name: user_metadata.display_name,
|
|
91
|
-
line_picture_url: user_metadata.picture_url,
|
|
92
|
-
line_linked_at: new Date().toISOString(),
|
|
93
|
-
},
|
|
94
|
-
});
|
|
95
|
-
logger.info(`Updated existing customer ${customer.id} with LINE profile`);
|
|
96
|
-
// Update auth identity app metadata with customer ID
|
|
97
|
-
const authService = container.resolve(utils_1.Modules.AUTH);
|
|
98
|
-
await authService.updateAuthIdentities({
|
|
99
|
-
id: authIdentityId,
|
|
100
|
-
app_metadata: {
|
|
101
|
-
customer_id: customer.id,
|
|
102
|
-
},
|
|
103
|
-
});
|
|
104
|
-
}
|
|
105
|
-
else {
|
|
106
|
-
// Create new customer for LINE user
|
|
107
|
-
logger.info(`Creating new customer for LINE user ${entity_id}`);
|
|
108
|
-
try {
|
|
109
|
-
// First check if auth identity already has a customer_id set
|
|
110
|
-
const authService = container.resolve(utils_1.Modules.AUTH);
|
|
111
|
-
const authIdentities = await authService.listAuthIdentities({
|
|
112
|
-
id: [authIdentityId],
|
|
113
|
-
});
|
|
114
|
-
if (authIdentities?.[0]?.app_metadata?.customer_id) {
|
|
115
|
-
logger.info(`Auth identity ${authIdentityId} already has customer_id: ${authIdentities[0].app_metadata.customer_id}`);
|
|
116
|
-
return;
|
|
117
|
-
}
|
|
118
|
-
// Try using the workflow first, but handle the metadata conflict error specifically
|
|
119
|
-
const { result } = await (0, core_flows_1.createCustomerAccountWorkflow)(container).run({
|
|
120
|
-
input: {
|
|
121
|
-
authIdentityId: authIdentityId,
|
|
122
|
-
customerData: {
|
|
123
|
-
email: user_metadata.email || `line_${entity_id}@line.me`,
|
|
124
|
-
first_name: user_metadata.first_name ||
|
|
125
|
-
user_metadata.display_name ||
|
|
126
|
-
"LINE User",
|
|
127
|
-
last_name: user_metadata.last_name || "",
|
|
128
|
-
metadata: {
|
|
129
|
-
line_user_id: user_metadata.line_user_id,
|
|
130
|
-
line_display_name: user_metadata.display_name,
|
|
131
|
-
line_picture_url: user_metadata.picture_url,
|
|
132
|
-
line_linked_at: new Date().toISOString(),
|
|
133
|
-
},
|
|
134
|
-
},
|
|
135
|
-
},
|
|
136
|
-
});
|
|
137
|
-
logger.info(`Successfully created customer ${result.id} using workflow for auth identity ${authIdentityId}`);
|
|
138
|
-
}
|
|
139
|
-
catch (workflowError) {
|
|
140
|
-
// Check if the error is due to customer_id already existing
|
|
141
|
-
const conflictMessage = findCustomerIdConflictMessage(workflowError);
|
|
142
|
-
if (conflictMessage) {
|
|
143
|
-
logger.info(`customer_id already set in app_metadata, skipping customer creation for auth identity ${authIdentityId}`);
|
|
144
|
-
return;
|
|
145
|
-
}
|
|
146
|
-
logger.error("Failed to create customer using workflow:", workflowError);
|
|
147
|
-
// Fallback to direct customer creation if workflow fails
|
|
148
|
-
const customer = await customerService.createCustomers({
|
|
149
|
-
email: user_metadata.email || `line_${entity_id}@line.me`,
|
|
150
|
-
first_name: user_metadata.first_name ||
|
|
151
|
-
user_metadata.display_name ||
|
|
152
|
-
"LINE User",
|
|
153
|
-
last_name: user_metadata.last_name || "",
|
|
154
|
-
metadata: {
|
|
155
|
-
line_user_id: user_metadata.line_user_id,
|
|
156
|
-
line_display_name: user_metadata.display_name,
|
|
157
|
-
line_picture_url: user_metadata.picture_url,
|
|
158
|
-
line_linked_at: new Date().toISOString(),
|
|
159
|
-
auth_identity_id: authIdentityId,
|
|
160
|
-
},
|
|
161
|
-
});
|
|
162
|
-
logger.info(`Created customer ${customer.id} via fallback method`);
|
|
163
|
-
// Update auth identity with customer ID
|
|
164
|
-
try {
|
|
165
|
-
const authService = container.resolve(utils_1.Modules.AUTH);
|
|
166
|
-
// Check again if customer_id was already set (race condition)
|
|
167
|
-
const checkAuth = await authService.listAuthIdentities({
|
|
168
|
-
id: [authIdentityId],
|
|
169
|
-
});
|
|
170
|
-
if (checkAuth?.[0]?.app_metadata?.customer_id) {
|
|
171
|
-
logger.info(`customer_id already set during fallback, skipping update`);
|
|
172
|
-
return;
|
|
173
|
-
}
|
|
174
|
-
await authService.updateAuthIdentities({
|
|
175
|
-
id: authIdentityId,
|
|
176
|
-
app_metadata: {
|
|
177
|
-
customer_id: customer.id,
|
|
178
|
-
},
|
|
179
|
-
});
|
|
180
|
-
logger.info(`Updated auth identity ${authIdentityId} with customer_id ${customer.id}`);
|
|
181
|
-
}
|
|
182
|
-
catch (updateError) {
|
|
183
|
-
logger.error(`Failed to update auth identity with customer_id:`, updateError);
|
|
184
|
-
// Don't throw - customer was created successfully
|
|
185
|
-
}
|
|
186
|
-
}
|
|
187
|
-
}
|
|
188
|
-
// Note: We can't update user_metadata through updateAuthIdentities
|
|
189
|
-
// The customer creation flag remains but customer is now created
|
|
190
|
-
}
|
|
191
|
-
catch (error) {
|
|
192
|
-
logger.error("Error in LINE auth customer subscriber:", error);
|
|
193
|
-
}
|
|
194
|
-
}
|
|
195
|
-
exports.config = {
|
|
196
|
-
event: ["auth-identity.created", "auth-identity.updated"],
|
|
197
|
-
};
|
|
198
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGluZS1hdXRoLWN1c3RvbWVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3N1YnNjcmliZXJzL2xpbmUtYXV0aC1jdXN0b21lci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUE4REEsNkNBOExDO0FBM1BELHFEQUErRTtBQUMvRSw0REFBNEU7QUFFNUUsTUFBTSwwQkFBMEIsR0FBRyw0QkFBNEIsQ0FBQztBQUVoRSxTQUFTLDZCQUE2QixDQUFDLEtBQWM7SUFDbkQsSUFBSSxLQUFLLEtBQUssSUFBSSxJQUFJLEtBQUssS0FBSyxTQUFTLEVBQUUsQ0FBQztRQUMxQyxPQUFPLFNBQVMsQ0FBQztJQUNuQixDQUFDO0lBRUQsTUFBTSxLQUFLLEdBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNqQyxNQUFNLE9BQU8sR0FBRyxJQUFJLEdBQUcsRUFBVyxDQUFDO0lBRW5DLE9BQU8sS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQ3BCLE1BQU0sT0FBTyxHQUFHLEtBQUssQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUU1QixJQUFJLE9BQU8sS0FBSyxJQUFJLElBQUksT0FBTyxLQUFLLFNBQVMsRUFBRSxDQUFDO1lBQzlDLFNBQVM7UUFDWCxDQUFDO1FBRUQsSUFBSSxPQUFPLE9BQU8sS0FBSyxRQUFRLEVBQUUsQ0FBQztZQUNoQyxJQUFJLE9BQU8sQ0FBQyxRQUFRLENBQUMsMEJBQTBCLENBQUMsRUFBRSxDQUFDO2dCQUNqRCxPQUFPLE9BQU8sQ0FBQztZQUNqQixDQUFDO1lBQ0QsU0FBUztRQUNYLENBQUM7UUFFRCxJQUFJLE9BQU8sT0FBTyxLQUFLLFFBQVEsRUFBRSxDQUFDO1lBQ2hDLElBQUksT0FBTyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDO2dCQUN6QixTQUFTO1lBQ1gsQ0FBQztZQUNELE9BQU8sQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUM7WUFFckIsTUFBTSxPQUFPLEdBQUksT0FBaUMsQ0FBQyxPQUFPLENBQUM7WUFFM0QsSUFBSSxPQUFPLE9BQU8sS0FBSyxRQUFRLElBQUksT0FBTyxDQUFDLFFBQVEsQ0FBQywwQkFBMEIsQ0FBQyxFQUFFLENBQUM7Z0JBQ2hGLE9BQU8sT0FBTyxDQUFDO1lBQ2pCLENBQUM7WUFFRCxNQUFNLEtBQUssR0FBSSxPQUErQixDQUFDLEtBQUssQ0FBQztZQUNyRCxJQUFJLEtBQUssRUFBRSxDQUFDO2dCQUNWLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDcEIsQ0FBQztZQUVELE1BQU0sV0FBVyxHQUFJLE9BQStCLENBQUMsS0FBSyxDQUFDO1lBQzNELElBQUksV0FBVyxFQUFFLENBQUM7Z0JBQ2hCLEtBQUssQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7WUFDMUIsQ0FBQztZQUVELE1BQU0sWUFBWSxHQUFJLE9BQWdDLENBQUMsTUFBTSxDQUFDO1lBQzlELElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDO2dCQUNoQyxLQUFLLE1BQU0sTUFBTSxJQUFJLFlBQVksRUFBRSxDQUFDO29CQUNsQyxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO2dCQUNyQixDQUFDO1lBQ0gsQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDO0lBRUQsT0FBTyxTQUFTLENBQUM7QUFDbkIsQ0FBQztBQUVjLEtBQUssVUFBVSwwQkFBMEIsQ0FBQyxFQUN2RCxLQUFLLEVBQ0wsU0FBUyxHQVFUO0lBQ0EsK0VBQStFO0lBQy9FLE1BQU0sY0FBYyxHQUNsQixLQUFLLENBQUMsSUFBSSxDQUFDLFFBQVEsS0FBSyxNQUFNO1FBQzlCLEtBQUssQ0FBQyxJQUFJLENBQUMsbUJBQW1CLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxRQUFRLEtBQUssTUFBTSxDQUFDO0lBRTNELE1BQU0scUJBQXFCLEdBQ3pCLEtBQUssQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFLHVCQUF1QixDQUFDO0lBRXBELDhFQUE4RTtJQUM5RSxNQUFNLG9CQUFvQixHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLFdBQVcsQ0FBQztJQUVsRSxJQUFJLENBQUMsY0FBYyxJQUFJLENBQUMscUJBQXFCLElBQUksb0JBQW9CLEVBQUUsQ0FBQztRQUN0RSxPQUFPO0lBQ1QsQ0FBQztJQUVELE1BQU0sTUFBTSxHQUFHLFNBQVMsQ0FBQyxPQUFPLENBQUMsaUNBQXlCLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDbkUsTUFBTSxlQUFlLEdBQUcsU0FBUyxDQUFDLE9BQU8sQ0FBQyxlQUFPLENBQUMsUUFBUSxDQUFDLENBQUM7SUFFNUQsSUFBSSxDQUFDO1FBQ0gsTUFBTSxFQUFFLFNBQVMsRUFBRSxhQUFhLEVBQUUsRUFBRSxFQUFFLGNBQWMsRUFBRSxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUM7UUFFcEUsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1lBQ25CLE1BQU0sQ0FBQyxJQUFJLENBQUMsK0NBQStDLENBQUMsQ0FBQztZQUM3RCxPQUFPO1FBQ1QsQ0FBQztRQUVELG1DQUFtQztRQUNuQyxJQUFJLGlCQUFpQixDQUFDO1FBQ3RCLElBQUksQ0FBQztZQUNILGlCQUFpQixHQUFHLE1BQU0sZUFBZSxDQUFDLGFBQWEsQ0FBQztnQkFDdEQsS0FBSyxFQUFFLGFBQWEsQ0FBQyxLQUFLLElBQUksUUFBUSxTQUFTLFVBQVU7YUFDMUQsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztRQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7WUFDZixNQUFNLENBQUMsS0FBSyxDQUFDLHVDQUF1QyxFQUFFLEtBQUssQ0FBQyxDQUFDO1lBQzdELGlCQUFpQixHQUFHLEVBQUUsQ0FBQztRQUN6QixDQUFDO1FBRUQsSUFBSSxpQkFBaUIsRUFBRSxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDbEMsa0RBQWtEO1lBQ2xELE1BQU0sUUFBUSxHQUFHLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxDQUFDO1lBRXRDLE1BQU0sZUFBZSxDQUFDLGVBQWUsQ0FBQyxRQUFRLENBQUMsRUFBRSxFQUFFO2dCQUNqRCxVQUFVLEVBQUUsYUFBYSxDQUFDLFVBQVUsSUFBSSxhQUFhLENBQUMsWUFBWTtnQkFDbEUsU0FBUyxFQUFFLGFBQWEsQ0FBQyxTQUFTLElBQUksRUFBRTtnQkFDeEMsUUFBUSxFQUFFO29CQUNSLEdBQUcsUUFBUSxDQUFDLFFBQVE7b0JBQ3BCLFlBQVksRUFBRSxhQUFhLENBQUMsWUFBWTtvQkFDeEMsaUJBQWlCLEVBQUUsYUFBYSxDQUFDLFlBQVk7b0JBQzdDLGdCQUFnQixFQUFFLGFBQWEsQ0FBQyxXQUFXO29CQUMzQyxjQUFjLEVBQUUsSUFBSSxJQUFJLEVBQUUsQ0FBQyxXQUFXLEVBQUU7aUJBQ3pDO2FBQ0YsQ0FBQyxDQUFDO1lBRUgsTUFBTSxDQUFDLElBQUksQ0FBQyw2QkFBNkIsUUFBUSxDQUFDLEVBQUUsb0JBQW9CLENBQUMsQ0FBQztZQUUxRSxxREFBcUQ7WUFDckQsTUFBTSxXQUFXLEdBQUcsU0FBUyxDQUFDLE9BQU8sQ0FBQyxlQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDcEQsTUFBTSxXQUFXLENBQUMsb0JBQW9CLENBQUM7Z0JBQ3JDLEVBQUUsRUFBRSxjQUFjO2dCQUNsQixZQUFZLEVBQUU7b0JBQ1osV0FBVyxFQUFFLFFBQVEsQ0FBQyxFQUFFO2lCQUN6QjthQUNGLENBQUMsQ0FBQztRQUNMLENBQUM7YUFBTSxDQUFDO1lBQ04sb0NBQW9DO1lBQ3BDLE1BQU0sQ0FBQyxJQUFJLENBQUMsdUNBQXVDLFNBQVMsRUFBRSxDQUFDLENBQUM7WUFFaEUsSUFBSSxDQUFDO2dCQUNILDZEQUE2RDtnQkFDN0QsTUFBTSxXQUFXLEdBQUcsU0FBUyxDQUFDLE9BQU8sQ0FBQyxlQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQ3BELE1BQU0sY0FBYyxHQUFHLE1BQU0sV0FBVyxDQUFDLGtCQUFrQixDQUFDO29CQUMxRCxFQUFFLEVBQUUsQ0FBQyxjQUFjLENBQUM7aUJBQ3JCLENBQUMsQ0FBQztnQkFFSCxJQUFJLGNBQWMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLFlBQVksRUFBRSxXQUFXLEVBQUUsQ0FBQztvQkFDbkQsTUFBTSxDQUFDLElBQUksQ0FDVCxpQkFBaUIsY0FBYyw2QkFBNkIsY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxXQUFXLEVBQUUsQ0FDekcsQ0FBQztvQkFDRixPQUFPO2dCQUNULENBQUM7Z0JBRUQsb0ZBQW9GO2dCQUNwRixNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUcsTUFBTSxJQUFBLDBDQUE2QixFQUFDLFNBQVMsQ0FBQyxDQUFDLEdBQUcsQ0FBQztvQkFDcEUsS0FBSyxFQUFFO3dCQUNMLGNBQWMsRUFBRSxjQUFjO3dCQUM5QixZQUFZLEVBQUU7NEJBQ1osS0FBSyxFQUFFLGFBQWEsQ0FBQyxLQUFLLElBQUksUUFBUSxTQUFTLFVBQVU7NEJBQ3pELFVBQVUsRUFDUixhQUFhLENBQUMsVUFBVTtnQ0FDeEIsYUFBYSxDQUFDLFlBQVk7Z0NBQzFCLFdBQVc7NEJBQ2IsU0FBUyxFQUFFLGFBQWEsQ0FBQyxTQUFTLElBQUksRUFBRTs0QkFDeEMsUUFBUSxFQUFFO2dDQUNSLFlBQVksRUFBRSxhQUFhLENBQUMsWUFBWTtnQ0FDeEMsaUJBQWlCLEVBQUUsYUFBYSxDQUFDLFlBQVk7Z0NBQzdDLGdCQUFnQixFQUFFLGFBQWEsQ0FBQyxXQUFXO2dDQUMzQyxjQUFjLEVBQUUsSUFBSSxJQUFJLEVBQUUsQ0FBQyxXQUFXLEVBQUU7NkJBQ3pDO3lCQUNGO3FCQUNGO2lCQUNGLENBQUMsQ0FBQztnQkFFSCxNQUFNLENBQUMsSUFBSSxDQUNULGlDQUFpQyxNQUFNLENBQUMsRUFBRSxxQ0FBcUMsY0FBYyxFQUFFLENBQ2hHLENBQUM7WUFDSixDQUFDO1lBQUMsT0FBTyxhQUFhLEVBQUUsQ0FBQztnQkFDdkIsNERBQTREO2dCQUM1RCxNQUFNLGVBQWUsR0FBRyw2QkFBNkIsQ0FBQyxhQUFhLENBQUMsQ0FBQztnQkFFckUsSUFBSSxlQUFlLEVBQUUsQ0FBQztvQkFDcEIsTUFBTSxDQUFDLElBQUksQ0FDVCx5RkFBeUYsY0FBYyxFQUFFLENBQzFHLENBQUM7b0JBQ0YsT0FBTztnQkFDVCxDQUFDO2dCQUVELE1BQU0sQ0FBQyxLQUFLLENBQ1YsMkNBQTJDLEVBQzNDLGFBQWEsQ0FDZCxDQUFDO2dCQUVGLHlEQUF5RDtnQkFDekQsTUFBTSxRQUFRLEdBQUcsTUFBTSxlQUFlLENBQUMsZUFBZSxDQUFDO29CQUNyRCxLQUFLLEVBQUUsYUFBYSxDQUFDLEtBQUssSUFBSSxRQUFRLFNBQVMsVUFBVTtvQkFDekQsVUFBVSxFQUNSLGFBQWEsQ0FBQyxVQUFVO3dCQUN4QixhQUFhLENBQUMsWUFBWTt3QkFDMUIsV0FBVztvQkFDYixTQUFTLEVBQUUsYUFBYSxDQUFDLFNBQVMsSUFBSSxFQUFFO29CQUN4QyxRQUFRLEVBQUU7d0JBQ1IsWUFBWSxFQUFFLGFBQWEsQ0FBQyxZQUFZO3dCQUN4QyxpQkFBaUIsRUFBRSxhQUFhLENBQUMsWUFBWTt3QkFDN0MsZ0JBQWdCLEVBQUUsYUFBYSxDQUFDLFdBQVc7d0JBQzNDLGNBQWMsRUFBRSxJQUFJLElBQUksRUFBRSxDQUFDLFdBQVcsRUFBRTt3QkFDeEMsZ0JBQWdCLEVBQUUsY0FBYztxQkFDakM7aUJBQ0YsQ0FBQyxDQUFDO2dCQUVILE1BQU0sQ0FBQyxJQUFJLENBQUMsb0JBQW9CLFFBQVEsQ0FBQyxFQUFFLHNCQUFzQixDQUFDLENBQUM7Z0JBRW5FLHdDQUF3QztnQkFDeEMsSUFBSSxDQUFDO29CQUNILE1BQU0sV0FBVyxHQUFHLFNBQVMsQ0FBQyxPQUFPLENBQUMsZUFBTyxDQUFDLElBQUksQ0FBQyxDQUFDO29CQUVwRCw4REFBOEQ7b0JBQzlELE1BQU0sU0FBUyxHQUFHLE1BQU0sV0FBVyxDQUFDLGtCQUFrQixDQUFDO3dCQUNyRCxFQUFFLEVBQUUsQ0FBQyxjQUFjLENBQUM7cUJBQ3JCLENBQUMsQ0FBQztvQkFDSCxJQUFJLFNBQVMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLFlBQVksRUFBRSxXQUFXLEVBQUUsQ0FBQzt3QkFDOUMsTUFBTSxDQUFDLElBQUksQ0FDVCwwREFBMEQsQ0FDM0QsQ0FBQzt3QkFDRixPQUFPO29CQUNULENBQUM7b0JBRUQsTUFBTSxXQUFXLENBQUMsb0JBQW9CLENBQUM7d0JBQ3JDLEVBQUUsRUFBRSxjQUFjO3dCQUNsQixZQUFZLEVBQUU7NEJBQ1osV0FBVyxFQUFFLFFBQVEsQ0FBQyxFQUFFO3lCQUN6QjtxQkFDRixDQUFDLENBQUM7b0JBQ0gsTUFBTSxDQUFDLElBQUksQ0FDVCx5QkFBeUIsY0FBYyxxQkFBcUIsUUFBUSxDQUFDLEVBQUUsRUFBRSxDQUMxRSxDQUFDO2dCQUNKLENBQUM7Z0JBQUMsT0FBTyxXQUFXLEVBQUUsQ0FBQztvQkFDckIsTUFBTSxDQUFDLEtBQUssQ0FDVixrREFBa0QsRUFDbEQsV0FBVyxDQUNaLENBQUM7b0JBQ0Ysa0RBQWtEO2dCQUNwRCxDQUFDO1lBQ0gsQ0FBQztRQUNILENBQUM7UUFFRCxtRUFBbUU7UUFDbkUsaUVBQWlFO0lBQ25FLENBQUM7SUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1FBQ2YsTUFBTSxDQUFDLEtBQUssQ0FBQyx5Q0FBeUMsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUNqRSxDQUFDO0FBQ0gsQ0FBQztBQUVZLFFBQUEsTUFBTSxHQUFxQjtJQUN0QyxLQUFLLEVBQUUsQ0FBQyx1QkFBdUIsRUFBRSx1QkFBdUIsQ0FBQztDQUMxRCxDQUFDIn0=
|
|
@@ -1,53 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.lineCreateCustomerWorkflow = void 0;
|
|
4
|
-
const workflows_sdk_1 = require("@medusajs/framework/workflows-sdk");
|
|
5
|
-
const utils_1 = require("@medusajs/framework/utils");
|
|
6
|
-
const createCustomerStep = (0, workflows_sdk_1.createStep)("create-customer-from-line", async ({ data }, { container }) => {
|
|
7
|
-
const customerService = container.resolve(utils_1.Modules.CUSTOMER);
|
|
8
|
-
// Generate email if not provided
|
|
9
|
-
const email = data.email || `line_${data.line_user_id}@line.me`;
|
|
10
|
-
// Check if customer exists
|
|
11
|
-
const existingCustomers = await customerService.listCustomers({
|
|
12
|
-
email: email,
|
|
13
|
-
});
|
|
14
|
-
let customer;
|
|
15
|
-
if (existingCustomers?.length > 0) {
|
|
16
|
-
customer = existingCustomers[0];
|
|
17
|
-
// Update existing customer with LINE data
|
|
18
|
-
customer = await customerService.updateCustomers(customer.id, {
|
|
19
|
-
first_name: data.name?.split(" ")[0] || data.display_name,
|
|
20
|
-
last_name: data.name?.split(" ").slice(1).join(" ") || "",
|
|
21
|
-
metadata: {
|
|
22
|
-
...customer.metadata,
|
|
23
|
-
line_user_id: data.line_user_id,
|
|
24
|
-
line_display_name: data.display_name,
|
|
25
|
-
line_picture_url: data.picture_url,
|
|
26
|
-
line_linked_at: new Date().toISOString(),
|
|
27
|
-
},
|
|
28
|
-
});
|
|
29
|
-
}
|
|
30
|
-
else {
|
|
31
|
-
// Create new customer
|
|
32
|
-
customer = await customerService.createCustomers({
|
|
33
|
-
email: email,
|
|
34
|
-
first_name: data.name?.split(" ")[0] || data.display_name,
|
|
35
|
-
last_name: data.name?.split(" ").slice(1).join(" ") || "",
|
|
36
|
-
metadata: {
|
|
37
|
-
line_user_id: data.line_user_id,
|
|
38
|
-
line_display_name: data.display_name,
|
|
39
|
-
line_picture_url: data.picture_url,
|
|
40
|
-
line_linked_at: new Date().toISOString(),
|
|
41
|
-
auth_identity_id: data.auth_identity_id,
|
|
42
|
-
},
|
|
43
|
-
});
|
|
44
|
-
}
|
|
45
|
-
return new workflows_sdk_1.StepResponse({ customer });
|
|
46
|
-
});
|
|
47
|
-
exports.lineCreateCustomerWorkflow = (0, workflows_sdk_1.createWorkflow)("line-create-customer", ({ data }) => {
|
|
48
|
-
const { customer } = createCustomerStep({ data });
|
|
49
|
-
return new workflows_sdk_1.WorkflowResponse({
|
|
50
|
-
customer,
|
|
51
|
-
});
|
|
52
|
-
});
|
|
53
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGluZS1jcmVhdGUtY3VzdG9tZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvd29ya2Zsb3dzL2xpbmUtY3JlYXRlLWN1c3RvbWVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLHFFQUsyQztBQUMzQyxxREFBb0Q7QUFXcEQsTUFBTSxrQkFBa0IsR0FBRyxJQUFBLDBCQUFVLEVBQ25DLDJCQUEyQixFQUMzQixLQUFLLEVBQUUsRUFBRSxJQUFJLEVBQThCLEVBQUUsRUFBRSxTQUFTLEVBQUUsRUFBRSxFQUFFO0lBQzVELE1BQU0sZUFBZSxHQUFHLFNBQVMsQ0FBQyxPQUFPLENBQUMsZUFBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBRTVELGlDQUFpQztJQUNqQyxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxJQUFJLFFBQVEsSUFBSSxDQUFDLFlBQVksVUFBVSxDQUFDO0lBRWhFLDJCQUEyQjtJQUMzQixNQUFNLGlCQUFpQixHQUFHLE1BQU0sZUFBZSxDQUFDLGFBQWEsQ0FBQztRQUM1RCxLQUFLLEVBQUUsS0FBSztLQUNiLENBQUMsQ0FBQztJQUVILElBQUksUUFBUSxDQUFDO0lBRWIsSUFBSSxpQkFBaUIsRUFBRSxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7UUFDbEMsUUFBUSxHQUFHLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxDQUFDO1FBRWhDLDBDQUEwQztRQUMxQyxRQUFRLEdBQUcsTUFBTSxlQUFlLENBQUMsZUFBZSxDQUFDLFFBQVEsQ0FBQyxFQUFFLEVBQUU7WUFDNUQsVUFBVSxFQUFFLElBQUksQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxZQUFZO1lBQ3pELFNBQVMsRUFBRSxJQUFJLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUU7WUFDekQsUUFBUSxFQUFFO2dCQUNSLEdBQUcsUUFBUSxDQUFDLFFBQVE7Z0JBQ3BCLFlBQVksRUFBRSxJQUFJLENBQUMsWUFBWTtnQkFDL0IsaUJBQWlCLEVBQUUsSUFBSSxDQUFDLFlBQVk7Z0JBQ3BDLGdCQUFnQixFQUFFLElBQUksQ0FBQyxXQUFXO2dCQUNsQyxjQUFjLEVBQUUsSUFBSSxJQUFJLEVBQUUsQ0FBQyxXQUFXLEVBQUU7YUFDekM7U0FDRixDQUFDLENBQUM7SUFDTCxDQUFDO1NBQU0sQ0FBQztRQUNOLHNCQUFzQjtRQUN0QixRQUFRLEdBQUcsTUFBTSxlQUFlLENBQUMsZUFBZSxDQUFDO1lBQy9DLEtBQUssRUFBRSxLQUFLO1lBQ1osVUFBVSxFQUFFLElBQUksQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxZQUFZO1lBQ3pELFNBQVMsRUFBRSxJQUFJLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUU7WUFDekQsUUFBUSxFQUFFO2dCQUNSLFlBQVksRUFBRSxJQUFJLENBQUMsWUFBWTtnQkFDL0IsaUJBQWlCLEVBQUUsSUFBSSxDQUFDLFlBQVk7Z0JBQ3BDLGdCQUFnQixFQUFFLElBQUksQ0FBQyxXQUFXO2dCQUNsQyxjQUFjLEVBQUUsSUFBSSxJQUFJLEVBQUUsQ0FBQyxXQUFXLEVBQUU7Z0JBQ3hDLGdCQUFnQixFQUFFLElBQUksQ0FBQyxnQkFBZ0I7YUFDeEM7U0FDRixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsT0FBTyxJQUFJLDRCQUFZLENBQUMsRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDO0FBQ3hDLENBQUMsQ0FDRixDQUFDO0FBRVcsUUFBQSwwQkFBMEIsR0FBRyxJQUFBLDhCQUFjLEVBQ3RELHNCQUFzQixFQUN0QixDQUFDLEVBQUUsSUFBSSxFQUE4QixFQUFFLEVBQUU7SUFDdkMsTUFBTSxFQUFFLFFBQVEsRUFBRSxHQUFHLGtCQUFrQixDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUVsRCxPQUFPLElBQUksZ0NBQWdCLENBQUM7UUFDMUIsUUFBUTtLQUNULENBQUMsQ0FBQztBQUNMLENBQUMsQ0FDRixDQUFDIn0=
|