@neohm/nestend 4.0.2 → 4.1.0

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.
Files changed (224) hide show
  1. package/README.md +37 -3
  2. package/dist/admin/controllers/admin.tenant.user.controller.d.ts +8 -1
  3. package/dist/admin/controllers/admin.tenant.user.controller.d.ts.map +1 -1
  4. package/dist/admin/controllers/admin.tenant.user.controller.js +75 -7
  5. package/dist/admin/controllers/admin.tenant.user.controller.js.map +1 -1
  6. package/dist/admin/dtos/add.client.membership.dto.d.ts +6 -0
  7. package/dist/admin/dtos/add.client.membership.dto.d.ts.map +1 -0
  8. package/dist/admin/dtos/add.client.membership.dto.js +41 -0
  9. package/dist/admin/dtos/add.client.membership.dto.js.map +1 -0
  10. package/dist/admin/es6.classes.d.ts +4 -2
  11. package/dist/admin/es6.classes.d.ts.map +1 -1
  12. package/dist/admin/es6.classes.js +4 -0
  13. package/dist/admin/es6.classes.js.map +1 -1
  14. package/dist/admin/libraries/bulk.user.data.processor.d.ts.map +1 -1
  15. package/dist/admin/libraries/bulk.user.data.processor.js +13 -5
  16. package/dist/admin/libraries/bulk.user.data.processor.js.map +1 -1
  17. package/dist/admin/libraries/client.membership.data.processor.d.ts +14 -0
  18. package/dist/admin/libraries/client.membership.data.processor.d.ts.map +1 -0
  19. package/dist/admin/libraries/client.membership.data.processor.js +56 -0
  20. package/dist/admin/libraries/client.membership.data.processor.js.map +1 -0
  21. package/dist/admin/libraries/client.user.data.processor.d.ts +1 -2
  22. package/dist/admin/libraries/client.user.data.processor.d.ts.map +1 -1
  23. package/dist/admin/libraries/client.user.data.processor.js +24 -31
  24. package/dist/admin/libraries/client.user.data.processor.js.map +1 -1
  25. package/dist/admin/libraries/client.user.delete.processor.d.ts.map +1 -1
  26. package/dist/admin/libraries/client.user.delete.processor.js +4 -0
  27. package/dist/admin/libraries/client.user.delete.processor.js.map +1 -1
  28. package/dist/admin/libraries/client.user.list.processor.d.ts.map +1 -1
  29. package/dist/admin/libraries/client.user.list.processor.js +14 -2
  30. package/dist/admin/libraries/client.user.list.processor.js.map +1 -1
  31. package/dist/admin/libraries/tenant.delete.processor.d.ts.map +1 -1
  32. package/dist/admin/libraries/tenant.delete.processor.js +22 -9
  33. package/dist/admin/libraries/tenant.delete.processor.js.map +1 -1
  34. package/dist/admin/libraries/user.data.processor.d.ts.map +1 -1
  35. package/dist/admin/libraries/user.data.processor.js +4 -1
  36. package/dist/admin/libraries/user.data.processor.js.map +1 -1
  37. package/dist/auth/auth.module.d.ts.map +1 -1
  38. package/dist/auth/auth.module.js +22 -3
  39. package/dist/auth/auth.module.js.map +1 -1
  40. package/dist/auth/controllers/auth.controller.d.ts +8 -7
  41. package/dist/auth/controllers/auth.controller.d.ts.map +1 -1
  42. package/dist/auth/controllers/auth.controller.js +36 -12
  43. package/dist/auth/controllers/auth.controller.js.map +1 -1
  44. package/dist/auth/controllers/impersonation.controller.d.ts +2 -2
  45. package/dist/auth/controllers/impersonation.controller.d.ts.map +1 -1
  46. package/dist/auth/controllers/tenant.invitation.controller.d.ts +18 -0
  47. package/dist/auth/controllers/tenant.invitation.controller.d.ts.map +1 -0
  48. package/dist/auth/controllers/tenant.invitation.controller.js +120 -0
  49. package/dist/auth/controllers/tenant.invitation.controller.js.map +1 -0
  50. package/dist/auth/controllers/tenant.member.controller.d.ts +18 -0
  51. package/dist/auth/controllers/tenant.member.controller.d.ts.map +1 -0
  52. package/dist/auth/controllers/tenant.member.controller.js +129 -0
  53. package/dist/auth/controllers/tenant.member.controller.js.map +1 -0
  54. package/dist/auth/controllers/user.invitation.controller.d.ts +12 -0
  55. package/dist/auth/controllers/user.invitation.controller.d.ts.map +1 -0
  56. package/dist/auth/controllers/user.invitation.controller.js +76 -0
  57. package/dist/auth/controllers/user.invitation.controller.js.map +1 -0
  58. package/dist/auth/controllers/user.organization.controller.d.ts +17 -0
  59. package/dist/auth/controllers/user.organization.controller.d.ts.map +1 -0
  60. package/dist/auth/controllers/user.organization.controller.js +88 -0
  61. package/dist/auth/controllers/user.organization.controller.js.map +1 -0
  62. package/dist/auth/dtos/invite.tenant.user.dto.d.ts +6 -0
  63. package/dist/auth/dtos/invite.tenant.user.dto.d.ts.map +1 -0
  64. package/dist/auth/dtos/invite.tenant.user.dto.js +45 -0
  65. package/dist/auth/dtos/invite.tenant.user.dto.js.map +1 -0
  66. package/dist/auth/dtos/member.roles.dto.d.ts +4 -0
  67. package/dist/auth/dtos/member.roles.dto.d.ts.map +1 -0
  68. package/dist/auth/dtos/member.roles.dto.js +28 -0
  69. package/dist/auth/dtos/member.roles.dto.js.map +1 -0
  70. package/dist/auth/dtos/switch.organization.dto.d.ts +5 -0
  71. package/dist/auth/dtos/switch.organization.dto.d.ts.map +1 -0
  72. package/dist/auth/dtos/switch.organization.dto.js +25 -0
  73. package/dist/auth/dtos/switch.organization.dto.js.map +1 -0
  74. package/dist/auth/dtos/tenant.invitation.list.dto.d.ts +5 -0
  75. package/dist/auth/dtos/tenant.invitation.list.dto.d.ts.map +1 -0
  76. package/dist/auth/dtos/tenant.invitation.list.dto.js +27 -0
  77. package/dist/auth/dtos/tenant.invitation.list.dto.js.map +1 -0
  78. package/dist/auth/dtos/tenant.member.list.dto.d.ts +5 -0
  79. package/dist/auth/dtos/tenant.member.list.dto.d.ts.map +1 -0
  80. package/dist/auth/dtos/tenant.member.list.dto.js +27 -0
  81. package/dist/auth/dtos/tenant.member.list.dto.js.map +1 -0
  82. package/dist/auth/entities/tenant.invitation.entity.d.ts +13 -0
  83. package/dist/auth/entities/tenant.invitation.entity.d.ts.map +1 -0
  84. package/dist/auth/entities/tenant.invitation.entity.js +52 -0
  85. package/dist/auth/entities/tenant.invitation.entity.js.map +1 -0
  86. package/dist/auth/entities/tenant.user.entity.d.ts +8 -0
  87. package/dist/auth/entities/tenant.user.entity.d.ts.map +1 -0
  88. package/dist/auth/entities/tenant.user.entity.js +35 -0
  89. package/dist/auth/entities/tenant.user.entity.js.map +1 -0
  90. package/dist/auth/entities/user.entity.d.ts +5 -0
  91. package/dist/auth/entities/user.entity.d.ts.map +1 -1
  92. package/dist/auth/entities/user.entity.js +17 -0
  93. package/dist/auth/entities/user.entity.js.map +1 -1
  94. package/dist/auth/entities/user.role.entity.d.ts +2 -2
  95. package/dist/auth/entities/user.role.entity.d.ts.map +1 -1
  96. package/dist/auth/entities/user.role.entity.js +2 -2
  97. package/dist/auth/entities/user.role.entity.js.map +1 -1
  98. package/dist/auth/enums/auth.default.enum.d.ts +3 -1
  99. package/dist/auth/enums/auth.default.enum.d.ts.map +1 -1
  100. package/dist/auth/enums/auth.default.enum.js +2 -0
  101. package/dist/auth/enums/auth.default.enum.js.map +1 -1
  102. package/dist/auth/enums/tenant.invitation.default.enum.d.ts +4 -0
  103. package/dist/auth/enums/tenant.invitation.default.enum.d.ts.map +1 -0
  104. package/dist/auth/enums/tenant.invitation.default.enum.js +8 -0
  105. package/dist/auth/enums/tenant.invitation.default.enum.js.map +1 -0
  106. package/dist/auth/enums/tenant.invitation.status.enum.d.ts +7 -0
  107. package/dist/auth/enums/tenant.invitation.status.enum.d.ts.map +1 -0
  108. package/dist/auth/enums/tenant.invitation.status.enum.js +11 -0
  109. package/dist/auth/enums/tenant.invitation.status.enum.js.map +1 -0
  110. package/dist/auth/enums/user.type.enum.d.ts.map +1 -1
  111. package/dist/auth/enums/user.type.enum.js.map +1 -1
  112. package/dist/auth/es6.classes.d.ts +15 -4
  113. package/dist/auth/es6.classes.d.ts.map +1 -1
  114. package/dist/auth/es6.classes.js +35 -2
  115. package/dist/auth/es6.classes.js.map +1 -1
  116. package/dist/auth/helpers/auth.d.ts +1 -1
  117. package/dist/auth/helpers/auth.d.ts.map +1 -1
  118. package/dist/auth/helpers/auth.js +7 -4
  119. package/dist/auth/helpers/auth.js.map +1 -1
  120. package/dist/auth/processors/change.password.data.processor.d.ts.map +1 -1
  121. package/dist/auth/processors/change.password.data.processor.js +1 -0
  122. package/dist/auth/processors/change.password.data.processor.js.map +1 -1
  123. package/dist/auth/processors/google.user.data.processor.js +1 -1
  124. package/dist/auth/processors/google.user.data.processor.js.map +1 -1
  125. package/dist/auth/processors/register.user.data.processor.js +1 -1
  126. package/dist/auth/processors/register.user.data.processor.js.map +1 -1
  127. package/dist/auth/processors/tenant.invitation.data.processor.d.ts +20 -0
  128. package/dist/auth/processors/tenant.invitation.data.processor.d.ts.map +1 -0
  129. package/dist/auth/processors/tenant.invitation.data.processor.js +112 -0
  130. package/dist/auth/processors/tenant.invitation.data.processor.js.map +1 -0
  131. package/dist/auth/processors/tenant.invitation.list.processor.d.ts +13 -0
  132. package/dist/auth/processors/tenant.invitation.list.processor.d.ts.map +1 -0
  133. package/dist/auth/processors/tenant.invitation.list.processor.js +67 -0
  134. package/dist/auth/processors/tenant.invitation.list.processor.js.map +1 -0
  135. package/dist/auth/processors/tenant.member.list.processor.d.ts +13 -0
  136. package/dist/auth/processors/tenant.member.list.processor.d.ts.map +1 -0
  137. package/dist/auth/processors/tenant.member.list.processor.js +66 -0
  138. package/dist/auth/processors/tenant.member.list.processor.js.map +1 -0
  139. package/dist/auth/services/admin.auth.service.d.ts.map +1 -1
  140. package/dist/auth/services/admin.auth.service.js +2 -2
  141. package/dist/auth/services/admin.auth.service.js.map +1 -1
  142. package/dist/auth/services/auth.service.d.ts +5 -0
  143. package/dist/auth/services/auth.service.d.ts.map +1 -1
  144. package/dist/auth/services/auth.service.js +51 -13
  145. package/dist/auth/services/auth.service.js.map +1 -1
  146. package/dist/auth/services/impersonation.service.d.ts +2 -2
  147. package/dist/auth/services/impersonation.service.d.ts.map +1 -1
  148. package/dist/auth/services/impersonation.service.js +1 -1
  149. package/dist/auth/services/impersonation.service.js.map +1 -1
  150. package/dist/auth/services/tenant.invitation.service.d.ts +26 -0
  151. package/dist/auth/services/tenant.invitation.service.d.ts.map +1 -0
  152. package/dist/auth/services/tenant.invitation.service.js +212 -0
  153. package/dist/auth/services/tenant.invitation.service.js.map +1 -0
  154. package/dist/auth/services/tenant.membership.service.d.ts +29 -0
  155. package/dist/auth/services/tenant.membership.service.d.ts.map +1 -0
  156. package/dist/auth/services/tenant.membership.service.js +178 -0
  157. package/dist/auth/services/tenant.membership.service.js.map +1 -0
  158. package/dist/auth/types/auth.types.d.ts +24 -2
  159. package/dist/auth/types/auth.types.d.ts.map +1 -1
  160. package/dist/auth/utilities/access.revocation.d.ts +2 -0
  161. package/dist/auth/utilities/access.revocation.d.ts.map +1 -1
  162. package/dist/auth/utilities/access.revocation.js +12 -0
  163. package/dist/auth/utilities/access.revocation.js.map +1 -1
  164. package/dist/auth/utilities/auth.utilities.d.ts +1 -0
  165. package/dist/auth/utilities/auth.utilities.d.ts.map +1 -1
  166. package/dist/auth/utilities/auth.utilities.js +4 -0
  167. package/dist/auth/utilities/auth.utilities.js.map +1 -1
  168. package/dist/auth/utilities/tenant.access.d.ts +8 -0
  169. package/dist/auth/utilities/tenant.access.d.ts.map +1 -0
  170. package/dist/auth/utilities/tenant.access.js +61 -0
  171. package/dist/auth/utilities/tenant.access.js.map +1 -0
  172. package/dist/common/es6.classes.d.ts +2 -2
  173. package/dist/constants/entity.constants.d.ts +2 -0
  174. package/dist/constants/entity.constants.d.ts.map +1 -1
  175. package/dist/constants/entity.constants.js +2 -0
  176. package/dist/constants/entity.constants.js.map +1 -1
  177. package/dist/constants/entity.maps.d.ts +4 -0
  178. package/dist/constants/entity.maps.d.ts.map +1 -1
  179. package/dist/constants/entity.maps.js +4 -0
  180. package/dist/constants/entity.maps.js.map +1 -1
  181. package/dist/constants/job.constants.d.ts +1 -0
  182. package/dist/constants/job.constants.d.ts.map +1 -1
  183. package/dist/constants/job.constants.js +1 -0
  184. package/dist/constants/job.constants.js.map +1 -1
  185. package/dist/index.d.ts +6 -1
  186. package/dist/index.d.ts.map +1 -1
  187. package/dist/index.js +14 -3
  188. package/dist/index.js.map +1 -1
  189. package/dist/migrations/1749600000003.CreateSysUsersTable.d.ts.map +1 -1
  190. package/dist/migrations/1749600000003.CreateSysUsersTable.js +4 -0
  191. package/dist/migrations/1749600000003.CreateSysUsersTable.js.map +1 -1
  192. package/dist/migrations/1749600000006.CreateSysUserRolesJoinTable.d.ts.map +1 -1
  193. package/dist/migrations/1749600000006.CreateSysUserRolesJoinTable.js +8 -1
  194. package/dist/migrations/1749600000006.CreateSysUserRolesJoinTable.js.map +1 -1
  195. package/dist/migrations/1749600000030.CreateSysTenantUsersTable.d.ts +6 -0
  196. package/dist/migrations/1749600000030.CreateSysTenantUsersTable.d.ts.map +1 -0
  197. package/dist/migrations/1749600000030.CreateSysTenantUsersTable.js +33 -0
  198. package/dist/migrations/1749600000030.CreateSysTenantUsersTable.js.map +1 -0
  199. package/dist/migrations/1749600000031.CreateSysTenantInvitationsTable.d.ts +6 -0
  200. package/dist/migrations/1749600000031.CreateSysTenantInvitationsTable.d.ts.map +1 -0
  201. package/dist/migrations/1749600000031.CreateSysTenantInvitationsTable.js +43 -0
  202. package/dist/migrations/1749600000031.CreateSysTenantInvitationsTable.js.map +1 -0
  203. package/dist/notification/enums/email.notification.default.enum.d.ts +1 -0
  204. package/dist/notification/enums/email.notification.default.enum.d.ts.map +1 -1
  205. package/dist/notification/enums/email.notification.default.enum.js +1 -0
  206. package/dist/notification/enums/email.notification.default.enum.js.map +1 -1
  207. package/dist/notification/enums/email.template.identifier.enum.d.ts +2 -1
  208. package/dist/notification/enums/email.template.identifier.enum.d.ts.map +1 -1
  209. package/dist/notification/enums/email.template.identifier.enum.js +1 -0
  210. package/dist/notification/enums/email.template.identifier.enum.js.map +1 -1
  211. package/dist/notification/es6.classes.d.ts +2 -1
  212. package/dist/notification/es6.classes.d.ts.map +1 -1
  213. package/dist/notification/es6.classes.js +6 -1
  214. package/dist/notification/es6.classes.js.map +1 -1
  215. package/dist/notification/jobs/tenant.user.invited.mail.job.d.ts +14 -0
  216. package/dist/notification/jobs/tenant.user.invited.mail.job.d.ts.map +1 -0
  217. package/dist/notification/jobs/tenant.user.invited.mail.job.js +57 -0
  218. package/dist/notification/jobs/tenant.user.invited.mail.job.js.map +1 -0
  219. package/dist/notification/notification.module.d.ts.map +1 -1
  220. package/dist/notification/notification.module.js +3 -1
  221. package/dist/notification/notification.module.js.map +1 -1
  222. package/dist/notification/types/email.notification.types.d.ts +9 -0
  223. package/dist/notification/types/email.notification.types.d.ts.map +1 -1
  224. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"client.user.data.processor.d.ts","sourceRoot":"","sources":["../../../src/admin/libraries/client.user.data.processor.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAG7D,OAAO,EAAE,aAAa,EAAE,MAAM,sCAAsC,CAAC;AACrE,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAE/D,OAAO,EAAE,0BAA0B,EAAE,MAAM,wDAAwD,CAAC;AAmBpG,qBAAa,uBAAwB,SAAQ,iBAAiB;IAO1D,OAAO,CAAC,QAAQ,CAAC,aAAa;IAC9B,OAAO,CAAC,QAAQ,CAAC,0BAA0B;IAP7C,SAAS,CAAC,OAAO,EAAE,gBAAgB,CAAC;IACpC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA4C;IAEnE,OAAO,CAAC,MAAM,CAA6B;gBAGxB,aAAa,EAAE,aAAa,EAC5B,0BAA0B,EAAE,0BAA0B;IAKnE,OAAO,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,UAAU,CAAC;YAM/C,QAAQ;YAsBR,cAAc;YAQd,YAAY;YAuBZ,IAAI;YAKJ,MAAM;YAsBN,MAAM;YAmBN,UAAU;YASV,WAAW;YA4BX,UAAU;CAiBzB"}
