@things-factory/operato-hub 4.3.221 → 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.
@@ -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 generate_bizplace_domain_1 = require("../../controllers/bizplace-initializer/generate-bizplace-domain");
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: { email: user.email } });
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
- data: createdUser
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
- name
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
- data: company
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.companyOriginId } });
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
- name: (0, typeorm_1.Raw)(alias => `LOWER(${alias}) LIKE '${bizplace.name.toLowerCase()}'`)
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: context.state.user,
121
- creator: context.state.user
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
- await (0, generate_bizplace_domain_1.generateBizplaceDomain)(bizplace.id, null, tx);
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
- data: createdBizplace
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
- // try {
138
- // await getConnection().transaction(async (tx: EntityManager) => {
139
- // const { body } = context.request
140
- // await getIntegration(context, tx)
141
- // const { data: partner } = body
142
- // const company: Company = await tx.getRepository(Company).findOne({ where: { id: bizplace.companyOriginId } })
143
- // const oldBizplace = await tx.getRepository(Bizplace).findOne({
144
- // where: {
145
- // name: Raw(alias => `LOWER(${alias}) LIKE '${bizplace.name.toLowerCase()}'`)
146
- // }
147
- // })
148
- // if (oldBizplace) {
149
- // throw new ApiError('E04', `${bizplace.name} is duplicated`)
150
- // }
151
- // let createdBizplace: Bizplace = await tx.getRepository(Bizplace).save({
152
- // name: bizplace.name,
153
- // description: bizplace.description,
154
- // address: bizplace.address,
155
- // postalCode: bizplace.postalCode,
156
- // latlng: bizplace.latlng,
157
- // status: bizplace.status,
158
- // company,
159
- // updater: context.state.user,
160
- // creator: context.state.user
161
- // })
162
- // await generateBizplaceDomain(bizplace.id, null, tx)
163
- // context.body = {
164
- // data: createdBizplace
165
- // }
166
- // })
167
- // } catch (e) {
168
- // if (e instanceof ApiError) ApiErrorHandler(context, e)
169
- // else throwInternalServerError(context, e)
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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"}