@things-factory/operato-hub 4.3.222 → 4.3.227
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/dist-server/routers/internal/powrup-router.js +433 -54
- package/dist-server/routers/internal/powrup-router.js.map +1 -1
- package/dist-server/routers/internal/utils/params.js +134 -2
- package/dist-server/routers/internal/utils/params.js.map +1 -1
- package/package.json +56 -56
- package/server/routers/internal/powrup-router.ts +523 -55
- package/server/routers/internal/utils/params.ts +134 -2
|
@@ -11,7 +11,8 @@ const biz_base_1 = require("@things-factory/biz-base");
|
|
|
11
11
|
const integration_base_1 = require("@things-factory/integration-base");
|
|
12
12
|
const shell_1 = require("@things-factory/shell");
|
|
13
13
|
const utils_1 = require("@things-factory/utils");
|
|
14
|
-
const
|
|
14
|
+
const bizplace_initializer_1 = require("../../controllers/bizplace-initializer");
|
|
15
|
+
const company_initializer_1 = require("../../controllers/company-initializer");
|
|
15
16
|
const validation_middleware_1 = require("./middlewares/validation-middleware");
|
|
16
17
|
const error_util_1 = require("./utils/error-util");
|
|
17
18
|
const debug = require('debug')('things-factory:integration-accounting:xilnex-router');
|
|
@@ -24,14 +25,64 @@ exports.powrupRouter.post('/internal/account/create-user', validation_middleware
|
|
|
24
25
|
let user = (body === null || body === void 0 ? void 0 : body.data) || {};
|
|
25
26
|
const { email } = user;
|
|
26
27
|
user.email = email.trim();
|
|
27
|
-
const oldUser = await tx.getRepository(auth_base_1.User).findOne({ where: {
|
|
28
|
+
const oldUser = await tx.getRepository(auth_base_1.User).findOne({ where: { refUserId: user.refUserId } });
|
|
28
29
|
if (oldUser) {
|
|
29
30
|
throw new error_util_1.ApiError('E04', context.t('error.x already exists in y', { x: context.t('field.user'), y: 'operato' }));
|
|
30
31
|
}
|
|
31
32
|
const salt = auth_base_1.User.generateSalt();
|
|
32
|
-
let createdUser = await tx.getRepository(auth_base_1.User).save(Object.assign(Object.assign({}, user), { userType: (user === null || user === void 0 ? void 0 : user.userType) || 'user', status: (user === null || user === void 0 ? void 0 : user.status) || 'inactive', salt, passwordUpdatedAt: new Date(), password: auth_base_1.User.encode(user.password, salt) }));
|
|
33
|
+
let createdUser = await tx.getRepository(auth_base_1.User).save(Object.assign(Object.assign({}, user), { refUserId: user === null || user === void 0 ? void 0 : user.refUserId, userType: (user === null || user === void 0 ? void 0 : user.userType) || 'user', status: (user === null || user === void 0 ? void 0 : user.status) || 'inactive', salt, passwordUpdatedAt: new Date(), password: auth_base_1.User.encode(user.password, salt) }));
|
|
34
|
+
let data = {
|
|
35
|
+
id: createdUser.id,
|
|
36
|
+
name: createdUser.name,
|
|
37
|
+
description: createdUser.description,
|
|
38
|
+
email: createdUser.email,
|
|
39
|
+
userType: createdUser.userType,
|
|
40
|
+
status: createdUser.status,
|
|
41
|
+
refUserId: createdUser.refUserId
|
|
42
|
+
};
|
|
43
|
+
context.body = {
|
|
44
|
+
result: { data }
|
|
45
|
+
};
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
catch (e) {
|
|
49
|
+
if (e instanceof error_util_1.ApiError)
|
|
50
|
+
(0, error_util_1.ApiErrorHandler)(context, e);
|
|
51
|
+
else
|
|
52
|
+
(0, error_util_1.throwInternalServerError)(context, e);
|
|
53
|
+
}
|
|
54
|
+
});
|
|
55
|
+
exports.powrupRouter.post('/internal/account/update-user', validation_middleware_1.validationMiddleware, async (context, next) => {
|
|
56
|
+
try {
|
|
57
|
+
await (0, typeorm_1.getConnection)().transaction(async (tx) => {
|
|
58
|
+
const { body } = context.request;
|
|
59
|
+
await getIntegration(context, tx);
|
|
60
|
+
let user = (body === null || body === void 0 ? void 0 : body.data) || {};
|
|
61
|
+
const existingUser = await tx.getRepository(auth_base_1.User).findOne({ where: { id: user.id } });
|
|
62
|
+
if (!existingUser) {
|
|
63
|
+
throw new error_util_1.ApiError('E04', context.t('error.x does not exists in y', { x: context.t('field.user'), y: 'operato' }));
|
|
64
|
+
}
|
|
65
|
+
const salt = auth_base_1.User.generateSalt();
|
|
66
|
+
await tx.getRepository(auth_base_1.User).update({ id: existingUser.id }, {
|
|
67
|
+
name: (user === null || user === void 0 ? void 0 : user.name) || existingUser.name,
|
|
68
|
+
status: (user === null || user === void 0 ? void 0 : user.status) || existingUser.status,
|
|
69
|
+
userType: (user === null || user === void 0 ? void 0 : user.userType) || existingUser.userType,
|
|
70
|
+
salt: (user === null || user === void 0 ? void 0 : user.password) ? salt : existingUser.salt,
|
|
71
|
+
password: (user === null || user === void 0 ? void 0 : user.password) ? auth_base_1.User.encode(user.password, salt) : existingUser.password,
|
|
72
|
+
passwordUpdatedAt: (user === null || user === void 0 ? void 0 : user.password) ? new Date() : existingUser.passwordUpdatedAt
|
|
73
|
+
});
|
|
74
|
+
let updatedUser = await tx.getRepository(auth_base_1.User).findOne(existingUser.id);
|
|
75
|
+
let data = {
|
|
76
|
+
id: updatedUser.id,
|
|
77
|
+
name: updatedUser.name,
|
|
78
|
+
description: updatedUser.description,
|
|
79
|
+
email: updatedUser.email,
|
|
80
|
+
userType: updatedUser.userType,
|
|
81
|
+
status: updatedUser.status,
|
|
82
|
+
refUserId: updatedUser.refUserId
|
|
83
|
+
};
|
|
33
84
|
context.body = {
|
|
34
|
-
|
|
85
|
+
result: { data }
|
|
35
86
|
};
|
|
36
87
|
});
|
|
37
88
|
}
|
|
@@ -47,12 +98,15 @@ exports.powrupRouter.post('/internal/account/create-company', validation_middlew
|
|
|
47
98
|
await (0, typeorm_1.getConnection)().transaction(async (tx) => {
|
|
48
99
|
const { body } = context.request;
|
|
49
100
|
await getIntegration(context, tx);
|
|
50
|
-
const { name, description, brn, address, postalCode, type, status } = body.data;
|
|
101
|
+
const { name, description, brn, address, postalCode, countryCode, type, status, userId, refCompanyId } = body.data;
|
|
102
|
+
let foundUser = await tx
|
|
103
|
+
.getRepository(auth_base_1.User)
|
|
104
|
+
.findOne({ where: { id: userId }, relations: ['domains', 'roles'] });
|
|
51
105
|
const subdomain = (0, utils_1.slugger)(name);
|
|
52
106
|
//check for existing company
|
|
53
107
|
const oldCompany = await tx.getRepository(biz_base_1.Company).findOne({
|
|
54
108
|
where: {
|
|
55
|
-
|
|
109
|
+
refCompanyId
|
|
56
110
|
}
|
|
57
111
|
});
|
|
58
112
|
if (oldCompany) {
|
|
@@ -70,7 +124,9 @@ exports.powrupRouter.post('/internal/account/create-company', validation_middlew
|
|
|
70
124
|
const domain = await tx.getRepository(shell_1.Domain).save({
|
|
71
125
|
subdomain,
|
|
72
126
|
name,
|
|
73
|
-
extType: 'company'
|
|
127
|
+
extType: 'company',
|
|
128
|
+
creator: foundUser,
|
|
129
|
+
updater: foundUser
|
|
74
130
|
});
|
|
75
131
|
const company = await tx.getRepository(biz_base_1.Company).save({
|
|
76
132
|
name,
|
|
@@ -78,12 +134,117 @@ exports.powrupRouter.post('/internal/account/create-company', validation_middlew
|
|
|
78
134
|
brn,
|
|
79
135
|
address,
|
|
80
136
|
postalCode,
|
|
137
|
+
countryCode: countryCode || 'my',
|
|
81
138
|
type,
|
|
82
139
|
status,
|
|
83
|
-
domain
|
|
140
|
+
domain,
|
|
141
|
+
refCompanyId: refCompanyId || null,
|
|
142
|
+
creator: foundUser,
|
|
143
|
+
updater: foundUser
|
|
144
|
+
});
|
|
145
|
+
const userHavingRoles = foundUser.roles;
|
|
146
|
+
const domainRoles = await (0, company_initializer_1.generateBusinessRoles)(domain, tx);
|
|
147
|
+
foundUser.domains = [...foundUser.domains, domain];
|
|
148
|
+
foundUser.roles = [...userHavingRoles, domainRoles.find(r => r.name === 'BUSINESS-OWNER')];
|
|
149
|
+
await tx.getRepository(auth_base_1.User).save(foundUser);
|
|
150
|
+
await tx.getRepository(biz_base_1.Bizplace).save({
|
|
151
|
+
name: company.name,
|
|
152
|
+
description: company.description,
|
|
153
|
+
address: company.address,
|
|
154
|
+
postalCode: company.postalCode || '',
|
|
155
|
+
latlng: '',
|
|
156
|
+
domain,
|
|
157
|
+
company
|
|
158
|
+
});
|
|
159
|
+
let data = {
|
|
160
|
+
id: company.id,
|
|
161
|
+
name: company.name,
|
|
162
|
+
description: company.description,
|
|
163
|
+
address: company.address,
|
|
164
|
+
brn: company.brn,
|
|
165
|
+
postalCode: company.postalCode,
|
|
166
|
+
countryCode: company.countryCode,
|
|
167
|
+
type: company.type,
|
|
168
|
+
status: company.status,
|
|
169
|
+
refCompanyId: company.refCompanyId
|
|
170
|
+
};
|
|
171
|
+
context.body = {
|
|
172
|
+
result: { data }
|
|
173
|
+
};
|
|
174
|
+
});
|
|
175
|
+
}
|
|
176
|
+
catch (e) {
|
|
177
|
+
if (e instanceof error_util_1.ApiError)
|
|
178
|
+
(0, error_util_1.ApiErrorHandler)(context, e);
|
|
179
|
+
else
|
|
180
|
+
(0, error_util_1.throwInternalServerError)(context, e);
|
|
181
|
+
}
|
|
182
|
+
});
|
|
183
|
+
exports.powrupRouter.post('/internal/account/update-company', validation_middleware_1.validationMiddleware, async (context, next) => {
|
|
184
|
+
try {
|
|
185
|
+
await (0, typeorm_1.getConnection)().transaction(async (tx) => {
|
|
186
|
+
const { body } = context.request;
|
|
187
|
+
const { id, name, description, brn, address, postalCode, countryCode, type, status, userId } = body.data;
|
|
188
|
+
let foundUser = await tx
|
|
189
|
+
.getRepository(auth_base_1.User)
|
|
190
|
+
.findOne({ where: { id: userId }, relations: ['domains', 'roles'] });
|
|
191
|
+
const subdomain = (0, utils_1.slugger)(name);
|
|
192
|
+
//check for existing company
|
|
193
|
+
const existingCompany = await tx.getRepository(biz_base_1.Company).findOne({
|
|
194
|
+
where: { id }
|
|
195
|
+
});
|
|
196
|
+
if (!existingCompany) {
|
|
197
|
+
throw new error_util_1.ApiError('E04', `${name} does not exist`);
|
|
198
|
+
}
|
|
199
|
+
const existingDomain = await tx.getRepository(shell_1.Domain).findOne({
|
|
200
|
+
where: {
|
|
201
|
+
subdomain
|
|
202
|
+
},
|
|
203
|
+
relations: ['bizplace']
|
|
204
|
+
});
|
|
205
|
+
if (!existingDomain) {
|
|
206
|
+
throw new error_util_1.ApiError('E04', `${subdomain} does not exist`);
|
|
207
|
+
}
|
|
208
|
+
// update company
|
|
209
|
+
await tx.getRepository(shell_1.Domain).update({ id: existingDomain.id }, {
|
|
210
|
+
subdomain: name ? subdomain : existingDomain.subdomain,
|
|
211
|
+
name: name ? name : existingDomain.name,
|
|
212
|
+
updater: foundUser
|
|
213
|
+
});
|
|
214
|
+
await tx.getRepository(biz_base_1.Company).update({ id: existingCompany.id }, {
|
|
215
|
+
name: name || existingCompany.name,
|
|
216
|
+
description: description || existingCompany.description,
|
|
217
|
+
brn: brn || existingCompany.brn,
|
|
218
|
+
address: address || existingCompany.address,
|
|
219
|
+
countryCode: countryCode || existingCompany.countryCode,
|
|
220
|
+
postalCode: postalCode || existingCompany.postalCode || '',
|
|
221
|
+
updater: foundUser
|
|
222
|
+
});
|
|
223
|
+
await tx.getRepository(biz_base_1.Bizplace).update({ id: existingDomain.bizplace.id }, {
|
|
224
|
+
name: name || existingDomain.bizplace.name,
|
|
225
|
+
description: description || existingDomain.bizplace.description,
|
|
226
|
+
address: address || existingDomain.bizplace.address,
|
|
227
|
+
postalCode: postalCode || existingDomain.bizplace.postalCode || '',
|
|
228
|
+
latlng: '',
|
|
229
|
+
updater: foundUser
|
|
84
230
|
});
|
|
231
|
+
const updatedCompany = await tx.getRepository(biz_base_1.Company).findOne({
|
|
232
|
+
where: { id }
|
|
233
|
+
});
|
|
234
|
+
let data = {
|
|
235
|
+
id: updatedCompany.id,
|
|
236
|
+
name: updatedCompany.name,
|
|
237
|
+
description: updatedCompany.description,
|
|
238
|
+
address: updatedCompany.address,
|
|
239
|
+
brn: updatedCompany.brn,
|
|
240
|
+
postalCode: updatedCompany.postalCode,
|
|
241
|
+
countryCode: updatedCompany.countryCode,
|
|
242
|
+
type: updatedCompany.type,
|
|
243
|
+
status: updatedCompany.status,
|
|
244
|
+
refCompanyId: updatedCompany.refCompanyId
|
|
245
|
+
};
|
|
85
246
|
context.body = {
|
|
86
|
-
|
|
247
|
+
result: { data }
|
|
87
248
|
};
|
|
88
249
|
});
|
|
89
250
|
}
|
|
@@ -100,29 +261,104 @@ exports.powrupRouter.post('/internal/account/create-bizplace', validation_middle
|
|
|
100
261
|
const { body } = context.request;
|
|
101
262
|
await getIntegration(context, tx);
|
|
102
263
|
const { data: bizplace } = body;
|
|
103
|
-
const company = await tx.getRepository(biz_base_1.Company).findOne({ where: { id: bizplace.
|
|
264
|
+
const company = await tx.getRepository(biz_base_1.Company).findOne({ where: { id: bizplace.companyId } });
|
|
104
265
|
const oldBizplace = await tx.getRepository(biz_base_1.Bizplace).findOne({
|
|
105
266
|
where: {
|
|
106
|
-
|
|
267
|
+
refBizplaceId: bizplace.refBizplaceId
|
|
107
268
|
}
|
|
108
269
|
});
|
|
109
270
|
if (oldBizplace) {
|
|
110
271
|
throw new error_util_1.ApiError('E04', `${bizplace.name} is duplicated`);
|
|
111
272
|
}
|
|
273
|
+
let foundUser = await tx.getRepository(auth_base_1.User).findOne({ where: { id: bizplace.userId } });
|
|
112
274
|
let createdBizplace = await tx.getRepository(biz_base_1.Bizplace).save({
|
|
113
275
|
name: bizplace.name,
|
|
114
|
-
description: bizplace.description,
|
|
115
|
-
address: bizplace.address,
|
|
116
|
-
postalCode: bizplace.postalCode,
|
|
117
|
-
latlng: bizplace.latlng,
|
|
118
|
-
status: bizplace.status,
|
|
276
|
+
description: (bizplace === null || bizplace === void 0 ? void 0 : bizplace.description) || null,
|
|
277
|
+
address: (bizplace === null || bizplace === void 0 ? void 0 : bizplace.address) || '',
|
|
278
|
+
postalCode: (bizplace === null || bizplace === void 0 ? void 0 : bizplace.postalCode) || '',
|
|
279
|
+
latlng: (bizplace === null || bizplace === void 0 ? void 0 : bizplace.latlng) || '',
|
|
280
|
+
status: (bizplace === null || bizplace === void 0 ? void 0 : bizplace.status) || null,
|
|
281
|
+
refBizplaceId: (bizplace === null || bizplace === void 0 ? void 0 : bizplace.refBizplaceId) || null,
|
|
119
282
|
company,
|
|
120
|
-
updater:
|
|
121
|
-
creator:
|
|
283
|
+
updater: foundUser,
|
|
284
|
+
creator: foundUser
|
|
285
|
+
});
|
|
286
|
+
await (0, bizplace_initializer_1.generateBizplaceDomain)(createdBizplace.id, foundUser, tx);
|
|
287
|
+
let data = {
|
|
288
|
+
id: createdBizplace.id,
|
|
289
|
+
name: createdBizplace.name,
|
|
290
|
+
description: createdBizplace.description,
|
|
291
|
+
address: createdBizplace.address,
|
|
292
|
+
postalCode: createdBizplace.postalCode,
|
|
293
|
+
latlng: createdBizplace.latlng,
|
|
294
|
+
status: createdBizplace.status,
|
|
295
|
+
company: createdBizplace.company
|
|
296
|
+
};
|
|
297
|
+
context.body = {
|
|
298
|
+
result: { data }
|
|
299
|
+
};
|
|
300
|
+
});
|
|
301
|
+
}
|
|
302
|
+
catch (e) {
|
|
303
|
+
if (e instanceof error_util_1.ApiError)
|
|
304
|
+
(0, error_util_1.ApiErrorHandler)(context, e);
|
|
305
|
+
else
|
|
306
|
+
(0, error_util_1.throwInternalServerError)(context, e);
|
|
307
|
+
}
|
|
308
|
+
});
|
|
309
|
+
exports.powrupRouter.post('/internal/account/update-bizplace', validation_middleware_1.validationMiddleware, async (context, next) => {
|
|
310
|
+
try {
|
|
311
|
+
await (0, typeorm_1.getConnection)().transaction(async (tx) => {
|
|
312
|
+
const { body } = context.request;
|
|
313
|
+
await getIntegration(context, tx);
|
|
314
|
+
const { data: bizplace } = body;
|
|
315
|
+
const existingBizplace = await tx.getRepository(biz_base_1.Bizplace).findOne({
|
|
316
|
+
where: {
|
|
317
|
+
id: bizplace.id
|
|
318
|
+
},
|
|
319
|
+
relations: ['company', 'domain']
|
|
122
320
|
});
|
|
123
|
-
|
|
321
|
+
if (!existingBizplace) {
|
|
322
|
+
throw new error_util_1.ApiError('E04', `${bizplace.id} does not exist`);
|
|
323
|
+
}
|
|
324
|
+
const company = existingBizplace.company;
|
|
325
|
+
const domain = existingBizplace.domain;
|
|
326
|
+
await tx.getRepository(biz_base_1.Bizplace).update({ id: existingBizplace.id }, {
|
|
327
|
+
name: (bizplace === null || bizplace === void 0 ? void 0 : bizplace.name) || existingBizplace.name,
|
|
328
|
+
description: (bizplace === null || bizplace === void 0 ? void 0 : bizplace.description) || existingBizplace.description,
|
|
329
|
+
address: (bizplace === null || bizplace === void 0 ? void 0 : bizplace.address) || existingBizplace.address,
|
|
330
|
+
postalCode: (bizplace === null || bizplace === void 0 ? void 0 : bizplace.postalCode) || existingBizplace.postalCode,
|
|
331
|
+
latlng: (bizplace === null || bizplace === void 0 ? void 0 : bizplace.latlng) || existingBizplace.latlng,
|
|
332
|
+
status: (bizplace === null || bizplace === void 0 ? void 0 : bizplace.status) || existingBizplace.status,
|
|
333
|
+
updatedAt: new Date()
|
|
334
|
+
});
|
|
335
|
+
if (existingBizplace.domain.extType == 'company') {
|
|
336
|
+
await tx.getRepository(biz_base_1.Company).update({ id: company.id }, {
|
|
337
|
+
name: (bizplace === null || bizplace === void 0 ? void 0 : bizplace.name) || company.name,
|
|
338
|
+
description: (bizplace === null || bizplace === void 0 ? void 0 : bizplace.description) || company.description,
|
|
339
|
+
address: (bizplace === null || bizplace === void 0 ? void 0 : bizplace.address) || company.address,
|
|
340
|
+
postalCode: (bizplace === null || bizplace === void 0 ? void 0 : bizplace.postalCode) || company.postalCode || '',
|
|
341
|
+
updatedAt: new Date()
|
|
342
|
+
});
|
|
343
|
+
}
|
|
344
|
+
await tx.getRepository(shell_1.Domain).update({ id: domain.id }, {
|
|
345
|
+
name: (bizplace === null || bizplace === void 0 ? void 0 : bizplace.name) ? bizplace.name : domain.name,
|
|
346
|
+
subdomain: (bizplace === null || bizplace === void 0 ? void 0 : bizplace.name) ? (0, utils_1.slugger)(bizplace.name) : domain.subdomain,
|
|
347
|
+
updatedAt: new Date()
|
|
348
|
+
});
|
|
349
|
+
let updatedBizplace = await tx.getRepository(biz_base_1.Bizplace).findOne({ where: { id: existingBizplace.id } });
|
|
350
|
+
let data = {
|
|
351
|
+
id: updatedBizplace.id,
|
|
352
|
+
name: updatedBizplace.name,
|
|
353
|
+
description: updatedBizplace.description,
|
|
354
|
+
address: updatedBizplace.address,
|
|
355
|
+
postalCode: updatedBizplace.postalCode,
|
|
356
|
+
latlng: updatedBizplace.latlng,
|
|
357
|
+
status: updatedBizplace.status,
|
|
358
|
+
company: updatedBizplace.company
|
|
359
|
+
};
|
|
124
360
|
context.body = {
|
|
125
|
-
|
|
361
|
+
result: { data }
|
|
126
362
|
};
|
|
127
363
|
});
|
|
128
364
|
}
|
|
@@ -134,40 +370,183 @@ exports.powrupRouter.post('/internal/account/create-bizplace', validation_middle
|
|
|
134
370
|
}
|
|
135
371
|
});
|
|
136
372
|
exports.powrupRouter.post('/internal/account/create-partner', validation_middleware_1.validationMiddleware, async (context, next) => {
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
373
|
+
try {
|
|
374
|
+
await (0, typeorm_1.getConnection)().transaction(async (tx) => {
|
|
375
|
+
const { body } = context.request;
|
|
376
|
+
await getIntegration(context, tx);
|
|
377
|
+
const { bizplaceId, partnerBizplaceId, requesterId } = body.data;
|
|
378
|
+
const bizplace = await tx
|
|
379
|
+
.getRepository(biz_base_1.Bizplace)
|
|
380
|
+
.findOne({ where: { id: bizplaceId }, relations: ['domain'] });
|
|
381
|
+
if (!bizplace) {
|
|
382
|
+
throw new error_util_1.ApiError('E04', `${bizplaceId} does not exist`);
|
|
383
|
+
}
|
|
384
|
+
const partnerBizplace = await tx
|
|
385
|
+
.getRepository(biz_base_1.Bizplace)
|
|
386
|
+
.findOne({ where: { id: partnerBizplaceId }, relations: ['domain'] });
|
|
387
|
+
if (!partnerBizplace) {
|
|
388
|
+
throw new error_util_1.ApiError('E04', `${partnerBizplaceId} does not exist`);
|
|
389
|
+
}
|
|
390
|
+
const isExistingCustomer = Boolean(await tx.getRepository(auth_base_1.Partner).count({
|
|
391
|
+
where: { domain: bizplace.domain, partnerDomain: partnerBizplace.domain }
|
|
392
|
+
}));
|
|
393
|
+
if (isExistingCustomer) {
|
|
394
|
+
throw new error_util_1.ApiError('E04', `${partnerBizplaceId} already registered as partner`);
|
|
395
|
+
}
|
|
396
|
+
let user = await tx.getRepository(auth_base_1.User).findOne({ where: { id: requesterId } });
|
|
397
|
+
await tx.getRepository(auth_base_1.Partner).save({
|
|
398
|
+
domain: bizplace.domain,
|
|
399
|
+
partnerDomain: partnerBizplace.domain,
|
|
400
|
+
requester: user || null,
|
|
401
|
+
approver: user || null
|
|
402
|
+
});
|
|
403
|
+
context.body = {
|
|
404
|
+
result: {
|
|
405
|
+
data: {
|
|
406
|
+
bizplace,
|
|
407
|
+
partnerBizplaceId
|
|
408
|
+
}
|
|
409
|
+
}
|
|
410
|
+
};
|
|
411
|
+
});
|
|
412
|
+
}
|
|
413
|
+
catch (e) {
|
|
414
|
+
if (e instanceof error_util_1.ApiError)
|
|
415
|
+
(0, error_util_1.ApiErrorHandler)(context, e);
|
|
416
|
+
else
|
|
417
|
+
(0, error_util_1.throwInternalServerError)(context, e);
|
|
418
|
+
}
|
|
419
|
+
});
|
|
420
|
+
exports.powrupRouter.post('/internal/account/terminate-partner', validation_middleware_1.validationMiddleware, async (context, next) => {
|
|
421
|
+
try {
|
|
422
|
+
await (0, typeorm_1.getConnection)().transaction(async (tx) => {
|
|
423
|
+
const { body } = context.request;
|
|
424
|
+
await getIntegration(context, tx);
|
|
425
|
+
const { bizplaceId, partnerBizplaceId } = body.data;
|
|
426
|
+
const bizplace = await tx
|
|
427
|
+
.getRepository(biz_base_1.Bizplace)
|
|
428
|
+
.findOne({ where: { id: bizplaceId }, relations: ['domain'] });
|
|
429
|
+
if (!bizplace) {
|
|
430
|
+
throw new error_util_1.ApiError('E04', `${bizplaceId} does not exist`);
|
|
431
|
+
}
|
|
432
|
+
const partnerBizplace = await tx
|
|
433
|
+
.getRepository(biz_base_1.Bizplace)
|
|
434
|
+
.findOne({ where: { id: partnerBizplaceId }, relations: ['domain'] });
|
|
435
|
+
if (!partnerBizplace) {
|
|
436
|
+
throw new error_util_1.ApiError('E04', `${partnerBizplaceId} does not exist`);
|
|
437
|
+
}
|
|
438
|
+
const partner = await tx.getRepository(auth_base_1.Partner).findOne({
|
|
439
|
+
where: { domain: bizplace.domain, partnerDomain: partnerBizplace.domain }
|
|
440
|
+
});
|
|
441
|
+
if (!partner) {
|
|
442
|
+
throw new error_util_1.ApiError('E04', `partner does not exist`);
|
|
443
|
+
}
|
|
444
|
+
// Remove partner
|
|
445
|
+
await tx.getRepository(auth_base_1.Partner).delete(partner.id);
|
|
446
|
+
// Remove granted roles
|
|
447
|
+
await (0, auth_base_1.terminateGrantedRoles)(bizplace.domain, partnerBizplace.domain, tx);
|
|
448
|
+
context.body = {
|
|
449
|
+
result: {
|
|
450
|
+
data: {
|
|
451
|
+
bizplace,
|
|
452
|
+
partnerBizplaceId
|
|
453
|
+
}
|
|
454
|
+
}
|
|
455
|
+
};
|
|
456
|
+
});
|
|
457
|
+
}
|
|
458
|
+
catch (e) {
|
|
459
|
+
if (e instanceof error_util_1.ApiError)
|
|
460
|
+
(0, error_util_1.ApiErrorHandler)(context, e);
|
|
461
|
+
else
|
|
462
|
+
(0, error_util_1.throwInternalServerError)(context, e);
|
|
463
|
+
}
|
|
464
|
+
});
|
|
465
|
+
exports.powrupRouter.post('/internal/account/invite-user', validation_middleware_1.validationMiddleware, async (context, next) => {
|
|
466
|
+
try {
|
|
467
|
+
await (0, typeorm_1.getConnection)().transaction(async (tx) => {
|
|
468
|
+
const { body } = context.request;
|
|
469
|
+
await getIntegration(context, tx);
|
|
470
|
+
const { userId, bizplaceId } = body.data;
|
|
471
|
+
const user = await tx.getRepository(auth_base_1.User).findOne({ where: { id: userId }, relations: ['domains'] });
|
|
472
|
+
if (!user) {
|
|
473
|
+
throw new error_util_1.ApiError('E04', `${userId} does not exist`);
|
|
474
|
+
}
|
|
475
|
+
const bizplace = await tx
|
|
476
|
+
.getRepository(biz_base_1.Bizplace)
|
|
477
|
+
.findOne({ where: { id: bizplaceId }, relations: ['domain'] });
|
|
478
|
+
if (!bizplace) {
|
|
479
|
+
throw new error_util_1.ApiError('E04', `${bizplaceId} does not exist`);
|
|
480
|
+
}
|
|
481
|
+
const existingDomains = user.domains;
|
|
482
|
+
if (existingDomains.find((d) => d.id === bizplace.domain.id)) {
|
|
483
|
+
throw new error_util_1.ApiError('E04', `user already exists in ${bizplace.name}`);
|
|
484
|
+
}
|
|
485
|
+
user.domains = [...existingDomains, bizplace.domain];
|
|
486
|
+
let updatedUser = await tx.getRepository(auth_base_1.User).save(user);
|
|
487
|
+
context.body = {
|
|
488
|
+
result: {
|
|
489
|
+
data: {
|
|
490
|
+
id: updatedUser.id,
|
|
491
|
+
name: updatedUser.name,
|
|
492
|
+
email: updatedUser.email,
|
|
493
|
+
domains: updatedUser.domains
|
|
494
|
+
}
|
|
495
|
+
}
|
|
496
|
+
};
|
|
497
|
+
});
|
|
498
|
+
}
|
|
499
|
+
catch (e) {
|
|
500
|
+
if (e instanceof error_util_1.ApiError)
|
|
501
|
+
(0, error_util_1.ApiErrorHandler)(context, e);
|
|
502
|
+
else
|
|
503
|
+
(0, error_util_1.throwInternalServerError)(context, e);
|
|
504
|
+
}
|
|
505
|
+
});
|
|
506
|
+
exports.powrupRouter.post('/internal/account/terminate-user', validation_middleware_1.validationMiddleware, async (context, next) => {
|
|
507
|
+
try {
|
|
508
|
+
await (0, typeorm_1.getConnection)().transaction(async (tx) => {
|
|
509
|
+
const { body } = context.request;
|
|
510
|
+
await getIntegration(context, tx);
|
|
511
|
+
const { userId, bizplaceId } = body.data;
|
|
512
|
+
const user = await tx
|
|
513
|
+
.getRepository(auth_base_1.User)
|
|
514
|
+
.findOne({ where: { id: userId }, relations: ['domains', 'roles', 'roles.domain'] });
|
|
515
|
+
if (!user) {
|
|
516
|
+
throw new error_util_1.ApiError('E04', `${userId} does not exist`);
|
|
517
|
+
}
|
|
518
|
+
const bizplace = await tx
|
|
519
|
+
.getRepository(biz_base_1.Bizplace)
|
|
520
|
+
.findOne({ where: { id: bizplaceId }, relations: ['domain'] });
|
|
521
|
+
if (!bizplace) {
|
|
522
|
+
throw new error_util_1.ApiError('E04', `${bizplaceId} does not exist`);
|
|
523
|
+
}
|
|
524
|
+
const targetDomainIdx = user.domains.findIndex((userDomain) => userDomain.id === bizplace.domain.id);
|
|
525
|
+
if (targetDomainIdx < 0) {
|
|
526
|
+
throw new error_util_1.ApiError('E04', `${user.name} is not a member of ${bizplace.name}`);
|
|
527
|
+
}
|
|
528
|
+
// Remove domain relation with user
|
|
529
|
+
user.domains.splice(targetDomainIdx, 1);
|
|
530
|
+
// Remove domain's roles that user has
|
|
531
|
+
user.roles = user.roles.filter((role) => role.domain.id !== bizplace.domain.id);
|
|
532
|
+
let updatedUser = await tx.getRepository(auth_base_1.User).save(user);
|
|
533
|
+
context.body = {
|
|
534
|
+
result: {
|
|
535
|
+
data: {
|
|
536
|
+
id: updatedUser.id,
|
|
537
|
+
name: updatedUser.name,
|
|
538
|
+
email: updatedUser.email
|
|
539
|
+
}
|
|
540
|
+
}
|
|
541
|
+
};
|
|
542
|
+
});
|
|
543
|
+
}
|
|
544
|
+
catch (e) {
|
|
545
|
+
if (e instanceof error_util_1.ApiError)
|
|
546
|
+
(0, error_util_1.ApiErrorHandler)(context, e);
|
|
547
|
+
else
|
|
548
|
+
(0, error_util_1.throwInternalServerError)(context, e);
|
|
549
|
+
}
|
|
171
550
|
});
|
|
172
551
|
async function getIntegration(context, tx) {
|
|
173
552
|
const integration = await tx.getRepository(integration_base_1.Integration).findOne({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"powrup-router.js","sourceRoot":"","sources":["../../../server/routers/internal/powrup-router.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"powrup-router.js","sourceRoot":"","sources":["../../../server/routers/internal/powrup-router.ts"],"names":[],"mappings":"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"}
|