@neohm/nestend 4.0.1 → 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 (267) hide show
  1. package/README.md +61 -12
  2. package/dist/admin/controllers/admin.api.key.controller.d.ts +3 -1
  3. package/dist/admin/controllers/admin.api.key.controller.d.ts.map +1 -1
  4. package/dist/admin/controllers/admin.api.key.controller.js +6 -3
  5. package/dist/admin/controllers/admin.api.key.controller.js.map +1 -1
  6. package/dist/admin/controllers/admin.scope.controller.d.ts +2 -0
  7. package/dist/admin/controllers/admin.scope.controller.d.ts.map +1 -1
  8. package/dist/admin/controllers/admin.scope.controller.js +45 -5
  9. package/dist/admin/controllers/admin.scope.controller.js.map +1 -1
  10. package/dist/admin/controllers/admin.tenant.user.controller.d.ts +8 -1
  11. package/dist/admin/controllers/admin.tenant.user.controller.d.ts.map +1 -1
  12. package/dist/admin/controllers/admin.tenant.user.controller.js +75 -7
  13. package/dist/admin/controllers/admin.tenant.user.controller.js.map +1 -1
  14. package/dist/admin/dtos/add.client.membership.dto.d.ts +6 -0
  15. package/dist/admin/dtos/add.client.membership.dto.d.ts.map +1 -0
  16. package/dist/admin/dtos/add.client.membership.dto.js +41 -0
  17. package/dist/admin/dtos/add.client.membership.dto.js.map +1 -0
  18. package/dist/admin/dtos/add.scope.dto.d.ts +1 -0
  19. package/dist/admin/dtos/add.scope.dto.d.ts.map +1 -1
  20. package/dist/admin/dtos/add.scope.dto.js +9 -0
  21. package/dist/admin/dtos/add.scope.dto.js.map +1 -1
  22. package/dist/admin/dtos/scope.list.dto.d.ts +1 -0
  23. package/dist/admin/dtos/scope.list.dto.d.ts.map +1 -1
  24. package/dist/admin/dtos/scope.list.dto.js +22 -0
  25. package/dist/admin/dtos/scope.list.dto.js.map +1 -1
  26. package/dist/admin/es6.classes.d.ts +5 -2
  27. package/dist/admin/es6.classes.d.ts.map +1 -1
  28. package/dist/admin/es6.classes.js +4 -0
  29. package/dist/admin/es6.classes.js.map +1 -1
  30. package/dist/admin/libraries/api.key.data.processor.d.ts +3 -1
  31. package/dist/admin/libraries/api.key.data.processor.d.ts.map +1 -1
  32. package/dist/admin/libraries/api.key.data.processor.js +3 -6
  33. package/dist/admin/libraries/api.key.data.processor.js.map +1 -1
  34. package/dist/admin/libraries/bulk.user.data.processor.d.ts.map +1 -1
  35. package/dist/admin/libraries/bulk.user.data.processor.js +13 -5
  36. package/dist/admin/libraries/bulk.user.data.processor.js.map +1 -1
  37. package/dist/admin/libraries/client.membership.data.processor.d.ts +14 -0
  38. package/dist/admin/libraries/client.membership.data.processor.d.ts.map +1 -0
  39. package/dist/admin/libraries/client.membership.data.processor.js +56 -0
  40. package/dist/admin/libraries/client.membership.data.processor.js.map +1 -0
  41. package/dist/admin/libraries/client.user.data.processor.d.ts +1 -2
  42. package/dist/admin/libraries/client.user.data.processor.d.ts.map +1 -1
  43. package/dist/admin/libraries/client.user.data.processor.js +24 -31
  44. package/dist/admin/libraries/client.user.data.processor.js.map +1 -1
  45. package/dist/admin/libraries/client.user.delete.processor.d.ts.map +1 -1
  46. package/dist/admin/libraries/client.user.delete.processor.js +4 -0
  47. package/dist/admin/libraries/client.user.delete.processor.js.map +1 -1
  48. package/dist/admin/libraries/client.user.list.processor.d.ts.map +1 -1
  49. package/dist/admin/libraries/client.user.list.processor.js +14 -2
  50. package/dist/admin/libraries/client.user.list.processor.js.map +1 -1
  51. package/dist/admin/libraries/scope.data.processor.d.ts +1 -0
  52. package/dist/admin/libraries/scope.data.processor.d.ts.map +1 -1
  53. package/dist/admin/libraries/scope.data.processor.js +20 -0
  54. package/dist/admin/libraries/scope.data.processor.js.map +1 -1
  55. package/dist/admin/libraries/scope.list.processor.d.ts +2 -0
  56. package/dist/admin/libraries/scope.list.processor.d.ts.map +1 -1
  57. package/dist/admin/libraries/scope.list.processor.js +23 -1
  58. package/dist/admin/libraries/scope.list.processor.js.map +1 -1
  59. package/dist/admin/libraries/tenant.delete.processor.d.ts.map +1 -1
  60. package/dist/admin/libraries/tenant.delete.processor.js +22 -9
  61. package/dist/admin/libraries/tenant.delete.processor.js.map +1 -1
  62. package/dist/admin/libraries/user.data.processor.d.ts.map +1 -1
  63. package/dist/admin/libraries/user.data.processor.js +4 -1
  64. package/dist/admin/libraries/user.data.processor.js.map +1 -1
  65. package/dist/auth/auth.module.d.ts.map +1 -1
  66. package/dist/auth/auth.module.js +28 -5
  67. package/dist/auth/auth.module.js.map +1 -1
  68. package/dist/auth/controllers/auth.controller.d.ts +8 -7
  69. package/dist/auth/controllers/auth.controller.d.ts.map +1 -1
  70. package/dist/auth/controllers/auth.controller.js +36 -12
  71. package/dist/auth/controllers/auth.controller.js.map +1 -1
  72. package/dist/auth/controllers/impersonation.controller.d.ts +2 -2
  73. package/dist/auth/controllers/impersonation.controller.d.ts.map +1 -1
  74. package/dist/auth/controllers/tenant.invitation.controller.d.ts +18 -0
  75. package/dist/auth/controllers/tenant.invitation.controller.d.ts.map +1 -0
  76. package/dist/auth/controllers/tenant.invitation.controller.js +120 -0
  77. package/dist/auth/controllers/tenant.invitation.controller.js.map +1 -0
  78. package/dist/auth/controllers/tenant.member.controller.d.ts +18 -0
  79. package/dist/auth/controllers/tenant.member.controller.d.ts.map +1 -0
  80. package/dist/auth/controllers/tenant.member.controller.js +129 -0
  81. package/dist/auth/controllers/tenant.member.controller.js.map +1 -0
  82. package/dist/auth/controllers/user.invitation.controller.d.ts +12 -0
  83. package/dist/auth/controllers/user.invitation.controller.d.ts.map +1 -0
  84. package/dist/auth/controllers/user.invitation.controller.js +76 -0
  85. package/dist/auth/controllers/user.invitation.controller.js.map +1 -0
  86. package/dist/auth/controllers/user.organization.controller.d.ts +17 -0
  87. package/dist/auth/controllers/user.organization.controller.d.ts.map +1 -0
  88. package/dist/auth/controllers/user.organization.controller.js +88 -0
  89. package/dist/auth/controllers/user.organization.controller.js.map +1 -0
  90. package/dist/auth/dtos/invite.tenant.user.dto.d.ts +6 -0
  91. package/dist/auth/dtos/invite.tenant.user.dto.d.ts.map +1 -0
  92. package/dist/auth/dtos/invite.tenant.user.dto.js +45 -0
  93. package/dist/auth/dtos/invite.tenant.user.dto.js.map +1 -0
  94. package/dist/auth/dtos/member.roles.dto.d.ts +4 -0
  95. package/dist/auth/dtos/member.roles.dto.d.ts.map +1 -0
  96. package/dist/auth/dtos/member.roles.dto.js +28 -0
  97. package/dist/auth/dtos/member.roles.dto.js.map +1 -0
  98. package/dist/auth/dtos/switch.organization.dto.d.ts +5 -0
  99. package/dist/auth/dtos/switch.organization.dto.d.ts.map +1 -0
  100. package/dist/auth/dtos/switch.organization.dto.js +25 -0
  101. package/dist/auth/dtos/switch.organization.dto.js.map +1 -0
  102. package/dist/auth/dtos/tenant.invitation.list.dto.d.ts +5 -0
  103. package/dist/auth/dtos/tenant.invitation.list.dto.d.ts.map +1 -0
  104. package/dist/auth/dtos/tenant.invitation.list.dto.js +27 -0
  105. package/dist/auth/dtos/tenant.invitation.list.dto.js.map +1 -0
  106. package/dist/auth/dtos/tenant.member.list.dto.d.ts +5 -0
  107. package/dist/auth/dtos/tenant.member.list.dto.d.ts.map +1 -0
  108. package/dist/auth/dtos/tenant.member.list.dto.js +27 -0
  109. package/dist/auth/dtos/tenant.member.list.dto.js.map +1 -0
  110. package/dist/auth/entities/scope.entity.d.ts +2 -0
  111. package/dist/auth/entities/scope.entity.d.ts.map +1 -1
  112. package/dist/auth/entities/scope.entity.js +9 -0
  113. package/dist/auth/entities/scope.entity.js.map +1 -1
  114. package/dist/auth/entities/tenant.invitation.entity.d.ts +13 -0
  115. package/dist/auth/entities/tenant.invitation.entity.d.ts.map +1 -0
  116. package/dist/auth/entities/tenant.invitation.entity.js +52 -0
  117. package/dist/auth/entities/tenant.invitation.entity.js.map +1 -0
  118. package/dist/auth/entities/tenant.user.entity.d.ts +8 -0
  119. package/dist/auth/entities/tenant.user.entity.d.ts.map +1 -0
  120. package/dist/auth/entities/tenant.user.entity.js +35 -0
  121. package/dist/auth/entities/tenant.user.entity.js.map +1 -0
  122. package/dist/auth/entities/user.entity.d.ts +5 -0
  123. package/dist/auth/entities/user.entity.d.ts.map +1 -1
  124. package/dist/auth/entities/user.entity.js +17 -0
  125. package/dist/auth/entities/user.entity.js.map +1 -1
  126. package/dist/auth/entities/user.role.entity.d.ts +2 -2
  127. package/dist/auth/entities/user.role.entity.d.ts.map +1 -1
  128. package/dist/auth/entities/user.role.entity.js +2 -2
  129. package/dist/auth/entities/user.role.entity.js.map +1 -1
  130. package/dist/auth/enums/auth.default.enum.d.ts +3 -1
  131. package/dist/auth/enums/auth.default.enum.d.ts.map +1 -1
  132. package/dist/auth/enums/auth.default.enum.js +2 -0
  133. package/dist/auth/enums/auth.default.enum.js.map +1 -1
  134. package/dist/auth/enums/tenant.invitation.default.enum.d.ts +4 -0
  135. package/dist/auth/enums/tenant.invitation.default.enum.d.ts.map +1 -0
  136. package/dist/auth/enums/tenant.invitation.default.enum.js +8 -0
  137. package/dist/auth/enums/tenant.invitation.default.enum.js.map +1 -0
  138. package/dist/auth/enums/tenant.invitation.status.enum.d.ts +7 -0
  139. package/dist/auth/enums/tenant.invitation.status.enum.d.ts.map +1 -0
  140. package/dist/auth/enums/tenant.invitation.status.enum.js +11 -0
  141. package/dist/auth/enums/tenant.invitation.status.enum.js.map +1 -0
  142. package/dist/auth/enums/user.type.enum.d.ts.map +1 -1
  143. package/dist/auth/enums/user.type.enum.js.map +1 -1
  144. package/dist/auth/es6.classes.d.ts +15 -4
  145. package/dist/auth/es6.classes.d.ts.map +1 -1
  146. package/dist/auth/es6.classes.js +35 -2
  147. package/dist/auth/es6.classes.js.map +1 -1
  148. package/dist/auth/helpers/auth.d.ts +1 -1
  149. package/dist/auth/helpers/auth.d.ts.map +1 -1
  150. package/dist/auth/helpers/auth.js +7 -4
  151. package/dist/auth/helpers/auth.js.map +1 -1
  152. package/dist/auth/processors/change.password.data.processor.d.ts.map +1 -1
  153. package/dist/auth/processors/change.password.data.processor.js +1 -0
  154. package/dist/auth/processors/change.password.data.processor.js.map +1 -1
  155. package/dist/auth/processors/google.user.data.processor.js +1 -1
  156. package/dist/auth/processors/google.user.data.processor.js.map +1 -1
  157. package/dist/auth/processors/register.user.data.processor.js +1 -1
  158. package/dist/auth/processors/register.user.data.processor.js.map +1 -1
  159. package/dist/auth/processors/tenant.invitation.data.processor.d.ts +20 -0
  160. package/dist/auth/processors/tenant.invitation.data.processor.d.ts.map +1 -0
  161. package/dist/auth/processors/tenant.invitation.data.processor.js +112 -0
  162. package/dist/auth/processors/tenant.invitation.data.processor.js.map +1 -0
  163. package/dist/auth/processors/tenant.invitation.list.processor.d.ts +13 -0
  164. package/dist/auth/processors/tenant.invitation.list.processor.d.ts.map +1 -0
  165. package/dist/auth/processors/tenant.invitation.list.processor.js +67 -0
  166. package/dist/auth/processors/tenant.invitation.list.processor.js.map +1 -0
  167. package/dist/auth/processors/tenant.member.list.processor.d.ts +13 -0
  168. package/dist/auth/processors/tenant.member.list.processor.d.ts.map +1 -0
  169. package/dist/auth/processors/tenant.member.list.processor.js +66 -0
  170. package/dist/auth/processors/tenant.member.list.processor.js.map +1 -0
  171. package/dist/auth/services/admin.auth.service.d.ts.map +1 -1
  172. package/dist/auth/services/admin.auth.service.js +2 -2
  173. package/dist/auth/services/admin.auth.service.js.map +1 -1
  174. package/dist/auth/services/api.key.service.d.ts +3 -1
  175. package/dist/auth/services/api.key.service.d.ts.map +1 -1
  176. package/dist/auth/services/api.key.service.js +6 -3
  177. package/dist/auth/services/api.key.service.js.map +1 -1
  178. package/dist/auth/services/auth.service.d.ts +5 -0
  179. package/dist/auth/services/auth.service.d.ts.map +1 -1
  180. package/dist/auth/services/auth.service.js +51 -13
  181. package/dist/auth/services/auth.service.js.map +1 -1
  182. package/dist/auth/services/impersonation.service.d.ts +2 -2
  183. package/dist/auth/services/impersonation.service.d.ts.map +1 -1
  184. package/dist/auth/services/impersonation.service.js +1 -1
  185. package/dist/auth/services/impersonation.service.js.map +1 -1
  186. package/dist/auth/services/scope.service.d.ts +6 -0
  187. package/dist/auth/services/scope.service.d.ts.map +1 -1
  188. package/dist/auth/services/scope.service.js +40 -9
  189. package/dist/auth/services/scope.service.js.map +1 -1
  190. package/dist/auth/services/tenant.invitation.service.d.ts +26 -0
  191. package/dist/auth/services/tenant.invitation.service.d.ts.map +1 -0
  192. package/dist/auth/services/tenant.invitation.service.js +212 -0
  193. package/dist/auth/services/tenant.invitation.service.js.map +1 -0
  194. package/dist/auth/services/tenant.membership.service.d.ts +29 -0
  195. package/dist/auth/services/tenant.membership.service.d.ts.map +1 -0
  196. package/dist/auth/services/tenant.membership.service.js +178 -0
  197. package/dist/auth/services/tenant.membership.service.js.map +1 -0
  198. package/dist/auth/types/auth.types.d.ts +24 -2
  199. package/dist/auth/types/auth.types.d.ts.map +1 -1
  200. package/dist/auth/utilities/access.revocation.d.ts +2 -0
  201. package/dist/auth/utilities/access.revocation.d.ts.map +1 -1
  202. package/dist/auth/utilities/access.revocation.js +12 -0
  203. package/dist/auth/utilities/access.revocation.js.map +1 -1
  204. package/dist/auth/utilities/auth.utilities.d.ts +1 -0
  205. package/dist/auth/utilities/auth.utilities.d.ts.map +1 -1
  206. package/dist/auth/utilities/auth.utilities.js +4 -0
  207. package/dist/auth/utilities/auth.utilities.js.map +1 -1
  208. package/dist/auth/utilities/tenant.access.d.ts +8 -0
  209. package/dist/auth/utilities/tenant.access.d.ts.map +1 -0
  210. package/dist/auth/utilities/tenant.access.js +61 -0
  211. package/dist/auth/utilities/tenant.access.js.map +1 -0
  212. package/dist/common/es6.classes.d.ts +2 -2
  213. package/dist/constants/entity.constants.d.ts +2 -0
  214. package/dist/constants/entity.constants.d.ts.map +1 -1
  215. package/dist/constants/entity.constants.js +2 -0
  216. package/dist/constants/entity.constants.js.map +1 -1
  217. package/dist/constants/entity.maps.d.ts +4 -0
  218. package/dist/constants/entity.maps.d.ts.map +1 -1
  219. package/dist/constants/entity.maps.js +4 -0
  220. package/dist/constants/entity.maps.js.map +1 -1
  221. package/dist/constants/job.constants.d.ts +1 -0
  222. package/dist/constants/job.constants.d.ts.map +1 -1
  223. package/dist/constants/job.constants.js +1 -0
  224. package/dist/constants/job.constants.js.map +1 -1
  225. package/dist/index.d.ts +6 -1
  226. package/dist/index.d.ts.map +1 -1
  227. package/dist/index.js +14 -3
  228. package/dist/index.js.map +1 -1
  229. package/dist/migrations/1749600000003.CreateSysUsersTable.d.ts.map +1 -1
  230. package/dist/migrations/1749600000003.CreateSysUsersTable.js +4 -0
  231. package/dist/migrations/1749600000003.CreateSysUsersTable.js.map +1 -1
  232. package/dist/migrations/1749600000006.CreateSysUserRolesJoinTable.d.ts.map +1 -1
  233. package/dist/migrations/1749600000006.CreateSysUserRolesJoinTable.js +8 -1
  234. package/dist/migrations/1749600000006.CreateSysUserRolesJoinTable.js.map +1 -1
  235. package/dist/migrations/1749600000025.CreateSysScopesTable.d.ts.map +1 -1
  236. package/dist/migrations/1749600000025.CreateSysScopesTable.js +7 -0
  237. package/dist/migrations/1749600000025.CreateSysScopesTable.js.map +1 -1
  238. package/dist/migrations/1749600000030.CreateSysTenantUsersTable.d.ts +6 -0
  239. package/dist/migrations/1749600000030.CreateSysTenantUsersTable.d.ts.map +1 -0
  240. package/dist/migrations/1749600000030.CreateSysTenantUsersTable.js +33 -0
  241. package/dist/migrations/1749600000030.CreateSysTenantUsersTable.js.map +1 -0
  242. package/dist/migrations/1749600000031.CreateSysTenantInvitationsTable.d.ts +6 -0
  243. package/dist/migrations/1749600000031.CreateSysTenantInvitationsTable.d.ts.map +1 -0
  244. package/dist/migrations/1749600000031.CreateSysTenantInvitationsTable.js +43 -0
  245. package/dist/migrations/1749600000031.CreateSysTenantInvitationsTable.js.map +1 -0
  246. package/dist/notification/enums/email.notification.default.enum.d.ts +1 -0
  247. package/dist/notification/enums/email.notification.default.enum.d.ts.map +1 -1
  248. package/dist/notification/enums/email.notification.default.enum.js +1 -0
  249. package/dist/notification/enums/email.notification.default.enum.js.map +1 -1
  250. package/dist/notification/enums/email.template.identifier.enum.d.ts +2 -1
  251. package/dist/notification/enums/email.template.identifier.enum.d.ts.map +1 -1
  252. package/dist/notification/enums/email.template.identifier.enum.js +1 -0
  253. package/dist/notification/enums/email.template.identifier.enum.js.map +1 -1
  254. package/dist/notification/es6.classes.d.ts +2 -1
  255. package/dist/notification/es6.classes.d.ts.map +1 -1
  256. package/dist/notification/es6.classes.js +6 -1
  257. package/dist/notification/es6.classes.js.map +1 -1
  258. package/dist/notification/jobs/tenant.user.invited.mail.job.d.ts +14 -0
  259. package/dist/notification/jobs/tenant.user.invited.mail.job.d.ts.map +1 -0
  260. package/dist/notification/jobs/tenant.user.invited.mail.job.js +57 -0
  261. package/dist/notification/jobs/tenant.user.invited.mail.job.js.map +1 -0
  262. package/dist/notification/notification.module.d.ts.map +1 -1
  263. package/dist/notification/notification.module.js +3 -1
  264. package/dist/notification/notification.module.js.map +1 -1
  265. package/dist/notification/types/email.notification.types.d.ts +9 -0
  266. package/dist/notification/types/email.notification.types.d.ts.map +1 -1
  267. package/package.json +1 -1