1
+ {"version":3,"file":"client.user.data.processor.d.ts","sourceRoot":"","sources":["../../../src/admin/libraries/client.user.data.processor.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAG7D,OAAO,EAAE,aAAa,EAAE,MAAM,sCAAsC,CAAC;AACrE,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAE/D,OAAO,EAAE,0BAA0B,EAAE,MAAM,wDAAwD,CAAC;AAoBpG,qBAAa,uBAAwB,SAAQ,iBAAiB;IAO1D,OAAO,CAAC,QAAQ,CAAC,aAAa;IAC9B,OAAO,CAAC,QAAQ,CAAC,0BAA0B;IAP7C,SAAS,CAAC,OAAO,EAAE,gBAAgB,CAAC;IACpC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA4C;IAEnE,OAAO,CAAC,MAAM,CAA6B;gBAGxB,aAAa,EAAE,aAAa,EAC5B,0BAA0B,EAAE,0BAA0B;IAKnE,OAAO,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,UAAU,CAAC;YAM/C,QAAQ;YAuBR,cAAc;YAQd,kBAAkB;YAYlB,YAAY;YAwBZ,IAAI;YAKJ,MAAM;YA+BN,MAAM;YAgCN,UAAU;CAiBzB"}
@@ -6,7 +6,8 @@ const user_data_processor_1 = require("./user.data.processor");
6
6
  const user_entity_1 = require("../../auth/entities/user.entity");
7
7
  const user_type_enum_1 = require("../../auth/enums/user.type.enum");
8
8
  const auth_utilities_1 = require("../../auth/utilities/auth.utilities");
9
- const user_role_entity_1 = require("../../auth/entities/user.role.entity");
9
+ const tenant_user_entity_1 = require("../../auth/entities/tenant.user.entity");
10
+ const tenant_access_1 = require("../../auth/utilities/tenant.access");
10
11
  const access_exception_1 = require("../../global/exceptions/access.exception");
11
12
  const typeorm_1 = require("typeorm");
12
13
  const system_role_entity_1 = require("../../auth/entities/system.role.entity");
@@ -28,6 +29,8 @@ class ClientUserDataProcessor extends user_data_processor_1.UserDataProcessor {
28
29
  if (editId && !(await user_entity_1.UserEntity.existsBy({ id: editId })))
29
30
  this.setColumnError('id', 'No client user exists for this id');
30
31
  await this.validateTenant();
32
+ if (editId)
33
+ await this.validateMembership(editId);
31
34
  await this.validateEmail(this.payload.email, 'email', editId);
32
35
  await this.validateContact(this.payload.contact, this.payload.contact_code, 'contact', editId);
33
36
  this.validatePassword(this.payload.password, !!editId);
@@ -40,6 +43,14 @@ class ClientUserDataProcessor extends user_data_processor_1.UserDataProcessor {
40
43
  this.setColumnError('tenant_id', 'Tenant not found or inactive');
41
44
  this.tenant = tenant;
42
45
  }
46
+ async validateMembership(userId) {
47
+ const isMember = await tenant_user_entity_1.TenantUserEntity.existsBy({
48
+ user_id: userId,
49
+ tenant_id: this.payload.tenant_id,
50
+ });
51
+ if (!isMember)
52
+ this.setColumnError('tenant_id', 'This user is not a member of this tenant');
53
+ }
43
54
  async resolveRoles(roleIds, field) {
44
55
  if (!roleIds?.length) {
45
56
  return [];
@@ -48,12 +59,13 @@ class ClientUserDataProcessor extends user_data_processor_1.UserDataProcessor {
48
59
  const roles = await system_role_entity_1.SystemRoleEntity.find({
49
60
  where: {
50
61
  id: (0, typeorm_1.In)(uniqueRoleIds),
62
+ is_active: true,
51
63
  },
52
64
  });
53
65
  const foundRoleIds = new Set(roles.map((role) => role.id));
54
66
  for (const roleId of uniqueRoleIds) {
55
67
  if (!foundRoleIds.has(roleId)) {
56
- this.setColumnError(field, `Role '${roleId}' not found`);
68
+ this.setColumnError(field, `Role '${roleId}' not found or inactive`);
57
69
  }
58
70
  }
59
71
  return roles;
@@ -65,19 +77,22 @@ class ClientUserDataProcessor extends user_data_processor_1.UserDataProcessor {
65
77
  }
66
78
  async create() {
67
79
  const body = this.payload;
80
+ const password = await auth_utilities_1.AuthUtility.hashPassword(body.password);
68
81
  const user = user_entity_1.UserEntity.create({
69
82
  user_type: user_type_enum_1.UserType.TENANT_USER,
70
83
  organization_id: body.tenant_id,
71
84
  full_name: body.full_name,
72
85
  email: body.email,
73
- password: await auth_utilities_1.AuthUtility.hashPassword(body.password),
86
+ password,
74
87
  country: body.country,
75
88
  contact_code: body.contact_code,
76
89
  contact: body.contact,
77
90
  active: body.active ?? true,
78
91
  });
79
- await user.save();
80
- await this.grantRoles(user);
92
+ await user_entity_1.UserEntity.getRepository().manager.transaction(async (trx) => {
93
+ await trx.save(user);
94
+ await tenant_access_1.TenantAccess.join(trx, user.id, body.tenant_id, body.role_ids ?? []);
95
+ });
81
96
  await this.notifyUser(user);
82
97
  return this.stripSecrets(user);
83
98
  }
@@ -92,33 +107,11 @@ class ClientUserDataProcessor extends user_data_processor_1.UserDataProcessor {
92
107
  user.contact_code = body.contact_code;
93
108
  user.contact = body.contact;
94
109
  user.active = body.active ?? true;
95
- await user.save();
96
- await this.updateRoles(user);
97
- return this.stripSecrets(user);
98
- }
99
- async grantRoles(user) {
100
- if (!this.payload?.role_ids?.length)
101
- return;
102
- const userRoles = [...new Set(this.payload.role_ids)].map((role_id) => user_role_entity_1.UserRoleEntity.create({ user_id: user.id, role_id }));
103
- await user_role_entity_1.UserRoleEntity.save(userRoles);
104
- }
105
- async updateRoles(user) {
106
- const existingRoles = await user_role_entity_1.UserRoleEntity.find({
107
- where: {
108
- user_id: user.id,
109
- },
110
+ await user_entity_1.UserEntity.getRepository().manager.transaction(async (trx) => {
111
+ await trx.save(user);
112
+ await tenant_access_1.TenantAccess.reconcileRoles(trx, user.id, body.tenant_id, body.role_ids ?? []);
110
113
  });
111
- const existingRoleIds = new Set(existingRoles.map((role) => role.role_id));
112
- const roleIds = new Set((this.payload?.role_ids ?? []).map((role_id) => role_id));
113
- for (const existingRole of existingRoles)
114
- if (!roleIds.has(existingRole.role_id))
115
- await existingRole.softDelete();
116
- for (const roleId of roleIds)
117
- if (!existingRoleIds.has(roleId))
118
- await user_role_entity_1.UserRoleEntity.create({
119
- user_id: user.id,
120
- role_id: roleId,
121
- }).save();
114
+ return this.stripSecrets(user);
122
115
  }
123
116
  async notifyUser(user) {
124
117
  const data = {
@@ -1 +1 @@
1
- {"version":3,"file":"client.user.data.processor.js","sourceRoot":"","sources":["../../../src/admin/libraries/client.user.data.processor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"client.user.data.processor.js","sourceRoot":"","sources":["../../../src/admin/libraries/client.user.data.processor.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"client.user.delete.processor.d.ts","sourceRoot":"","sources":["../../../src/admin/libraries/client.user.delete.processor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,8CAA8C,CAAC;AACnF,OAAO,EAAE,eAAe,EAAE,MAAM,uCAAuC,CAAC;AAIxE,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAQpD,qBAAa,yBAA0B,SAAQ,mBAAmB;IACpD,OAAO,CAAC,QAAQ,CAAC,KAAK;gBAAL,KAAK,EAAE,eAAe;IAI7C,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;CAcjD"}
1
+ {"version":3,"file":"client.user.delete.processor.d.ts","sourceRoot":"","sources":["../../../src/admin/libraries/client.user.delete.processor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,8CAA8C,CAAC;AACnF,OAAO,EAAE,eAAe,EAAE,MAAM,uCAAuC,CAAC;AAMxE,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AASpD,qBAAa,yBAA0B,SAAQ,mBAAmB;IACpD,OAAO,CAAC,QAAQ,CAAC,KAAK;gBAAL,KAAK,EAAE,eAAe;IAI7C,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;CAgBjD"}
@@ -3,6 +3,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.ClientUserDeleteProcessor = void 0;
4
4
  const common_data_processor_1 = require("../../common/libraries/common.data.processor");
5
5
  const user_entity_1 = require("../../auth/entities/user.entity");
6
+ const tenant_user_entity_1 = require("../../auth/entities/tenant.user.entity");
7
+ const user_role_entity_1 = require("../../auth/entities/user.role.entity");
6
8
  const user_type_enum_1 = require("../../auth/enums/user.type.enum");
7
9
  const access_revocation_1 = require("../../auth/utilities/access.revocation");
8
10
  class ClientUserDeleteProcessor extends common_data_processor_1.CommonDataProcessor {
@@ -19,6 +21,8 @@ class ClientUserDeleteProcessor extends common_data_processor_1.CommonDataProces
19
21
  this.raiseExceptionOnValidationFailure();
20
22
  await user_entity_1.UserEntity.getRepository().manager.transaction(async (trx) => {
21
23
  await access_revocation_1.AccessRevocation.revokeAll(trx, id, false);
24
+ await trx.softDelete(user_role_entity_1.UserRoleEntity, { user_id: id });
25
+ await trx.softDelete(tenant_user_entity_1.TenantUserEntity, { user_id: id });
22
26
  await trx.softDelete(user_entity_1.UserEntity, { id });
23
27
  });
24
28
  return { id, deleted: true, deleted_by: this.actor.id };
@@ -1 +1 @@
1
- {"version":3,"file":"client.user.delete.processor.js","sourceRoot":"","sources":["../../../src/admin/libraries/client.user.delete.processor.ts"],"names":[],"mappings":";;;AAAA,wFAAmF;AAEnF,iEAA6D;AAC7D,oEAA2D;AAC3D,8EAA0E;AAS1E,MAAa,yBAA0B,SAAQ,2CAAmB;IAChE,YAA6B,KAAsB;QACjD,KAAK,EAAE,CAAC;QADmB,UAAK,GAAL,KAAK,CAAiB;IAEnD,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,EAAU;QACtB,MAAM,IAAI,GAAG,MAAM,wBAAU,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;QACzD,IAAI,CAAC,IAAI;YAAE,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,4BAA4B,CAAC,CAAC;aAC9D,IAAI,IAAI,CAAC,SAAS,KAAK,yBAAQ,CAAC,WAAW;YAC9C,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,gCAAgC,CAAC,CAAC;QAC9D,IAAI,CAAC,iCAAiC,EAAE,CAAC;QAEzC,MAAM,wBAAU,CAAC,aAAa,EAAE,CAAC,OAAO,CAAC,WAAW,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;YACjE,MAAM,oCAAgB,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,EAAE,KAAK,CAAC,CAAC;YACjD,MAAM,GAAG,CAAC,UAAU,CAAC,wBAAU,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;QAC3C,CAAC,CAAC,CAAC;QAEH,OAAO,EAAE,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC;IAC1D,CAAC;CACF;AAnBD,8DAmBC"}
1
+ {"version":3,"file":"client.user.delete.processor.js","sourceRoot":"","sources":["../../../src/admin/libraries/client.user.delete.processor.ts"],"names":[],"mappings":";;;AAAA,wFAAmF;AAEnF,iEAA6D;AAC7D,+EAA0E;AAC1E,2EAAsE;AACtE,oEAA2D;AAC3D,8EAA0E;AAU1E,MAAa,yBAA0B,SAAQ,2CAAmB;IAChE,YAA6B,KAAsB;QACjD,KAAK,EAAE,CAAC;QADmB,UAAK,GAAL,KAAK,CAAiB;IAEnD,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,EAAU;QACtB,MAAM,IAAI,GAAG,MAAM,wBAAU,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;QACzD,IAAI,CAAC,IAAI;YAAE,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,4BAA4B,CAAC,CAAC;aAC9D,IAAI,IAAI,CAAC,SAAS,KAAK,yBAAQ,CAAC,WAAW;YAC9C,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,gCAAgC,CAAC,CAAC;QAC9D,IAAI,CAAC,iCAAiC,EAAE,CAAC;QAEzC,MAAM,wBAAU,CAAC,aAAa,EAAE,CAAC,OAAO,CAAC,WAAW,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;YACjE,MAAM,oCAAgB,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,EAAE,KAAK,CAAC,CAAC;YACjD,MAAM,GAAG,CAAC,UAAU,CAAC,iCAAc,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC;YACtD,MAAM,GAAG,CAAC,UAAU,CAAC,qCAAgB,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC;YACxD,MAAM,GAAG,CAAC,UAAU,CAAC,wBAAU,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;QAC3C,CAAC,CAAC,CAAC;QAEH,OAAO,EAAE,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC;IAC1D,CAAC;CACF;AArBD,8DAqBC"}
@@ -1 +1 @@
1
- {"version":3,"file":"client.user.list.processor.d.ts","sourceRoot":"","sources":["../../../src/admin/libraries/client.user.list.processor.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,mBAAmB,EAAE,MAAM,8CAA8C,CAAC;AACnF,OAAO,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AACvE,OAAO,EAAE,iBAAiB,EAAE,MAAM,2CAA2C,CAAC;AAE9E,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AAUjE,qBAAa,uBAAwB,SAAQ,mBAAmB;IAyClD,SAAS,CAAC,QAAQ,CAAC,iBAAiB,EAAE,iBAAiB;IAxCnE,SAAS,CAAC,MAAM,EAAE,sBAAsB,CAsCtC;gBAE6B,iBAAiB,EAAE,iBAAiB;IAI7D,OAAO,CAAC,OAAO,EAAE,iBAAiB;IAMxC,SAAS,CAAC,qBAAqB;CAGhC"}
1
+ {"version":3,"file":"client.user.list.processor.d.ts","sourceRoot":"","sources":["../../../src/admin/libraries/client.user.list.processor.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,mBAAmB,EAAE,MAAM,8CAA8C,CAAC;AACnF,OAAO,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AACvE,OAAO,EAAE,iBAAiB,EAAE,MAAM,2CAA2C,CAAC;AAE9E,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AAYjE,qBAAa,uBAAwB,SAAQ,mBAAmB;IAqDlD,SAAS,CAAC,QAAQ,CAAC,iBAAiB,EAAE,iBAAiB;IApDnE,SAAS,CAAC,MAAM,EAAE,sBAAsB,CAkDtC;gBAE6B,iBAAiB,EAAE,iBAAiB;IAI7D,OAAO,CAAC,OAAO,EAAE,iBAAiB;IAMxC,SAAS,CAAC,qBAAqB;CAGhC"}
@@ -10,9 +10,16 @@ class ClientUserListProcessor extends common_list_processor_1.CommonListProcesso
10
10
  super();
11
11
  this.listFilterService = listFilterService;
12
12
  this.config = {
13
- query: 'sys_users u left join sys_tenants t on t.id = u.organization_id',
13
+ query: `sys_users u
14
+ left join sys_tenant_users tu on tu.user_id = u.id and tu.deleted_at is null
15
+ left join sys_tenants t on t.id = tu.tenant_id`,
14
16
  columns: [
15
17
  { key: 'u.id', identifier: 'id', type: filter_value_type_enum_1.FilterValueTypeEnum.UUID },
18
+ {
19
+ key: 'tu.id',
20
+ identifier: 'membership_id',
21
+ type: filter_value_type_enum_1.FilterValueTypeEnum.UUID,
22
+ },
16
23
  { key: 'u.full_name', identifier: 'full_name', searchable: true },
17
24
  { key: 'u.email', identifier: 'email', searchable: true },
18
25
  {
@@ -21,7 +28,12 @@ class ClientUserListProcessor extends common_list_processor_1.CommonListProcesso
21
28
  type: filter_value_type_enum_1.FilterValueTypeEnum.BOOLEAN,
22
29
  },
23
30
  {
24
- key: 'u.organization_id',
31
+ key: 'tu.is_active',
32
+ identifier: 'membership_active',
33
+ type: filter_value_type_enum_1.FilterValueTypeEnum.BOOLEAN,
34
+ },
35
+ {
36
+ key: 'tu.tenant_id',
25
37
  identifier: 'tenant_id',
26
38
  type: filter_value_type_enum_1.FilterValueTypeEnum.UUID,
27
39
  },
@@ -1 +1 @@
1
- {"version":3,"file":"client.user.list.processor.js","sourceRoot":"","sources":["../../../src/admin/libraries/client.user.list.processor.ts"],"names":[],"mappings":";;;AAAA,gFAAuE;AACvE,sFAAgF;AAChF,wFAAmF;AAGnF,oEAA2D;AAW3D,MAAa,uBAAwB,SAAQ,2CAAmB;IAyC9D,YAA+B,iBAAoC;QACjE,KAAK,EAAE,CAAC;QADqB,sBAAiB,GAAjB,iBAAiB,CAAmB;QAxCzD,WAAM,GAA2B;YACzC,KAAK,EAAE,iEAAiE;YACxE,OAAO,EAAE;gBACP,EAAE,GAAG,EAAE,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,IAAI,EAAE,4CAAmB,CAAC,IAAI,EAAE;gBACjE,EAAE,GAAG,EAAE,aAAa,EAAE,UAAU,EAAE,WAAW,EAAE,UAAU,EAAE,IAAI,EAAE;gBACjE,EAAE,GAAG,EAAE,SAAS,EAAE,UAAU,EAAE,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE;gBACzD;oBACE,GAAG,EAAE,UAAU;oBACf,UAAU,EAAE,QAAQ;oBACpB,IAAI,EAAE,4CAAmB,CAAC,OAAO;iBAClC;gBACD;oBACE,GAAG,EAAE,mBAAmB;oBACxB,UAAU,EAAE,WAAW;oBACvB,IAAI,EAAE,4CAAmB,CAAC,IAAI;iBAC/B;gBACD,EAAE,GAAG,EAAE,QAAQ,EAAE,UAAU,EAAE,aAAa,EAAE,UAAU,EAAE,IAAI,EAAE;gBAC9D,EAAE,GAAG,EAAE,WAAW,EAAE,UAAU,EAAE,SAAS,EAAE;gBAC3C,EAAE,GAAG,EAAE,gBAAgB,EAAE,UAAU,EAAE,cAAc,EAAE;gBACrD,EAAE,GAAG,EAAE,WAAW,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU,EAAE,IAAI,EAAE;gBAC7D;oBACE,GAAG,EAAE,iBAAiB;oBACtB,UAAU,EAAE,eAAe;oBAC3B,IAAI,EAAE,4CAAmB,CAAC,QAAQ;iBACnC;gBACD;oBACE,GAAG,EAAE,qBAAqB;oBAC1B,UAAU,EAAE,mBAAmB;oBAC/B,IAAI,EAAE,4CAAmB,CAAC,QAAQ;iBACnC;gBACD;oBACE,GAAG,EAAE,cAAc;oBACnB,UAAU,EAAE,YAAY;oBACxB,IAAI,EAAE,4CAAmB,CAAC,QAAQ;iBACnC;aACF;YACD,UAAU,EAAE,CAAC,sBAAsB,CAAC;YACpC,WAAW,EAAE,EAAE,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,mCAAa,CAAC,IAAI,EAAE;SACpE,CAAC;IAIF,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,OAA0B;QACtC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QAEvB,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC;IACvB,CAAC;IAES,qBAAqB;QAC7B,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,sBAAsB,EAAE,yBAAQ,CAAC,WAAW,CAAC,CAAC;IACpE,CAAC;CACF;AAtDD,0DAsDC"}
1
+ {"version":3,"file":"client.user.list.processor.js","sourceRoot":"","sources":["../../../src/admin/libraries/client.user.list.processor.ts"],"names":[],"mappings":";;;AAAA,gFAAuE;AACvE,sFAAgF;AAChF,wFAAmF;AAGnF,oEAA2D;AAa3D,MAAa,uBAAwB,SAAQ,2CAAmB;IAqD9D,YAA+B,iBAAoC;QACjE,KAAK,EAAE,CAAC;QADqB,sBAAiB,GAAjB,iBAAiB,CAAmB;QApDzD,WAAM,GAA2B;YACzC,KAAK,EAAE;;qDAE0C;YACjD,OAAO,EAAE;gBACP,EAAE,GAAG,EAAE,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,IAAI,EAAE,4CAAmB,CAAC,IAAI,EAAE;gBACjE;oBACE,GAAG,EAAE,OAAO;oBACZ,UAAU,EAAE,eAAe;oBAC3B,IAAI,EAAE,4CAAmB,CAAC,IAAI;iBAC/B;gBACD,EAAE,GAAG,EAAE,aAAa,EAAE,UAAU,EAAE,WAAW,EAAE,UAAU,EAAE,IAAI,EAAE;gBACjE,EAAE,GAAG,EAAE,SAAS,EAAE,UAAU,EAAE,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE;gBACzD;oBACE,GAAG,EAAE,UAAU;oBACf,UAAU,EAAE,QAAQ;oBACpB,IAAI,EAAE,4CAAmB,CAAC,OAAO;iBAClC;gBACD;oBACE,GAAG,EAAE,cAAc;oBACnB,UAAU,EAAE,mBAAmB;oBAC/B,IAAI,EAAE,4CAAmB,CAAC,OAAO;iBAClC;gBACD;oBACE,GAAG,EAAE,cAAc;oBACnB,UAAU,EAAE,WAAW;oBACvB,IAAI,EAAE,4CAAmB,CAAC,IAAI;iBAC/B;gBACD,EAAE,GAAG,EAAE,QAAQ,EAAE,UAAU,EAAE,aAAa,EAAE,UAAU,EAAE,IAAI,EAAE;gBAC9D,EAAE,GAAG,EAAE,WAAW,EAAE,UAAU,EAAE,SAAS,EAAE;gBAC3C,EAAE,GAAG,EAAE,gBAAgB,EAAE,UAAU,EAAE,cAAc,EAAE;gBACrD,EAAE,GAAG,EAAE,WAAW,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU,EAAE,IAAI,EAAE;gBAC7D;oBACE,GAAG,EAAE,iBAAiB;oBACtB,UAAU,EAAE,eAAe;oBAC3B,IAAI,EAAE,4CAAmB,CAAC,QAAQ;iBACnC;gBACD;oBACE,GAAG,EAAE,qBAAqB;oBAC1B,UAAU,EAAE,mBAAmB;oBAC/B,IAAI,EAAE,4CAAmB,CAAC,QAAQ;iBACnC;gBACD;oBACE,GAAG,EAAE,cAAc;oBACnB,UAAU,EAAE,YAAY;oBACxB,IAAI,EAAE,4CAAmB,CAAC,QAAQ;iBACnC;aACF;YACD,UAAU,EAAE,CAAC,sBAAsB,CAAC;YACpC,WAAW,EAAE,EAAE,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,mCAAa,CAAC,IAAI,EAAE;SACpE,CAAC;IAIF,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,OAA0B;QACtC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QAEvB,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC;IACvB,CAAC;IAES,qBAAqB;QAC7B,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,sBAAsB,EAAE,yBAAQ,CAAC,WAAW,CAAC,CAAC;IACpE,CAAC;CACF;AAlED,0DAkEC"}
@@ -1 +1 @@
1
- {"version":3,"file":"tenant.delete.processor.d.ts","sourceRoot":"","sources":["../../../src/admin/libraries/tenant.delete.processor.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,MAAM,8CAA8C,CAAC;AACnF,OAAO,EAAE,eAAe,EAAE,MAAM,uCAAuC,CAAC;AAOxE,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAapD,qBAAa,qBAAsB,SAAQ,mBAAmB;IAChD,OAAO,CAAC,QAAQ,CAAC,KAAK;gBAAL,KAAK,EAAE,eAAe;IAI7C,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;CAuCjD"}
1
+ {"version":3,"file":"tenant.delete.processor.d.ts","sourceRoot":"","sources":["../../../src/admin/libraries/tenant.delete.processor.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,MAAM,8CAA8C,CAAC;AACnF,OAAO,EAAE,eAAe,EAAE,MAAM,uCAAuC,CAAC;AAUxE,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAepD,qBAAa,qBAAsB,SAAQ,mBAAmB;IAChD,OAAO,CAAC,QAAQ,CAAC,KAAK;gBAAL,KAAK,EAAE,eAAe;IAI7C,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;CAoDjD"}
@@ -7,6 +7,9 @@ const api_key_entity_1 = require("../../auth/entities/api.key.entity");
7
7
  const api_scope_entity_1 = require("../../auth/entities/api.scope.entity");
8
8
  const tenant_scope_entity_1 = require("../../auth/entities/tenant.scope.entity");
9
9
  const user_entity_1 = require("../../auth/entities/user.entity");
10
+ const tenant_user_entity_1 = require("../../auth/entities/tenant.user.entity");
11
+ const user_role_entity_1 = require("../../auth/entities/user.role.entity");
12
+ const tenant_invitation_entity_1 = require("../../auth/entities/tenant.invitation.entity");
10
13
  const tenant_entity_1 = require("../../tenant/entities/tenant.entity");
11
14
  const access_revocation_1 = require("../../auth/utilities/access.revocation");
12
15
  class TenantDeleteProcessor extends common_data_processor_1.CommonDataProcessor {
@@ -18,20 +21,30 @@ class TenantDeleteProcessor extends common_data_processor_1.CommonDataProcessor
18
21
  if (!(await tenant_entity_1.TenantEntity.existsBy({ id })))
19
22
  this.setColumnError('id', 'No tenant exists for this id');
20
23
  this.raiseExceptionOnValidationFailure();
21
- const users = await user_entity_1.UserEntity.find({
22
- where: { organization_id: id, deleted_at: (0, typeorm_1.IsNull)() },
23
- select: { id: true },
24
- });
24
+ const memberIds = (await tenant_user_entity_1.TenantUserEntity.find({
25
+ where: { tenant_id: id },
26
+ select: { user_id: true },
27
+ })).map((membership) => membership.user_id);
28
+ const staying = new Set(memberIds.length
29
+ ? (await tenant_user_entity_1.TenantUserEntity.find({
30
+ where: { user_id: (0, typeorm_1.In)(memberIds), tenant_id: (0, typeorm_1.Not)(id) },
31
+ select: { user_id: true },
32
+ })).map((membership) => membership.user_id)
33
+ : []);
34
+ const leaving = memberIds.filter((userId) => !staying.has(userId));
25
35
  const apiKeys = await api_key_entity_1.ApiKeyEntity.find({
26
36
  where: { tenant_id: id, deleted_at: (0, typeorm_1.IsNull)() },
27
37
  select: { id: true },
28
38
  });
29
39
  await tenant_entity_1.TenantEntity.getRepository().manager.transaction(async (trx) => {
30
- for (const user of users) {
31
- await access_revocation_1.AccessRevocation.revokeAll(trx, user.id, false);
32
- }
33
- if (users.length)
34
- await trx.softDelete(user_entity_1.UserEntity, users.map((user) => user.id));
40
+ for (const userId of leaving)
41
+ await access_revocation_1.AccessRevocation.revokeAll(trx, userId, false);
42
+ await access_revocation_1.AccessRevocation.revokeOrganization(trx, id);
43
+ if (leaving.length)
44
+ await trx.softDelete(user_entity_1.UserEntity, leaving);
45
+ await trx.softDelete(user_role_entity_1.UserRoleEntity, { tenant_id: id });
46
+ await trx.softDelete(tenant_user_entity_1.TenantUserEntity, { tenant_id: id });
47
+ await trx.softDelete(tenant_invitation_entity_1.TenantInvitationEntity, { tenant_id: id });
35
48
  if (apiKeys.length) {
36
49
  const apiKeyIds = apiKeys.map((apiKey) => apiKey.id);
37
50
  await trx.update(api_key_entity_1.ApiKeyEntity, { id: (0, typeorm_1.In)(apiKeyIds) }, { is_active: false, revoked_at: new Date() });
@@ -1 +1 @@
1
- {"version":3,"file":"tenant.delete.processor.js","sourceRoot":"","sources":["../../../src/admin/libraries/tenant.delete.processor.ts"],"names":[],"mappings":";;;AAAA,qCAAqC;AACrC,wFAAmF;AAEnF,uEAAkE;AAClE,2EAAsE;AACtE,iFAA4E;AAC5E,iEAA6D;AAC7D,uEAAmE;AACnE,8EAA0E;AAc1E,MAAa,qBAAsB,SAAQ,2CAAmB;IAC5D,YAA6B,KAAsB;QACjD,KAAK,EAAE,CAAC;QADmB,UAAK,GAAL,KAAK,CAAiB;IAEnD,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,EAAU;QACtB,IAAI,CAAC,CAAC,MAAM,4BAAY,CAAC,QAAQ,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;YACxC,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,8BAA8B,CAAC,CAAC;QAC5D,IAAI,CAAC,iCAAiC,EAAE,CAAC;QAEzC,MAAM,KAAK,GAAG,MAAM,wBAAU,CAAC,IAAI,CAAC;YAClC,KAAK,EAAE,EAAE,eAAe,EAAE,EAAE,EAAE,UAAU,EAAE,IAAA,gBAAM,GAAE,EAAE;YACpD,MAAM,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE;SACrB,CAAC,CAAC;QACH,MAAM,OAAO,GAAG,MAAM,6BAAY,CAAC,IAAI,CAAC;YACtC,KAAK,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,UAAU,EAAE,IAAA,gBAAM,GAAE,EAAE;YAC9C,MAAM,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE;SACrB,CAAC,CAAC;QAEH,MAAM,4BAAY,CAAC,aAAa,EAAE,CAAC,OAAO,CAAC,WAAW,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;YACnE,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;gBACzB,MAAM,oCAAgB,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;YACxD,CAAC;YACD,IAAI,KAAK,CAAC,MAAM;gBACd,MAAM,GAAG,CAAC,UAAU,CAClB,wBAAU,EACV,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAC7B,CAAC;YACJ,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;gBACnB,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;gBACrD,MAAM,GAAG,CAAC,MAAM,CACd,6BAAY,EACZ,EAAE,EAAE,EAAE,IAAA,YAAE,EAAC,SAAS,CAAC,EAAE,EACrB,EAAE,SAAS,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,IAAI,EAAE,EAAE,CAC7C,CAAC;gBACF,MAAM,GAAG,CAAC,UAAU,CAAC,iCAAc,EAAE,EAAE,UAAU,EAAE,IAAA,YAAE,EAAC,SAAS,CAAC,EAAE,CAAC,CAAC;gBACpE,MAAM,GAAG,CAAC,UAAU,CAAC,6BAAY,EAAE,SAAS,CAAC,CAAC;YAChD,CAAC;YACD,MAAM,GAAG,CAAC,UAAU,CAAC,uCAAiB,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC,CAAC;YAC3D,MAAM,GAAG,CAAC,UAAU,CAAC,4BAAY,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;QAC7C,CAAC,CAAC,CAAC;QAEH,OAAO,EAAE,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC;IAC1D,CAAC;CACF;AA5CD,sDA4CC"}
1
+ {"version":3,"file":"tenant.delete.processor.js","sourceRoot":"","sources":["../../../src/admin/libraries/tenant.delete.processor.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"user.data.processor.d.ts","sourceRoot":"","sources":["../../../src/admin/libraries/user.data.processor.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,MAAM,8CAA8C,CAAC;AACnF,OAAO,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAO7D,8BAAsB,iBAAkB,SAAQ,mBAAmB;cAQjD,aAAa,CAC3B,KAAK,EAAE,MAAM,EACb,KAAK,SAAU,EACf,aAAa,CAAC,EAAE,MAAM,GACrB,OAAO,CAAC,IAAI,CAAC;cAOA,eAAe,CAC7B,OAAO,EAAE,MAAM,GAAG,SAAS,EAC3B,WAAW,EAAE,MAAM,GAAG,SAAS,EAC/B,KAAK,SAAY,EACjB,aAAa,CAAC,EAAE,MAAM,GACrB,OAAO,CAAC,IAAI,CAAC;IAiBhB,SAAS,CAAC,gBAAgB,CACxB,QAAQ,EAAE,MAAM,GAAG,SAAS,EAC5B,MAAM,EAAE,OAAO,EACf,KAAK,SAAa,GACjB,IAAI;IAMP,SAAS,CAAC,YAAY,CAAC,CAAC,SAAS,UAAU,EAAE,IAAI,EAAE,CAAC,GAAG,CAAC;CAIzD"}
1
+ {"version":3,"file":"user.data.processor.d.ts","sourceRoot":"","sources":["../../../src/admin/libraries/user.data.processor.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,MAAM,8CAA8C,CAAC;AACnF,OAAO,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAO7D,8BAAsB,iBAAkB,SAAQ,mBAAmB;cASjD,aAAa,CAC3B,KAAK,EAAE,MAAM,EACb,KAAK,SAAU,EACf,aAAa,CAAC,EAAE,MAAM,GACrB,OAAO,CAAC,IAAI,CAAC;cAUA,eAAe,CAC7B,OAAO,EAAE,MAAM,GAAG,SAAS,EAC3B,WAAW,EAAE,MAAM,GAAG,SAAS,EAC/B,KAAK,SAAY,EACjB,aAAa,CAAC,EAAE,MAAM,GACrB,OAAO,CAAC,IAAI,CAAC;IAiBhB,SAAS,CAAC,gBAAgB,CACxB,QAAQ,EAAE,MAAM,GAAG,SAAS,EAC5B,MAAM,EAAE,OAAO,EACf,KAAK,SAAa,GACjB,IAAI;IAMP,SAAS,CAAC,YAAY,CAAC,CAAC,SAAS,UAAU,EAAE,IAAI,EAAE,CAAC,GAAG,CAAC;CAIzD"}
@@ -6,8 +6,11 @@ const common_data_processor_1 = require("../../common/libraries/common.data.proc
6
6
  const user_entity_1 = require("../../auth/entities/user.entity");
7
7
  class UserDataProcessor extends common_data_processor_1.CommonDataProcessor {
8
8
  async validateEmail(email, field = 'email', excludeUserId) {
9
+ const match = user_entity_1.UserEntity.emailMatching(email);
9
10
  const existing = await user_entity_1.UserEntity.findOne({
10
- where: excludeUserId ? { email, id: (0, typeorm_1.Not)(excludeUserId) } : { email },
11
+ where: excludeUserId
12
+ ? { email: match, id: (0, typeorm_1.Not)(excludeUserId) }
13
+ : { email: match },
11
14
  });
12
15
  if (existing)
13
16
  this.setColumnError(field, 'Email is already registered');
@@ -1 +1 @@
1
- {"version":3,"file":"user.data.processor.js","sourceRoot":"","sources":["../../../src/admin/libraries/user.data.processor.ts"],"names":[],"mappings":";;;AAAA,qCAAgD;AAChD,wFAAmF;AACnF,iEAA6D;AAO7D,MAAsB,iBAAkB,SAAQ,2CAAmB;IAQvD,KAAK,CAAC,aAAa,CAC3B,KAAa,EACb,KAAK,GAAG,OAAO,EACf,aAAsB;QAEtB,MAAM,QAAQ,GAAG,MAAM,wBAAU,CAAC,OAAO,CAAC;YACxC,KAAK,EAAE,aAAa,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,IAAA,aAAG,EAAC,aAAa,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE;SACrE,CAAC,CAAC;QACH,IAAI,QAAQ;YAAE,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,6BAA6B,CAAC,CAAC;IAC1E,CAAC;IAES,KAAK,CAAC,eAAe,CAC7B,OAA2B,EAC3B,WAA+B,EAC/B,KAAK,GAAG,SAAS,EACjB,aAAsB;QAEtB,IAAI,CAAC,OAAO;YAAE,OAAO;QAErB,MAAM,KAAK,GAAiC,EAAE,OAAO,EAAE,CAAC;QACxD,IAAI,WAAW;YAAE,KAAK,CAAC,YAAY,GAAG,WAAW,CAAC;QAClD,IAAI,aAAa;YAAE,KAAK,CAAC,EAAE,GAAG,IAAA,aAAG,EAAC,aAAa,CAAC,CAAC;QAEjD,MAAM,QAAQ,GAAG,MAAM,wBAAU,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;QACrD,IAAI,QAAQ;YACV,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,sCAAsC,CAAC,CAAC;IACvE,CAAC;IAOS,gBAAgB,CACxB,QAA4B,EAC5B,MAAe,EACf,KAAK,GAAG,UAAU;QAElB,IAAI,CAAC,MAAM,IAAI,CAAC,QAAQ;YACtB,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,sBAAsB,CAAC,CAAC;IACvD,CAAC;IAGS,YAAY,CAAuB,IAAO;QAClD,OAAQ,IAA8B,CAAC,QAAQ,CAAC;QAChD,OAAO,IAAI,CAAC;IACd,CAAC;CACF;AAvDD,8CAuDC"}
1
+ {"version":3,"file":"user.data.processor.js","sourceRoot":"","sources":["../../../src/admin/libraries/user.data.processor.ts"],"names":[],"mappings":";;;AAAA,qCAAgD;AAChD,wFAAmF;AACnF,iEAA6D;AAO7D,MAAsB,iBAAkB,SAAQ,2CAAmB;IASvD,KAAK,CAAC,aAAa,CAC3B,KAAa,EACb,KAAK,GAAG,OAAO,EACf,aAAsB;QAEtB,MAAM,KAAK,GAAG,wBAAU,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QAC9C,MAAM,QAAQ,GAAG,MAAM,wBAAU,CAAC,OAAO,CAAC;YACxC,KAAK,EAAE,aAAa;gBAClB,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,EAAE,IAAA,aAAG,EAAC,aAAa,CAAC,EAAE;gBAC1C,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE;SACrB,CAAC,CAAC;QACH,IAAI,QAAQ;YAAE,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,6BAA6B,CAAC,CAAC;IAC1E,CAAC;IAES,KAAK,CAAC,eAAe,CAC7B,OAA2B,EAC3B,WAA+B,EAC/B,KAAK,GAAG,SAAS,EACjB,aAAsB;QAEtB,IAAI,CAAC,OAAO;YAAE,OAAO;QAErB,MAAM,KAAK,GAAiC,EAAE,OAAO,EAAE,CAAC;QACxD,IAAI,WAAW;YAAE,KAAK,CAAC,YAAY,GAAG,WAAW,CAAC;QAClD,IAAI,aAAa;YAAE,KAAK,CAAC,EAAE,GAAG,IAAA,aAAG,EAAC,aAAa,CAAC,CAAC;QAEjD,MAAM,QAAQ,GAAG,MAAM,wBAAU,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;QACrD,IAAI,QAAQ;YACV,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,sCAAsC,CAAC,CAAC;IACvE,CAAC;IAOS,gBAAgB,CACxB,QAA4B,EAC5B,MAAe,EACf,KAAK,GAAG,UAAU;QAElB,IAAI,CAAC,MAAM,IAAI,CAAC,QAAQ;YACtB,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,sBAAsB,CAAC,CAAC;IACvD,CAAC;IAGS,YAAY,CAAuB,IAAO;QAClD,OAAQ,IAA8B,CAAC,QAAQ,CAAC;QAChD,OAAO,IAAI,CAAC;IACd,CAAC;CACF;AA3DD,8CA2DC"}
@@ -1 +1 @@
1
- {"version":3,"file":"auth.module.d.ts","sourceRoot":"","sources":["../../src/auth/auth.module.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,aAAa,EAId,MAAM,gBAAgB,CAAC;AAkBxB,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAC5D,YAAY,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AA0H5D,qBAMa,UAAU;IACrB,MAAM,CAAC,QAAQ,CAAC,OAAO,GAAE,iBAAsB,GAAG,aAAa;CAShE"}
1
+ {"version":3,"file":"auth.module.d.ts","sourceRoot":"","sources":["../../src/auth/auth.module.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,aAAa,EAId,MAAM,gBAAgB,CAAC;AAoBxB,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAC5D,YAAY,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAwJ5D,qBAMa,UAAU;IACrB,MAAM,CAAC,QAAQ,CAAC,OAAO,GAAE,iBAAsB,GAAG,aAAa;CAShE"}
@@ -13,6 +13,8 @@ const jwt_1 = require("@nestjs/jwt");
13
13
  const passport_1 = require("@nestjs/passport");
14
14
  const typeorm_1 = require("@nestjs/typeorm");
15
15
  const common_module_1 = require("../common/common.module");
16
+ const notification_module_1 = require("../notification/notification.module");
17
+ const tenant_user_invited_mail_job_1 = require("../notification/jobs/tenant.user.invited.mail.job");
16
18
  const audit_service_1 = require("../common/services/audit.service");
17
19
  const cache_service_1 = require("../common/services/cache.service");
18
20
  const encryption_service_1 = require("../common/services/encryption.service");
@@ -25,10 +27,11 @@ const jwt_middleware_1 = require("./middlewares/jwt.middleware");
25
27
  const admin_jwt_middleware_1 = require("./middlewares/admin.jwt.middleware");
26
28
  const api_key_middleware_1 = require("./middlewares/api.key.middleware");
27
29
  const es6_classes_1 = require("./es6.classes");
28
- const [ApiKeyService, ScopeService, AuthService, AdminAuthService, GoogleAuthService, RoleService, ImpersonationService,] = es6_classes_1.es6Classes.services;
29
- function createAuthImports() {
30
+ const [ApiKeyService, ScopeService, AuthService, AdminAuthService, GoogleAuthService, RoleService, ImpersonationService, TenantMembershipService, TenantInvitationService,] = es6_classes_1.es6Classes.services;
31
+ function createAuthImports(options) {
30
32
  return [
31
33
  common_module_1.CommonModule,
34
+ options ? notification_module_1.NotificationModule.register(options) : notification_module_1.NotificationModule,
32
35
  passport_1.PassportModule.register({ defaultStrategy: 'jwt' }),
33
36
  jwt_1.JwtModule.registerAsync({
34
37
  useFactory: () => ({
@@ -86,6 +89,20 @@ function createAuthProviders(options = {}) {
86
89
  (0, typeorm_1.getDataSourceToken)(options.dataSourceName),
87
90
  ],
88
91
  },
92
+ {
93
+ provide: TenantMembershipService,
94
+ useFactory: (authService, dataSource) => new TenantMembershipService(authService, dataSource),
95
+ inject: [AuthService, (0, typeorm_1.getDataSourceToken)(options.dataSourceName)],
96
+ },
97
+ {
98
+ provide: TenantInvitationService,
99
+ useFactory: (authService, dataSource, invitedMailJob) => new TenantInvitationService(authService, dataSource, invitedMailJob),
100
+ inject: [
101
+ AuthService,
102
+ (0, typeorm_1.getDataSourceToken)(options.dataSourceName),
103
+ tenant_user_invited_mail_job_1.TenantUserInvitedMailJob,
104
+ ],
105
+ },
89
106
  GoogleAuthService,
90
107
  jwt_strategy_1.JwtStrategy,
91
108
  jwt_refresh_strategy_1.JwtRefreshStrategy,
@@ -101,6 +118,8 @@ const authExports = [
101
118
  AuthService,
102
119
  AdminAuthService,
103
120
  ImpersonationService,
121
+ TenantMembershipService,
122
+ TenantInvitationService,
104
123
  ApiKeyService,
105
124
  ScopeService,
106
125
  RoleService,
@@ -118,7 +137,7 @@ let AuthModule = AuthModule_1 = class AuthModule {
118
137
  static register(options = {}) {
119
138
  return {
120
139
  module: AuthModule_1,
121
- imports: createAuthImports(),
140
+ imports: createAuthImports(options),
122
141
  controllers: [...es6_classes_1.es6Classes.controllers],
123
142
  providers: createAuthProviders(options),
124
143
  exports: authExports,
@@ -1 +1 @@
1
- {"version":3,"file":"auth.module.js","sourceRoot":"","sources":["../../src/auth/auth.module.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"auth.module.js","sourceRoot":"","sources":["../../src/auth/auth.module.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,9 @@
1
1
  import type { Request } from 'express';
2
2
  import { AuthService } from '../services/auth.service';
3
3
  import { GoogleAuthService } from '../services/google.auth.service';
4
- import { AuthenticatedAccess, AuthTokenPair } from '../types/auth.types';
4
+ import { TenantMembershipService } from '../services/tenant.membership.service';
5
+ import { TenantInvitationService } from '../services/tenant.invitation.service';
6
+ import { AuthTokenPair, CurrentUserProfile } from '../types/auth.types';
5
7
  import { LoginDto } from '../dtos/login.dto';
6
8
  import { GoogleLoginDto } from '../dtos/google.login.dto';
7
9
  import { RegisterDto } from '../dtos/register.dto';
@@ -10,12 +12,10 @@ import { ChangePasswordDto } from '../dtos/change.password.dto';
10
12
  export declare class AuthController {
11
13
  private readonly authService;
12
14
  private readonly googleAuthService;
13
- constructor(authService: AuthService, googleAuthService: GoogleAuthService);
14
- me(): Promise<{
15
- user: AuthenticatedAccess['user'];
16
- roles: AuthenticatedAccess['roles'];
17
- organization: AuthenticatedAccess['organization'];
18
- }>;
15
+ private readonly tenantMembershipService;
16
+ private readonly tenantInvitationService;
17
+ constructor(authService: AuthService, googleAuthService: GoogleAuthService, tenantMembershipService: TenantMembershipService, tenantInvitationService: TenantInvitationService);
18
+ me(): Promise<CurrentUserProfile>;
19
19
  login(dto: LoginDto, request: Request): Promise<AuthTokenPair>;
20
20
  googleLogin(dto: GoogleLoginDto, request: Request): Promise<AuthTokenPair>;
21
21
  register(dto: RegisterDto, request: Request): Promise<AuthTokenPair>;
@@ -26,6 +26,7 @@ export declare class AuthController {
26
26
  changePassword(dto: ChangePasswordDto): Promise<{
27
27
  success: true;
28
28
  }>;
29
+ private signIn;
29
30
  private contextOf;
30
31
  }
31
32
  //# sourceMappingURL=auth.controller.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"auth.controller.d.ts","sourceRoot":"","sources":["../../../src/auth/controllers/auth.controller.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACvD,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AACpE,OAAO,EACL,mBAAmB,EACnB,aAAa,EAEd,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7C,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAC5D,OAAO,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAMhE,qBAEa,cAAc;IAEvB,OAAO,CAAC,QAAQ,CAAC,WAAW;IAC5B,OAAO,CAAC,QAAQ,CAAC,iBAAiB;gBADjB,WAAW,EAAE,WAAW,EACxB,iBAAiB,EAAE,iBAAiB;IAQjD,EAAE,IAAI,OAAO,CAAC;QAClB,IAAI,EAAE,mBAAmB,CAAC,MAAM,CAAC,CAAC;QAClC,KAAK,EAAE,mBAAmB,CAAC,OAAO,CAAC,CAAC;QACpC,YAAY,EAAE,mBAAmB,CAAC,cAAc,CAAC,CAAC;KACnD,CAAC;IAYI,KAAK,CACD,GAAG,EAAE,QAAQ,EACd,OAAO,EAAE,OAAO,GACtB,OAAO,CAAC,aAAa,CAAC;IAanB,WAAW,CACP,GAAG,EAAE,cAAc,EACpB,OAAO,EAAE,OAAO,GACtB,OAAO,CAAC,aAAa,CAAC;IAWnB,QAAQ,CACJ,GAAG,EAAE,WAAW,EACjB,OAAO,EAAE,OAAO,GACtB,OAAO,CAAC,aAAa,CAAC;IAOnB,OAAO,CACH,GAAG,EAAE,eAAe,EACrB,OAAO,EAAE,OAAO,GACtB,OAAO,CAAC,aAAa,CAAC;IAWnB,MAAM,CAAS,GAAG,EAAE,eAAe,GAAG,OAAO,CAAC;QAAE,OAAO,EAAE,IAAI,CAAA;KAAE,CAAC;IAShE,cAAc,CACV,GAAG,EAAE,iBAAiB,GAC7B,OAAO,CAAC;QAAE,OAAO,EAAE,IAAI,CAAA;KAAE,CAAC;IAM7B,OAAO,CAAC,SAAS;CAMlB"}
1
+ {"version":3,"file":"auth.controller.d.ts","sourceRoot":"","sources":["../../../src/auth/controllers/auth.controller.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACvD,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AACpE,OAAO,EAAE,uBAAuB,EAAE,MAAM,uCAAuC,CAAC;AAChF,OAAO,EAAE,uBAAuB,EAAE,MAAM,uCAAuC,CAAC;AAEhF,OAAO,EACL,aAAa,EACb,kBAAkB,EAEnB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7C,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAC5D,OAAO,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAKhE,qBAEa,cAAc;IAEvB,OAAO,CAAC,QAAQ,CAAC,WAAW;IAC5B,OAAO,CAAC,QAAQ,CAAC,iBAAiB;IAClC,OAAO,CAAC,QAAQ,CAAC,uBAAuB;IACxC,OAAO,CAAC,QAAQ,CAAC,uBAAuB;gBAHvB,WAAW,EAAE,WAAW,EACxB,iBAAiB,EAAE,iBAAiB,EACpC,uBAAuB,EAAE,uBAAuB,EAChD,uBAAuB,EAAE,uBAAuB;IAU7D,EAAE,IAAI,OAAO,CAAC,kBAAkB,CAAC;IAuBjC,KAAK,CACD,GAAG,EAAE,QAAQ,EACd,OAAO,EAAE,OAAO,GACtB,OAAO,CAAC,aAAa,CAAC;IAanB,WAAW,CACP,GAAG,EAAE,cAAc,EACpB,OAAO,EAAE,OAAO,GACtB,OAAO,CAAC,aAAa,CAAC;IAWnB,QAAQ,CACJ,GAAG,EAAE,WAAW,EACjB,OAAO,EAAE,OAAO,GACtB,OAAO,CAAC,aAAa,CAAC;IAOnB,OAAO,CACH,GAAG,EAAE,eAAe,EACrB,OAAO,EAAE,OAAO,GACtB,OAAO,CAAC,aAAa,CAAC;IAWnB,MAAM,CAAS,GAAG,EAAE,eAAe,GAAG,OAAO,CAAC;QAAE,OAAO,EAAE,IAAI,CAAA;KAAE,CAAC;IAahE,cAAc,CACV,GAAG,EAAE,iBAAiB,GAC7B,OAAO,CAAC;QAAE,OAAO,EAAE,IAAI,CAAA;KAAE,CAAC;YAMf,MAAM;IAUpB,OAAO,CAAC,SAAS;CAMlB"}
@@ -17,6 +17,8 @@ const common_1 = require("@nestjs/common");
17
17
  const swagger_1 = require("@nestjs/swagger");
18
18
  const auth_service_1 = require("../services/auth.service");
19
19
  const google_auth_service_1 = require("../services/google.auth.service");
20
+ const tenant_membership_service_1 = require("../services/tenant.membership.service");
21
+ const tenant_invitation_service_1 = require("../services/tenant.invitation.service");
20
22
  const login_dto_1 = require("../dtos/login.dto");
21
23
  const google_login_dto_1 = require("../dtos/google.login.dto");
22
24
  const register_dto_1 = require("../dtos/register.dto");
@@ -25,29 +27,38 @@ const change_password_dto_1 = require("../dtos/change.password.dto");
25
27
  const register_user_data_processor_1 = require("../processors/register.user.data.processor");
26
28
  const google_user_data_processor_1 = require("../processors/google.user.data.processor");
27
29
  const change_password_data_processor_1 = require("../processors/change.password.data.processor");
28
- const tenant_entity_1 = require("../../tenant/entities/tenant.entity");
29
30
  let AuthController = class AuthController {
30
- constructor(authService, googleAuthService) {
31
+ constructor(authService, googleAuthService, tenantMembershipService, tenantInvitationService) {
31
32
  this.authService = authService;
32
33
  this.googleAuthService = googleAuthService;
34
+ this.tenantMembershipService = tenantMembershipService;
35
+ this.tenantInvitationService = tenantInvitationService;
33
36
  }
34
37
  async me() {
35
- const { user, roles } = await this.authService.validateRole();
36
- const organization = await tenant_entity_1.TenantEntity.findOne({
37
- where: { id: user.organization_id },
38
- });
39
- return { user, roles, organization: organization.name };
38
+ const { user, roles } = await this.authService.validateIdentity();
39
+ const [current, organizations, invitations] = await Promise.all([
40
+ this.tenantMembershipService.sessionOrganization(user),
41
+ this.tenantMembershipService.organizationsOf(user.id),
42
+ this.tenantInvitationService.pendingFor(user),
43
+ ]);
44
+ return {
45
+ user,
46
+ roles,
47
+ organization: current?.name ?? null,
48
+ organizations,
49
+ invitations,
50
+ };
40
51
  }
41
52
  async login(dto, request) {
42
53
  const user = await this.authService.validateCredentials(dto.email, dto.password);
43
54
  this.authService.assertTenantLogin(user);
44
- return this.authService.issueTokens(user, this.contextOf(request));
55
+ return this.signIn(user, request);
45
56
  }
46
57
  async googleLogin(dto, request) {
47
58
  const tokenInfo = await this.googleAuthService.verifyIdToken(dto.id_token);
48
59
  const user = await new google_user_data_processor_1.GoogleUserDataProcessor().process(tokenInfo);
49
60
  this.authService.assertTenantLogin(user);
50
- return this.authService.issueTokens(user, this.contextOf(request));
61
+ return this.signIn(user, request);
51
62
  }
52
63
  async register(dto, request) {
53
64
  const user = await new register_user_data_processor_1.RegisterUserDataProcessor().process(dto);
@@ -61,10 +72,16 @@ let AuthController = class AuthController {
61
72
  return { success: true };
62
73
  }
63
74
  async changePassword(dto) {
64
- const { user } = await this.authService.validateRole();
75
+ const { user } = await this.authService.validateIdentity();
65
76
  await new change_password_data_processor_1.ChangePasswordDataProcessor(user.id).process(dto);
66
77
  return { success: true };
67
78
  }
79
+ async signIn(user, request) {
80
+ return this.authService.issueTokens(user, {
81
+ ...this.contextOf(request),
82
+ tenant_id: await this.tenantMembershipService.landingTenant(user),
83
+ });
84
+ }
68
85
  contextOf(request) {
69
86
  return {
70
87
  ip_address: request.ip,
@@ -78,6 +95,7 @@ __decorate([
78
95
  (0, swagger_1.ApiBearerAuth)(),
79
96
  (0, swagger_1.ApiOperation)({
80
97
  summary: 'Resolve the current authenticated user and roles.',
98
+ description: "`roles` and `organization` belong to the session's organization. `organizations` lists every one the user may switch to, and `invitations` the pending ones addressed to them. Reachable while `user.password_change_required` is set — every other endpoint refuses until the one-time password is changed.",
81
99
  }),
82
100
  __metadata("design:type", Function),
83
101
  __metadata("design:paramtypes", []),
@@ -87,6 +105,7 @@ __decorate([
87
105
  (0, common_1.Post)('login'),
88
106
  (0, swagger_1.ApiOperation)({
89
107
  summary: 'Authenticate and receive an access/refresh token pair.',
108
+ description: 'The session works in the organization last switched to, or the first the user belongs to; it has none when they belong to none.',
90
109
  }),
91
110
  __param(0, (0, common_1.Body)()),
92
111
  __param(1, (0, common_1.Req)()),
@@ -141,7 +160,10 @@ __decorate([
141
160
  (0, common_1.Post)('change-password'),
142
161
  (0, common_1.HttpCode)(common_1.HttpStatus.OK),
143
162
  (0, swagger_1.ApiBearerAuth)(),
144
- (0, swagger_1.ApiOperation)({ summary: `Change the authenticated user's password.` }),
163
+ (0, swagger_1.ApiOperation)({
164
+ summary: `Change the authenticated user's password.`,
165
+ description: 'Also how a one-time password is replaced: send it as `current_password`. Clears `password_change_required`.',
166
+ }),
145
167
  __param(0, (0, common_1.Body)()),
146
168
  __metadata("design:type", Function),
147
169
  __metadata("design:paramtypes", [change_password_dto_1.ChangePasswordDto]),
@@ -151,6 +173,8 @@ exports.AuthController = AuthController = __decorate([
151
173
  (0, swagger_1.ApiTags)('Auth'),
152
174
  (0, common_1.Controller)('api/auth'),
153
175
  __metadata("design:paramtypes", [auth_service_1.AuthService,
154
- google_auth_service_1.GoogleAuthService])
176
+ google_auth_service_1.GoogleAuthService,
177
+ tenant_membership_service_1.TenantMembershipService,
178
+ tenant_invitation_service_1.TenantInvitationService])
155
179
  ], AuthController);
156
180
  //# sourceMappingURL=auth.controller.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"auth.controller.js","sourceRoot":"","sources":["../../../src/auth/controllers/auth.controller.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"auth.controller.js","sourceRoot":"","sources":["../../../src/auth/controllers/auth.controller.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,2CAQwB;AACxB,6CAAuE;AAEvE,2DAAuD;AACvD,yEAAoE;AACpE,qFAAgF;AAChF,qFAAgF;AAOhF,iDAA6C;AAC7C,+DAA0D;AAC1D,uDAAmD;AACnD,iEAA4D;AAC5D,qEAAgE;AAChE,6FAAuF;AACvF,yFAAmF;AACnF,iGAA2F;AAIpF,IAAM,cAAc,GAApB,MAAM,cAAc;IACzB,YACmB,WAAwB,EACxB,iBAAoC,EACpC,uBAAgD,EAChD,uBAAgD;QAHhD,gBAAW,GAAX,WAAW,CAAa;QACxB,sBAAiB,GAAjB,iBAAiB,CAAmB;QACpC,4BAAuB,GAAvB,uBAAuB,CAAyB;QAChD,4BAAuB,GAAvB,uBAAuB,CAAyB;IAChE,CAAC;IASE,AAAN,KAAK,CAAC,EAAE;QACN,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,gBAAgB,EAAE,CAAC;QAClE,MAAM,CAAC,OAAO,EAAE,aAAa,EAAE,WAAW,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;YAC9D,IAAI,CAAC,uBAAuB,CAAC,mBAAmB,CAAC,IAAI,CAAC;YACtD,IAAI,CAAC,uBAAuB,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,CAAC;YACrD,IAAI,CAAC,uBAAuB,CAAC,UAAU,CAAC,IAAI,CAAC;SAC9C,CAAC,CAAC;QAEH,OAAO;YACL,IAAI;YACJ,KAAK;YACL,YAAY,EAAE,OAAO,EAAE,IAAI,IAAI,IAAI;YACnC,aAAa;YACb,WAAW;SACZ,CAAC;IACJ,CAAC;IAQK,AAAN,KAAK,CAAC,KAAK,CACD,GAAa,EACd,OAAgB;QAEvB,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,mBAAmB,CACrD,GAAG,CAAC,KAAK,EACT,GAAG,CAAC,QAAQ,CACb,CAAC;QACF,IAAI,CAAC,WAAW,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;QACzC,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IACpC,CAAC;IAMK,AAAN,KAAK,CAAC,WAAW,CACP,GAAmB,EACpB,OAAgB;QAEvB,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,aAAa,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC3E,MAAM,IAAI,GAAG,MAAM,IAAI,oDAAuB,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QACpE,IAAI,CAAC,WAAW,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;QACzC,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IACpC,CAAC;IAMK,AAAN,KAAK,CAAC,QAAQ,CACJ,GAAgB,EACjB,OAAgB;QAEvB,MAAM,IAAI,GAAG,MAAM,IAAI,wDAAyB,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QAChE,OAAO,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC;IACrE,CAAC;IAIK,AAAN,KAAK,CAAC,OAAO,CACH,GAAoB,EACrB,OAAgB;QAEvB,OAAO,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,GAAG,CAAC,aAAa,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC;IAC9E,CAAC;IASK,AAAN,KAAK,CAAC,MAAM,CAAS,GAAoB;QACvC,MAAM,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;QACjD,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IAC3B,CAAC;IAUK,AAAN,KAAK,CAAC,cAAc,CACV,GAAsB;QAE9B,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,gBAAgB,EAAE,CAAC;QAC3D,MAAM,IAAI,4DAA2B,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QAC5D,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IAC3B,CAAC;IAEO,KAAK,CAAC,MAAM,CAClB,IAAgB,EAChB,OAAgB;QAEhB,OAAO,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,IAAI,EAAE;YACxC,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC;YAC1B,SAAS,EAAE,MAAM,IAAI,CAAC,uBAAuB,CAAC,aAAa,CAAC,IAAI,CAAC;SAClE,CAAC,CAAC;IACL,CAAC;IAEO,SAAS,CAAC,OAAgB;QAChC,OAAO;YACL,UAAU,EAAE,OAAO,CAAC,EAAE;YACtB,UAAU,EAAE,OAAO,CAAC,OAAO,CAAC,YAAY,CAAC;SAC1C,CAAC;IACJ,CAAC;CACF,CAAA;AAjIY,wCAAc;AAenB;IAPL,IAAA,YAAG,EAAC,IAAI,CAAC;IACT,IAAA,uBAAa,GAAE;IACf,IAAA,sBAAY,EAAC;QACZ,OAAO,EAAE,mDAAmD;QAC5D,WAAW,EACT,8SAA8S;KACjT,CAAC;;;;wCAgBD;AAQK;IANL,IAAA,aAAI,EAAC,OAAO,CAAC;IACb,IAAA,sBAAY,EAAC;QACZ,OAAO,EAAE,wDAAwD;QACjE,WAAW,EACT,iIAAiI;KACpI,CAAC;IAEC,WAAA,IAAA,aAAI,GAAE,CAAA;IACN,WAAA,IAAA,YAAG,GAAE,CAAA;;qCADO,oBAAQ;;2CAStB;AAMK;IAJL,IAAA,aAAI,EAAC,QAAQ,CAAC;IACd,IAAA,sBAAY,EAAC;QACZ,OAAO,EAAE,yDAAyD;KACnE,CAAC;IAEC,WAAA,IAAA,aAAI,GAAE,CAAA;IACN,WAAA,IAAA,YAAG,GAAE,CAAA;;qCADO,iCAAc;;iDAO5B;AAMK;IAJL,IAAA,aAAI,EAAC,UAAU,CAAC;IAChB,IAAA,sBAAY,EAAC;QACZ,OAAO,EAAE,qDAAqD;KAC/D,CAAC;IAEC,WAAA,IAAA,aAAI,GAAE,CAAA;IACN,WAAA,IAAA,YAAG,GAAE,CAAA;;qCADO,0BAAW;;8CAKzB;AAIK;IAFL,IAAA,aAAI,EAAC,SAAS,CAAC;IACf,IAAA,sBAAY,EAAC,EAAE,OAAO,EAAE,kDAAkD,EAAE,CAAC;IAE3E,WAAA,IAAA,aAAI,GAAE,CAAA;IACN,WAAA,IAAA,YAAG,GAAE,CAAA;;qCADO,mCAAe;;6CAI7B;AASK;IAPL,IAAA,aAAI,EAAC,QAAQ,CAAC;IACd,IAAA,iBAAQ,EAAC,mBAAU,CAAC,EAAE,CAAC;IACvB,IAAA,uBAAa,GAAE;IACf,IAAA,sBAAY,EAAC;QACZ,OAAO,EACL,uEAAuE;KAC1E,CAAC;IACY,WAAA,IAAA,aAAI,GAAE,CAAA;;qCAAM,mCAAe;;4CAGxC;AAUK;IARL,IAAA,aAAI,EAAC,iBAAiB,CAAC;IACvB,IAAA,iBAAQ,EAAC,mBAAU,CAAC,EAAE,CAAC;IACvB,IAAA,uBAAa,GAAE;IACf,IAAA,sBAAY,EAAC;QACZ,OAAO,EAAE,2CAA2C;QACpD,WAAW,EACT,6GAA6G;KAChH,CAAC;IAEC,WAAA,IAAA,aAAI,GAAE,CAAA;;qCAAM,uCAAiB;;oDAK/B;yBA/GU,cAAc;IAF1B,IAAA,iBAAO,EAAC,MAAM,CAAC;IACf,IAAA,mBAAU,EAAC,UAAU,CAAC;qCAGW,0BAAW;QACL,uCAAiB;QACX,mDAAuB;QACvB,mDAAuB;GALxD,cAAc,CAiI1B"}