@@ -2,11 +2,11 @@ import type { Request } from 'express';
2
2
  import { TenantEntity } from '../../tenant/entities/tenant.entity';
3
3
  import { ImpersonationLoginDto } from '../dtos/impersonation.login.dto';
4
4
  import { ImpersonationService } from '../services/impersonation.service';
5
- import { ImpersonationSession } from '../types/auth.types';
5
+ import { OrganizationSession } from '../types/auth.types';
6
6
  export declare class ImpersonationController {
7
7
  private readonly impersonationService;
8
8
  constructor(impersonationService: ImpersonationService);
9
- login(dto: ImpersonationLoginDto, request: Request): Promise<ImpersonationSession>;
9
+ login(dto: ImpersonationLoginDto, request: Request): Promise<OrganizationSession>;
10
10
  tenants(): Promise<TenantEntity[]>;
11
11
  private contextOf;
12
12
  }
@@ -1 +1 @@
1
- {"version":3,"file":"impersonation.controller.d.ts","sourceRoot":"","sources":["../../../src/auth/controllers/impersonation.controller.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,YAAY,EAAE,MAAM,qCAAqC,CAAC;AACnE,OAAO,EAAE,qBAAqB,EAAE,MAAM,iCAAiC,CAAC;AACxE,OAAO,EAAE,oBAAoB,EAAE,MAAM,mCAAmC,CAAC;AACzE,OAAO,EAAE,oBAAoB,EAAqB,MAAM,qBAAqB,CAAC;AAE9E,qBAEa,uBAAuB;IACtB,OAAO,CAAC,QAAQ,CAAC,oBAAoB;gBAApB,oBAAoB,EAAE,oBAAoB;IAQjE,KAAK,CACD,GAAG,EAAE,qBAAqB,EAC3B,OAAO,EAAE,OAAO,GACtB,OAAO,CAAC,oBAAoB,CAAC;IAW1B,OAAO,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;IAIxC,OAAO,CAAC,SAAS;CAMlB"}
1
+ {"version":3,"file":"impersonation.controller.d.ts","sourceRoot":"","sources":["../../../src/auth/controllers/impersonation.controller.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,YAAY,EAAE,MAAM,qCAAqC,CAAC;AACnE,OAAO,EAAE,qBAAqB,EAAE,MAAM,iCAAiC,CAAC;AACxE,OAAO,EAAE,oBAAoB,EAAE,MAAM,mCAAmC,CAAC;AACzE,OAAO,EAAE,mBAAmB,EAAqB,MAAM,qBAAqB,CAAC;AAE7E,qBAEa,uBAAuB;IACtB,OAAO,CAAC,QAAQ,CAAC,oBAAoB;gBAApB,oBAAoB,EAAE,oBAAoB;IAQjE,KAAK,CACD,GAAG,EAAE,qBAAqB,EAC3B,OAAO,EAAE,OAAO,GACtB,OAAO,CAAC,mBAAmB,CAAC;IAWzB,OAAO,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;IAIxC,OAAO,CAAC,SAAS;CAMlB"}
@@ -0,0 +1,18 @@
1
+ import { CommonParamsDto } from '../../common/dtos/common.params.dto';
2
+ import { ListFilterService } from '../../common/services/list.filter.service';
3
+ import { InviteTenantUserDto } from '../dtos/invite.tenant.user.dto';
4
+ import { TenantInvitationListDto } from '../dtos/tenant.invitation.list.dto';
5
+ import { AuthService } from '../services/auth.service';
6
+ import { TenantInvitationService } from '../services/tenant.invitation.service';
7
+ export declare class TenantInvitationController {
8
+ private readonly authService;
9
+ private readonly tenantInvitationService;
10
+ private readonly listFilterService;
11
+ constructor(authService: AuthService, tenantInvitationService: TenantInvitationService, listFilterService: ListFilterService);
12
+ invite(dto: InviteTenantUserDto): Promise<import("../..").TenantInvitationEntity>;
13
+ roles(): Promise<import("../..").SystemRoleEntity[]>;
14
+ list(dto: TenantInvitationListDto): Promise<import("../..").CommonListResult>;
15
+ resend({ id }: CommonParamsDto): Promise<import("../..").TenantInvitationEntity>;
16
+ revoke({ id }: CommonParamsDto): Promise<import("../..").TenantInvitationEntity>;
17
+ }
18
+ //# sourceMappingURL=tenant.invitation.controller.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tenant.invitation.controller.d.ts","sourceRoot":"","sources":["../../../src/auth/controllers/tenant.invitation.controller.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,eAAe,EAAE,MAAM,qCAAqC,CAAC;AACtE,OAAO,EAAE,iBAAiB,EAAE,MAAM,2CAA2C,CAAC;AAC9E,OAAO,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAC;AACrE,OAAO,EAAE,uBAAuB,EAAE,MAAM,oCAAoC,CAAC;AAI7E,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACvD,OAAO,EAAE,uBAAuB,EAAE,MAAM,uCAAuC,CAAC;AAGhF,qBAGa,0BAA0B;IAEnC,OAAO,CAAC,QAAQ,CAAC,WAAW;IAC5B,OAAO,CAAC,QAAQ,CAAC,uBAAuB;IACxC,OAAO,CAAC,QAAQ,CAAC,iBAAiB;gBAFjB,WAAW,EAAE,WAAW,EACxB,uBAAuB,EAAE,uBAAuB,EAChD,iBAAiB,EAAE,iBAAiB;IASjD,MAAM,CAAS,GAAG,EAAE,mBAAmB;IAgBvC,KAAK;IAUL,IAAI,CAAS,GAAG,EAAE,uBAAuB;IAgBzC,MAAM,CAAU,EAAE,EAAE,EAAE,EAAE,eAAe;IAgBvC,MAAM,CAAU,EAAE,EAAE,EAAE,EAAE,eAAe;CAU9C"}
@@ -0,0 +1,120 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ var __param = (this && this.__param) || function (paramIndex, decorator) {
12
+ return function (target, key) { decorator(target, key, paramIndex); }
13
+ };
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.TenantInvitationController = void 0;
16
+ const common_1 = require("@nestjs/common");
17
+ const swagger_1 = require("@nestjs/swagger");
18
+ const common_params_dto_1 = require("../../common/dtos/common.params.dto");
19
+ const list_filter_service_1 = require("../../common/services/list.filter.service");
20
+ const invite_tenant_user_dto_1 = require("../dtos/invite.tenant.user.dto");
21
+ const tenant_invitation_list_dto_1 = require("../dtos/tenant.invitation.list.dto");
22
+ const tenant_role_enum_1 = require("../enums/tenant.role.enum");
23
+ const tenant_invitation_data_processor_1 = require("../processors/tenant.invitation.data.processor");
24
+ const tenant_invitation_list_processor_1 = require("../processors/tenant.invitation.list.processor");
25
+ const auth_service_1 = require("../services/auth.service");
26
+ const tenant_invitation_service_1 = require("../services/tenant.invitation.service");
27
+ let TenantInvitationController = class TenantInvitationController {
28
+ constructor(authService, tenantInvitationService, listFilterService) {
29
+ this.authService = authService;
30
+ this.tenantInvitationService = tenantInvitationService;
31
+ this.listFilterService = listFilterService;
32
+ }
33
+ async invite(dto) {
34
+ const { user } = await this.authService.validateRole(tenant_role_enum_1.TenantRole.GLOBAL_ADMIN);
35
+ return new tenant_invitation_data_processor_1.TenantInvitationDataProcessor(user, this.tenantInvitationService).process(dto);
36
+ }
37
+ async roles() {
38
+ await this.authService.validateRole(tenant_role_enum_1.TenantRole.GLOBAL_ADMIN);
39
+ return this.tenantInvitationService.grantableRoles();
40
+ }
41
+ async list(dto) {
42
+ const { user } = await this.authService.validateRole(tenant_role_enum_1.TenantRole.GLOBAL_ADMIN);
43
+ return new tenant_invitation_list_processor_1.TenantInvitationListProcessor(this.listFilterService).process({
44
+ ...dto,
45
+ tenant_id: user.organization_id,
46
+ });
47
+ }
48
+ async resend({ id }) {
49
+ const { user } = await this.authService.validateRole(tenant_role_enum_1.TenantRole.GLOBAL_ADMIN);
50
+ return this.tenantInvitationService.resend(id, user.organization_id, user.id);
51
+ }
52
+ async revoke({ id }) {
53
+ const { user } = await this.authService.validateRole(tenant_role_enum_1.TenantRole.GLOBAL_ADMIN);
54
+ return this.tenantInvitationService.revoke(id, user.organization_id, user.id);
55
+ }
56
+ };
57
+ exports.TenantInvitationController = TenantInvitationController;
58
+ __decorate([
59
+ (0, common_1.Post)(),
60
+ (0, swagger_1.ApiOperation)({
61
+ summary: 'Invite an email into the session organization.',
62
+ description: 'The roles in `role_ids` are granted in this organization when the invitee accepts. An email with no account gets one — named `full_name`, with a random one-time password mailed to it that must be changed at first sign-in. Refused for an existing member, a system account, or an email with a pending invitation here. Requires the `global.admin` tenant role.',
63
+ }),
64
+ __param(0, (0, common_1.Body)()),
65
+ __metadata("design:type", Function),
66
+ __metadata("design:paramtypes", [invite_tenant_user_dto_1.InviteTenantUserDto]),
67
+ __metadata("design:returntype", Promise)
68
+ ], TenantInvitationController.prototype, "invite", null);
69
+ __decorate([
70
+ (0, common_1.Get)('roles'),
71
+ (0, swagger_1.ApiOperation)({
72
+ summary: 'Roles an invitation may grant.',
73
+ description: 'The active `sys_roles` catalogue, for the invite form. Requires the `global.admin` tenant role.',
74
+ }),
75
+ __metadata("design:type", Function),
76
+ __metadata("design:paramtypes", []),
77
+ __metadata("design:returntype", Promise)
78
+ ], TenantInvitationController.prototype, "roles", null);
79
+ __decorate([
80
+ (0, common_1.Post)('list'),
81
+ (0, swagger_1.ApiOperation)({
82
+ summary: "List the session organization's invitations.",
83
+ description: 'Requires the `global.admin` tenant role.',
84
+ }),
85
+ __param(0, (0, common_1.Body)()),
86
+ __metadata("design:type", Function),
87
+ __metadata("design:paramtypes", [tenant_invitation_list_dto_1.TenantInvitationListDto]),
88
+ __metadata("design:returntype", Promise)
89
+ ], TenantInvitationController.prototype, "list", null);
90
+ __decorate([
91
+ (0, common_1.Post)(':id/resend'),
92
+ (0, swagger_1.ApiOperation)({
93
+ summary: 'Give a pending invitation a fresh expiry.',
94
+ description: 'Also revives one that expired unanswered. When the invitation created the account and nobody has signed in to it yet, a fresh one-time password is mailed. Requires the `global.admin` tenant role.',
95
+ }),
96
+ __param(0, (0, common_1.Param)()),
97
+ __metadata("design:type", Function),
98
+ __metadata("design:paramtypes", [common_params_dto_1.CommonParamsDto]),
99
+ __metadata("design:returntype", Promise)
100
+ ], TenantInvitationController.prototype, "resend", null);
101
+ __decorate([
102
+ (0, common_1.Delete)(':id'),
103
+ (0, swagger_1.ApiOperation)({
104
+ summary: 'Revoke a pending invitation.',
105
+ description: 'Requires the `global.admin` tenant role.',
106
+ }),
107
+ __param(0, (0, common_1.Param)()),
108
+ __metadata("design:type", Function),
109
+ __metadata("design:paramtypes", [common_params_dto_1.CommonParamsDto]),
110
+ __metadata("design:returntype", Promise)
111
+ ], TenantInvitationController.prototype, "revoke", null);
112
+ exports.TenantInvitationController = TenantInvitationController = __decorate([
113
+ (0, swagger_1.ApiTags)('Organization Invitations'),
114
+ (0, swagger_1.ApiBearerAuth)(),
115
+ (0, common_1.Controller)('api/organization/invitations'),
116
+ __metadata("design:paramtypes", [auth_service_1.AuthService,
117
+ tenant_invitation_service_1.TenantInvitationService,
118
+ list_filter_service_1.ListFilterService])
119
+ ], TenantInvitationController);
120
+ //# sourceMappingURL=tenant.invitation.controller.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tenant.invitation.controller.js","sourceRoot":"","sources":["../../../src/auth/controllers/tenant.invitation.controller.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ import { ListFilterService } from '../../common/services/list.filter.service';
2
+ import { MemberRolesDto } from '../dtos/member.roles.dto';
3
+ import { TenantMemberListDto } from '../dtos/tenant.member.list.dto';
4
+ import { AuthService } from '../services/auth.service';
5
+ import { TenantMembershipService } from '../services/tenant.membership.service';
6
+ export declare class TenantMemberController {
7
+ private readonly authService;
8
+ private readonly tenantMembershipService;
9
+ private readonly listFilterService;
10
+ constructor(authService: AuthService, tenantMembershipService: TenantMembershipService, listFilterService: ListFilterService);
11
+ list(dto: TenantMemberListDto): Promise<import("../..").CommonListResult>;
12
+ setRoles(userId: string, dto: MemberRolesDto): Promise<import("../..").SystemRoleEntity[]>;
13
+ deactivate(userId: string): Promise<import("../..").TenantUserEntity>;
14
+ reactivate(userId: string): Promise<import("../..").TenantUserEntity>;
15
+ remove(userId: string): Promise<import("../..").DeleteResult>;
16
+ private refuseSelf;
17
+ }
18
+ //# sourceMappingURL=tenant.member.controller.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tenant.member.controller.d.ts","sourceRoot":"","sources":["../../../src/auth/controllers/tenant.member.controller.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,iBAAiB,EAAE,MAAM,2CAA2C,CAAC;AAE9E,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAC;AAGrE,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACvD,OAAO,EAAE,uBAAuB,EAAE,MAAM,uCAAuC,CAAC;AAGhF,qBAGa,sBAAsB;IAE/B,OAAO,CAAC,QAAQ,CAAC,WAAW;IAC5B,OAAO,CAAC,QAAQ,CAAC,uBAAuB;IACxC,OAAO,CAAC,QAAQ,CAAC,iBAAiB;gBAFjB,WAAW,EAAE,WAAW,EACxB,uBAAuB,EAAE,uBAAuB,EAChD,iBAAiB,EAAE,iBAAiB;IASjD,IAAI,CAAS,GAAG,EAAE,mBAAmB;IAgBrC,QAAQ,CACoB,MAAM,EAAE,MAAM,EACtC,GAAG,EAAE,cAAc;IAoBvB,UAAU,CAAiC,MAAM,EAAE,MAAM;IAoBzD,UAAU,CAAiC,MAAM,EAAE,MAAM;IAkBzD,MAAM,CAAiC,MAAM,EAAE,MAAM;IAa3D,OAAO,CAAC,UAAU;CAMnB"}
@@ -0,0 +1,129 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ var __param = (this && this.__param) || function (paramIndex, decorator) {
12
+ return function (target, key) { decorator(target, key, paramIndex); }
13
+ };
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.TenantMemberController = void 0;
16
+ const common_1 = require("@nestjs/common");
17
+ const swagger_1 = require("@nestjs/swagger");
18
+ const list_filter_service_1 = require("../../common/services/list.filter.service");
19
+ const operation_exception_1 = require("../../global/exceptions/operation.exception");
20
+ const member_roles_dto_1 = require("../dtos/member.roles.dto");
21
+ const tenant_member_list_dto_1 = require("../dtos/tenant.member.list.dto");
22
+ const tenant_role_enum_1 = require("../enums/tenant.role.enum");
23
+ const tenant_member_list_processor_1 = require("../processors/tenant.member.list.processor");
24
+ const auth_service_1 = require("../services/auth.service");
25
+ const tenant_membership_service_1 = require("../services/tenant.membership.service");
26
+ let TenantMemberController = class TenantMemberController {
27
+ constructor(authService, tenantMembershipService, listFilterService) {
28
+ this.authService = authService;
29
+ this.tenantMembershipService = tenantMembershipService;
30
+ this.listFilterService = listFilterService;
31
+ }
32
+ async list(dto) {
33
+ const { user } = await this.authService.validateRole(tenant_role_enum_1.TenantRole.GLOBAL_ADMIN);
34
+ return new tenant_member_list_processor_1.TenantMemberListProcessor(this.listFilterService).process({
35
+ ...dto,
36
+ tenant_id: user.organization_id,
37
+ });
38
+ }
39
+ async setRoles(userId, dto) {
40
+ const { user } = await this.authService.validateRole(tenant_role_enum_1.TenantRole.GLOBAL_ADMIN);
41
+ return this.tenantMembershipService.setMemberRoles(userId, user.organization_id, dto.role_ids, user.id);
42
+ }
43
+ async deactivate(userId) {
44
+ const { user } = await this.authService.validateRole(tenant_role_enum_1.TenantRole.GLOBAL_ADMIN);
45
+ this.refuseSelf(userId, user.id);
46
+ return this.tenantMembershipService.setMemberActive(userId, user.organization_id, false, user.id);
47
+ }
48
+ async reactivate(userId) {
49
+ const { user } = await this.authService.validateRole(tenant_role_enum_1.TenantRole.GLOBAL_ADMIN);
50
+ return this.tenantMembershipService.setMemberActive(userId, user.organization_id, true, user.id);
51
+ }
52
+ async remove(userId) {
53
+ const { user } = await this.authService.validateRole(tenant_role_enum_1.TenantRole.GLOBAL_ADMIN);
54
+ this.refuseSelf(userId, user.id);
55
+ return this.tenantMembershipService.removeMember(userId, user.organization_id, user.id);
56
+ }
57
+ refuseSelf(userId, callerId) {
58
+ if (userId === callerId)
59
+ throw new operation_exception_1.OperationException('Act on your own membership by leaving the organization.');
60
+ }
61
+ };
62
+ exports.TenantMemberController = TenantMemberController;
63
+ __decorate([
64
+ (0, common_1.Post)('list'),
65
+ (0, swagger_1.ApiOperation)({
66
+ summary: "List the session organization's members.",
67
+ description: 'Each row carries the roles held in this organization. Requires the `global.admin` tenant role.',
68
+ }),
69
+ __param(0, (0, common_1.Body)()),
70
+ __metadata("design:type", Function),
71
+ __metadata("design:paramtypes", [tenant_member_list_dto_1.TenantMemberListDto]),
72
+ __metadata("design:returntype", Promise)
73
+ ], TenantMemberController.prototype, "list", null);
74
+ __decorate([
75
+ (0, common_1.Post)(':userId/roles'),
76
+ (0, swagger_1.ApiOperation)({
77
+ summary: "Replace a member's roles in the session organization.",
78
+ description: '`role_ids` is the complete set; omitted roles are revoked. Refused when it would leave the organization without a `global.admin`. Requires the `global.admin` tenant role.',
79
+ }),
80
+ __param(0, (0, common_1.Param)('userId', common_1.ParseUUIDPipe)),
81
+ __param(1, (0, common_1.Body)()),
82
+ __metadata("design:type", Function),
83
+ __metadata("design:paramtypes", [String, member_roles_dto_1.MemberRolesDto]),
84
+ __metadata("design:returntype", Promise)
85
+ ], TenantMemberController.prototype, "setRoles", null);
86
+ __decorate([
87
+ (0, common_1.Post)(':userId/deactivate'),
88
+ (0, common_1.HttpCode)(common_1.HttpStatus.OK),
89
+ (0, swagger_1.ApiOperation)({
90
+ summary: "Deactivate a member's membership of the session organization.",
91
+ description: 'The member keeps their roles but can no longer work in this organization, and their credentials bound to it are revoked. Their account and other memberships are untouched. Not for the caller, and refused for the last active `global.admin`. Requires the `global.admin` tenant role.',
92
+ }),
93
+ __param(0, (0, common_1.Param)('userId', common_1.ParseUUIDPipe)),
94
+ __metadata("design:type", Function),
95
+ __metadata("design:paramtypes", [String]),
96
+ __metadata("design:returntype", Promise)
97
+ ], TenantMemberController.prototype, "deactivate", null);
98
+ __decorate([
99
+ (0, common_1.Post)(':userId/reactivate'),
100
+ (0, common_1.HttpCode)(common_1.HttpStatus.OK),
101
+ (0, swagger_1.ApiOperation)({
102
+ summary: "Reactivate a member's membership of the session organization.",
103
+ description: 'Restores it with the roles it kept. Requires the `global.admin` tenant role.',
104
+ }),
105
+ __param(0, (0, common_1.Param)('userId', common_1.ParseUUIDPipe)),
106
+ __metadata("design:type", Function),
107
+ __metadata("design:paramtypes", [String]),
108
+ __metadata("design:returntype", Promise)
109
+ ], TenantMemberController.prototype, "reactivate", null);
110
+ __decorate([
111
+ (0, common_1.Delete)(':userId'),
112
+ (0, swagger_1.ApiOperation)({
113
+ summary: 'Remove a member from the session organization.',
114
+ description: 'Ends the membership and its roles and revokes their credentials bound to this organization; the account and its other memberships stay. Not for the caller — use `POST /auth/organizations/:id/leave`. Requires the `global.admin` tenant role.',
115
+ }),
116
+ __param(0, (0, common_1.Param)('userId', common_1.ParseUUIDPipe)),
117
+ __metadata("design:type", Function),
118
+ __metadata("design:paramtypes", [String]),
119
+ __metadata("design:returntype", Promise)
120
+ ], TenantMemberController.prototype, "remove", null);
121
+ exports.TenantMemberController = TenantMemberController = __decorate([
122
+ (0, swagger_1.ApiTags)('Organization Members'),
123
+ (0, swagger_1.ApiBearerAuth)(),
124
+ (0, common_1.Controller)('api/organization/members'),
125
+ __metadata("design:paramtypes", [auth_service_1.AuthService,
126
+ tenant_membership_service_1.TenantMembershipService,
127
+ list_filter_service_1.ListFilterService])
128
+ ], TenantMemberController);
129
+ //# sourceMappingURL=tenant.member.controller.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tenant.member.controller.js","sourceRoot":"","sources":["../../../src/auth/controllers/tenant.member.controller.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ import { CommonParamsDto } from '../../common/dtos/common.params.dto';
2
+ import { AuthService } from '../services/auth.service';
3
+ import { TenantInvitationService } from '../services/tenant.invitation.service';
4
+ export declare class UserInvitationController {
5
+ private readonly authService;
6
+ private readonly tenantInvitationService;
7
+ constructor(authService: AuthService, tenantInvitationService: TenantInvitationService);
8
+ pending(): Promise<import("../..").PendingInvitation[]>;
9
+ accept({ id }: CommonParamsDto): Promise<import("../..").OrganizationSummary>;
10
+ decline({ id }: CommonParamsDto): Promise<import("../..").TenantInvitationEntity>;
11
+ }
12
+ //# sourceMappingURL=user.invitation.controller.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"user.invitation.controller.d.ts","sourceRoot":"","sources":["../../../src/auth/controllers/user.invitation.controller.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,eAAe,EAAE,MAAM,qCAAqC,CAAC;AACtE,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACvD,OAAO,EAAE,uBAAuB,EAAE,MAAM,uCAAuC,CAAC;AAGhF,qBAGa,wBAAwB;IAEjC,OAAO,CAAC,QAAQ,CAAC,WAAW;IAC5B,OAAO,CAAC,QAAQ,CAAC,uBAAuB;gBADvB,WAAW,EAAE,WAAW,EACxB,uBAAuB,EAAE,uBAAuB;IAS7D,OAAO;IAYP,MAAM,CAAU,EAAE,EAAE,EAAE,EAAE,eAAe;IAOvC,OAAO,CAAU,EAAE,EAAE,EAAE,EAAE,eAAe;CAG/C"}
@@ -0,0 +1,76 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ var __param = (this && this.__param) || function (paramIndex, decorator) {
12
+ return function (target, key) { decorator(target, key, paramIndex); }
13
+ };
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.UserInvitationController = void 0;
16
+ const common_1 = require("@nestjs/common");
17
+ const swagger_1 = require("@nestjs/swagger");
18
+ const common_params_dto_1 = require("../../common/dtos/common.params.dto");
19
+ const auth_service_1 = require("../services/auth.service");
20
+ const tenant_invitation_service_1 = require("../services/tenant.invitation.service");
21
+ let UserInvitationController = class UserInvitationController {
22
+ constructor(authService, tenantInvitationService) {
23
+ this.authService = authService;
24
+ this.tenantInvitationService = tenantInvitationService;
25
+ }
26
+ async pending() {
27
+ const { user } = await this.authService.validateRole();
28
+ return this.tenantInvitationService.pendingFor(user);
29
+ }
30
+ async accept({ id }) {
31
+ return this.tenantInvitationService.accept(id);
32
+ }
33
+ async decline({ id }) {
34
+ return this.tenantInvitationService.decline(id);
35
+ }
36
+ };
37
+ exports.UserInvitationController = UserInvitationController;
38
+ __decorate([
39
+ (0, common_1.Get)(),
40
+ (0, swagger_1.ApiOperation)({
41
+ summary: 'Pending invitations addressed to the caller.',
42
+ description: 'Also returned by `GET /auth/me`. Works on a tenantless session, so a user with no organization yet can see and accept one.',
43
+ }),
44
+ __metadata("design:type", Function),
45
+ __metadata("design:paramtypes", []),
46
+ __metadata("design:returntype", Promise)
47
+ ], UserInvitationController.prototype, "pending", null);
48
+ __decorate([
49
+ (0, common_1.Post)(':id/accept'),
50
+ (0, common_1.HttpCode)(common_1.HttpStatus.OK),
51
+ (0, swagger_1.ApiOperation)({
52
+ summary: 'Accept an invitation and join its organization.',
53
+ description: 'Adds the membership and the invited roles, and returns the organization. The session stays where it is — call `POST /auth/organizations/switch` to work in the new one.',
54
+ }),
55
+ __param(0, (0, common_1.Param)()),
56
+ __metadata("design:type", Function),
57
+ __metadata("design:paramtypes", [common_params_dto_1.CommonParamsDto]),
58
+ __metadata("design:returntype", Promise)
59
+ ], UserInvitationController.prototype, "accept", null);
60
+ __decorate([
61
+ (0, common_1.Post)(':id/decline'),
62
+ (0, common_1.HttpCode)(common_1.HttpStatus.OK),
63
+ (0, swagger_1.ApiOperation)({ summary: 'Decline an invitation.' }),
64
+ __param(0, (0, common_1.Param)()),
65
+ __metadata("design:type", Function),
66
+ __metadata("design:paramtypes", [common_params_dto_1.CommonParamsDto]),
67
+ __metadata("design:returntype", Promise)
68
+ ], UserInvitationController.prototype, "decline", null);
69
+ exports.UserInvitationController = UserInvitationController = __decorate([
70
+ (0, swagger_1.ApiTags)('Auth'),
71
+ (0, swagger_1.ApiBearerAuth)(),
72
+ (0, common_1.Controller)('api/auth/invitations'),
73
+ __metadata("design:paramtypes", [auth_service_1.AuthService,
74
+ tenant_invitation_service_1.TenantInvitationService])
75
+ ], UserInvitationController);
76
+ //# sourceMappingURL=user.invitation.controller.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"user.invitation.controller.js","sourceRoot":"","sources":["../../../src/auth/controllers/user.invitation.controller.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,2CAOwB;AACxB,6CAAuE;AACvE,2EAAsE;AACtE,2DAAuD;AACvD,qFAAgF;AAMzE,IAAM,wBAAwB,GAA9B,MAAM,wBAAwB;IACnC,YACmB,WAAwB,EACxB,uBAAgD;QADhD,gBAAW,GAAX,WAAW,CAAa;QACxB,4BAAuB,GAAvB,uBAAuB,CAAyB;IAChE,CAAC;IAQE,AAAN,KAAK,CAAC,OAAO;QACX,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,YAAY,EAAE,CAAC;QACvD,OAAO,IAAI,CAAC,uBAAuB,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;IACvD,CAAC;IASK,AAAN,KAAK,CAAC,MAAM,CAAU,EAAE,EAAE,EAAmB;QAC3C,OAAO,IAAI,CAAC,uBAAuB,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IACjD,CAAC;IAKK,AAAN,KAAK,CAAC,OAAO,CAAU,EAAE,EAAE,EAAmB;QAC5C,OAAO,IAAI,CAAC,uBAAuB,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IAClD,CAAC;CACF,CAAA;AAlCY,4DAAwB;AAY7B;IANL,IAAA,YAAG,GAAE;IACL,IAAA,sBAAY,EAAC;QACZ,OAAO,EAAE,8CAA8C;QACvD,WAAW,EACT,4HAA4H;KAC/H,CAAC;;;;uDAID;AASK;IAPL,IAAA,aAAI,EAAC,YAAY,CAAC;IAClB,IAAA,iBAAQ,EAAC,mBAAU,CAAC,EAAE,CAAC;IACvB,IAAA,sBAAY,EAAC;QACZ,OAAO,EAAE,iDAAiD;QAC1D,WAAW,EACT,yKAAyK;KAC5K,CAAC;IACY,WAAA,IAAA,cAAK,GAAE,CAAA;;qCAAS,mCAAe;;sDAE5C;AAKK;IAHL,IAAA,aAAI,EAAC,aAAa,CAAC;IACnB,IAAA,iBAAQ,EAAC,mBAAU,CAAC,EAAE,CAAC;IACvB,IAAA,sBAAY,EAAC,EAAE,OAAO,EAAE,wBAAwB,EAAE,CAAC;IACrC,WAAA,IAAA,cAAK,GAAE,CAAA;;qCAAS,mCAAe;;uDAE7C;mCAjCU,wBAAwB;IAHpC,IAAA,iBAAO,EAAC,MAAM,CAAC;IACf,IAAA,uBAAa,GAAE;IACf,IAAA,mBAAU,EAAC,sBAAsB,CAAC;qCAGD,0BAAW;QACC,mDAAuB;GAHxD,wBAAwB,CAkCpC"}
@@ -0,0 +1,17 @@
1
+ import type { Request } from 'express';
2
+ import { CommonParamsDto } from '../../common/dtos/common.params.dto';
3
+ import { RefreshTokenDto } from '../dtos/refresh.token.dto';
4
+ import { SwitchOrganizationDto } from '../dtos/switch.organization.dto';
5
+ import { AuthService } from '../services/auth.service';
6
+ import { TenantMembershipService } from '../services/tenant.membership.service';
7
+ import { AuthTokenPair, OrganizationSession, OrganizationSummary } from '../types/auth.types';
8
+ export declare class UserOrganizationController {
9
+ private readonly authService;
10
+ private readonly tenantMembershipService;
11
+ constructor(authService: AuthService, tenantMembershipService: TenantMembershipService);
12
+ organizations(): Promise<OrganizationSummary[]>;
13
+ switch(dto: SwitchOrganizationDto, request: Request): Promise<OrganizationSession>;
14
+ leave({ id }: CommonParamsDto, dto: RefreshTokenDto, request: Request): Promise<AuthTokenPair>;
15
+ private contextOf;
16
+ }
17
+ //# sourceMappingURL=user.organization.controller.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"user.organization.controller.d.ts","sourceRoot":"","sources":["../../../src/auth/controllers/user.organization.controller.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,eAAe,EAAE,MAAM,qCAAqC,CAAC;AACtE,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAC5D,OAAO,EAAE,qBAAqB,EAAE,MAAM,iCAAiC,CAAC;AACxE,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACvD,OAAO,EAAE,uBAAuB,EAAE,MAAM,uCAAuC,CAAC;AAChF,OAAO,EACL,aAAa,EACb,mBAAmB,EACnB,mBAAmB,EAEpB,MAAM,qBAAqB,CAAC;AAG7B,qBAGa,0BAA0B;IAEnC,OAAO,CAAC,QAAQ,CAAC,WAAW;IAC5B,OAAO,CAAC,QAAQ,CAAC,uBAAuB;gBADvB,WAAW,EAAE,WAAW,EACxB,uBAAuB,EAAE,uBAAuB;IAK7D,aAAa,IAAI,OAAO,CAAC,mBAAmB,EAAE,CAAC;IAY/C,MAAM,CACF,GAAG,EAAE,qBAAqB,EAC3B,OAAO,EAAE,OAAO,GACtB,OAAO,CAAC,mBAAmB,CAAC;IAczB,KAAK,CACA,EAAE,EAAE,EAAE,EAAE,eAAe,EACxB,GAAG,EAAE,eAAe,EACrB,OAAO,EAAE,OAAO,GACtB,OAAO,CAAC,aAAa,CAAC;IAIzB,OAAO,CAAC,SAAS;CAMlB"}
@@ -0,0 +1,88 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ var __param = (this && this.__param) || function (paramIndex, decorator) {
12
+ return function (target, key) { decorator(target, key, paramIndex); }
13
+ };
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.UserOrganizationController = void 0;
16
+ const common_1 = require("@nestjs/common");
17
+ const swagger_1 = require("@nestjs/swagger");
18
+ const common_params_dto_1 = require("../../common/dtos/common.params.dto");
19
+ const refresh_token_dto_1 = require("../dtos/refresh.token.dto");
20
+ const switch_organization_dto_1 = require("../dtos/switch.organization.dto");
21
+ const auth_service_1 = require("../services/auth.service");
22
+ const tenant_membership_service_1 = require("../services/tenant.membership.service");
23
+ let UserOrganizationController = class UserOrganizationController {
24
+ constructor(authService, tenantMembershipService) {
25
+ this.authService = authService;
26
+ this.tenantMembershipService = tenantMembershipService;
27
+ }
28
+ async organizations() {
29
+ const { user } = await this.authService.validateRole();
30
+ return this.tenantMembershipService.organizationsOf(user.id);
31
+ }
32
+ async switch(dto, request) {
33
+ return this.tenantMembershipService.switchOrganization(dto, this.contextOf(request));
34
+ }
35
+ async leave({ id }, dto, request) {
36
+ return this.tenantMembershipService.leave(id, dto, this.contextOf(request));
37
+ }
38
+ contextOf(request) {
39
+ return {
40
+ ip_address: request.ip,
41
+ user_agent: request.headers['user-agent'],
42
+ };
43
+ }
44
+ };
45
+ exports.UserOrganizationController = UserOrganizationController;
46
+ __decorate([
47
+ (0, common_1.Get)(),
48
+ (0, swagger_1.ApiOperation)({ summary: 'Active organizations the caller is a member of.' }),
49
+ __metadata("design:type", Function),
50
+ __metadata("design:paramtypes", []),
51
+ __metadata("design:returntype", Promise)
52
+ ], UserOrganizationController.prototype, "organizations", null);
53
+ __decorate([
54
+ (0, common_1.Post)('switch'),
55
+ (0, common_1.HttpCode)(common_1.HttpStatus.OK),
56
+ (0, swagger_1.ApiOperation)({
57
+ summary: 'Move the session into another of the caller’s organizations.',
58
+ description: 'Retires the current session and the supplied refresh token, and returns a pair bound to `tenant_id`. The choice is remembered: the next login lands there. Global-access accounts use the impersonation login instead.',
59
+ }),
60
+ __param(0, (0, common_1.Body)()),
61
+ __param(1, (0, common_1.Req)()),
62
+ __metadata("design:type", Function),
63
+ __metadata("design:paramtypes", [switch_organization_dto_1.SwitchOrganizationDto, Object]),
64
+ __metadata("design:returntype", Promise)
65
+ ], UserOrganizationController.prototype, "switch", null);
66
+ __decorate([
67
+ (0, common_1.Post)(':id/leave'),
68
+ (0, common_1.HttpCode)(common_1.HttpStatus.OK),
69
+ (0, swagger_1.ApiOperation)({
70
+ summary: 'Leave an organization.',
71
+ description: 'Ends the membership and its roles, and revokes the caller’s credentials bound to that organization. Retires the supplied refresh token and returns a new pair in whichever organization a login would now land in (tenantless when none). Refused for the organization’s last `global.admin`.',
72
+ }),
73
+ __param(0, (0, common_1.Param)()),
74
+ __param(1, (0, common_1.Body)()),
75
+ __param(2, (0, common_1.Req)()),
76
+ __metadata("design:type", Function),
77
+ __metadata("design:paramtypes", [common_params_dto_1.CommonParamsDto,
78
+ refresh_token_dto_1.RefreshTokenDto, Object]),
79
+ __metadata("design:returntype", Promise)
80
+ ], UserOrganizationController.prototype, "leave", null);
81
+ exports.UserOrganizationController = UserOrganizationController = __decorate([
82
+ (0, swagger_1.ApiTags)('Auth'),
83
+ (0, swagger_1.ApiBearerAuth)(),
84
+ (0, common_1.Controller)('api/auth/organizations'),
85
+ __metadata("design:paramtypes", [auth_service_1.AuthService,
86
+ tenant_membership_service_1.TenantMembershipService])
87
+ ], UserOrganizationController);
88
+ //# sourceMappingURL=user.organization.controller.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"user.organization.controller.js","sourceRoot":"","sources":["../../../src/auth/controllers/user.organization.controller.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,2CASwB;AACxB,6CAAuE;AAEvE,2EAAsE;AACtE,iEAA4D;AAC5D,6EAAwE;AACxE,2DAAuD;AACvD,qFAAgF;AAYzE,IAAM,0BAA0B,GAAhC,MAAM,0BAA0B;IACrC,YACmB,WAAwB,EACxB,uBAAgD;QADhD,gBAAW,GAAX,WAAW,CAAa;QACxB,4BAAuB,GAAvB,uBAAuB,CAAyB;IAChE,CAAC;IAIE,AAAN,KAAK,CAAC,aAAa;QACjB,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,YAAY,EAAE,CAAC;QACvD,OAAO,IAAI,CAAC,uBAAuB,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC/D,CAAC;IASK,AAAN,KAAK,CAAC,MAAM,CACF,GAA0B,EAC3B,OAAgB;QAEvB,OAAO,IAAI,CAAC,uBAAuB,CAAC,kBAAkB,CACpD,GAAG,EACH,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CACxB,CAAC;IACJ,CAAC;IASK,AAAN,KAAK,CAAC,KAAK,CACA,EAAE,EAAE,EAAmB,EACxB,GAAoB,EACrB,OAAgB;QAEvB,OAAO,IAAI,CAAC,uBAAuB,CAAC,KAAK,CAAC,EAAE,EAAE,GAAG,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC;IAC9E,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;AAnDY,gEAA0B;AAQ/B;IAFL,IAAA,YAAG,GAAE;IACL,IAAA,sBAAY,EAAC,EAAE,OAAO,EAAE,iDAAiD,EAAE,CAAC;;;;+DAI5E;AASK;IAPL,IAAA,aAAI,EAAC,QAAQ,CAAC;IACd,IAAA,iBAAQ,EAAC,mBAAU,CAAC,EAAE,CAAC;IACvB,IAAA,sBAAY,EAAC;QACZ,OAAO,EAAE,8DAA8D;QACvE,WAAW,EACT,wNAAwN;KAC3N,CAAC;IAEC,WAAA,IAAA,aAAI,GAAE,CAAA;IACN,WAAA,IAAA,YAAG,GAAE,CAAA;;qCADO,+CAAqB;;wDAOnC;AASK;IAPL,IAAA,aAAI,EAAC,WAAW,CAAC;IACjB,IAAA,iBAAQ,EAAC,mBAAU,CAAC,EAAE,CAAC;IACvB,IAAA,sBAAY,EAAC;QACZ,OAAO,EAAE,wBAAwB;QACjC,WAAW,EACT,+RAA+R;KAClS,CAAC;IAEC,WAAA,IAAA,cAAK,GAAE,CAAA;IACP,WAAA,IAAA,aAAI,GAAE,CAAA;IACN,WAAA,IAAA,YAAG,GAAE,CAAA;;qCAFW,mCAAe;QACnB,mCAAe;;uDAI7B;qCA3CU,0BAA0B;IAHtC,IAAA,iBAAO,EAAC,MAAM,CAAC;IACf,IAAA,uBAAa,GAAE;IACf,IAAA,mBAAU,EAAC,wBAAwB,CAAC;qCAGH,0BAAW;QACC,mDAAuB;GAHxD,0BAA0B,CAmDtC"}
@@ -0,0 +1,6 @@
1
+ export declare class InviteTenantUserDto {
2
+ email: string;
3
+ full_name?: string;
4
+ role_ids: string[];
5
+ }
6
+ //# sourceMappingURL=invite.tenant.user.dto.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"invite.tenant.user.dto.d.ts","sourceRoot":"","sources":["../../../src/auth/dtos/invite.tenant.user.dto.ts"],"names":[],"mappings":"AAYA,qBAAa,mBAAmB;IAI9B,KAAK,EAAE,MAAM,CAAC;IAUd,SAAS,CAAC,EAAE,MAAM,CAAC;IAUnB,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB"}
@@ -0,0 +1,45 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.InviteTenantUserDto = void 0;
13
+ const class_validator_1 = require("class-validator");
14
+ const swagger_1 = require("@nestjs/swagger");
15
+ class InviteTenantUserDto {
16
+ }
17
+ exports.InviteTenantUserDto = InviteTenantUserDto;
18
+ __decorate([
19
+ (0, swagger_1.ApiProperty)({ example: 'jane@acme.com' }),
20
+ (0, class_validator_1.IsEmail)(),
21
+ (0, class_validator_1.MaxLength)(255),
22
+ __metadata("design:type", String)
23
+ ], InviteTenantUserDto.prototype, "email", void 0);
24
+ __decorate([
25
+ (0, swagger_1.ApiPropertyOptional)({
26
+ example: 'Jane Doe',
27
+ description: 'Name for the account created when the email has none; defaults to the part before the @.',
28
+ }),
29
+ (0, class_validator_1.IsOptional)(),
30
+ (0, class_validator_1.IsString)(),
31
+ (0, class_validator_1.MaxLength)(255),
32
+ __metadata("design:type", String)
33
+ ], InviteTenantUserDto.prototype, "full_name", void 0);
34
+ __decorate([
35
+ (0, swagger_1.ApiProperty)({
36
+ type: [String],
37
+ format: 'uuid',
38
+ description: 'sys_roles uuids granted in the organization on acceptance.',
39
+ }),
40
+ (0, class_validator_1.IsArray)(),
41
+ (0, class_validator_1.ArrayMinSize)(1),
42
+ (0, class_validator_1.IsUUID)('all', { each: true }),
43
+ __metadata("design:type", Array)
44
+ ], InviteTenantUserDto.prototype, "role_ids", void 0);
45
+ //# sourceMappingURL=invite.tenant.user.dto.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"invite.tenant.user.dto.js","sourceRoot":"","sources":["../../../src/auth/dtos/invite.tenant.user.dto.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,qDAQyB;AACzB,6CAAmE;AAGnE,MAAa,mBAAmB;CAyB/B;AAzBD,kDAyBC;AArBC;IAHC,IAAA,qBAAW,EAAC,EAAE,OAAO,EAAE,eAAe,EAAE,CAAC;IACzC,IAAA,yBAAO,GAAE;IACT,IAAA,2BAAS,EAAC,GAAG,CAAC;;kDACD;AAUd;IARC,IAAA,6BAAmB,EAAC;QACnB,OAAO,EAAE,UAAU;QACnB,WAAW,EACT,0FAA0F;KAC7F,CAAC;IACD,IAAA,4BAAU,GAAE;IACZ,IAAA,0BAAQ,GAAE;IACV,IAAA,2BAAS,EAAC,GAAG,CAAC;;sDACI;AAUnB;IARC,IAAA,qBAAW,EAAC;QACX,IAAI,EAAE,CAAC,MAAM,CAAC;QACd,MAAM,EAAE,MAAM;QACd,WAAW,EAAE,4DAA4D;KAC1E,CAAC;IACD,IAAA,yBAAO,GAAE;IACT,IAAA,8BAAY,EAAC,CAAC,CAAC;IACf,IAAA,wBAAM,EAAC,KAAK,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;;qDACX"}
@@ -0,0 +1,4 @@
1
+ export declare class MemberRolesDto {
2
+ role_ids: string[];
3
+ }
4
+ //# sourceMappingURL=member.roles.dto.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"member.roles.dto.d.ts","sourceRoot":"","sources":["../../../src/auth/dtos/member.roles.dto.ts"],"names":[],"mappings":"AAIA,qBAAa,cAAc;IASzB,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB"}