@neohm/nestend 3.1.5 → 3.3.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 (184) hide show
  1. package/README.md +85 -14
  2. package/dist/admin/controllers/admin.api.key.controller.d.ts +24 -0
  3. package/dist/admin/controllers/admin.api.key.controller.d.ts.map +1 -0
  4. package/dist/admin/controllers/admin.api.key.controller.js +119 -0
  5. package/dist/admin/controllers/admin.api.key.controller.js.map +1 -0
  6. package/dist/admin/controllers/admin.scheduled.task.controller.d.ts +1 -1
  7. package/dist/admin/controllers/admin.scope.controller.d.ts +24 -0
  8. package/dist/admin/controllers/admin.scope.controller.d.ts.map +1 -0
  9. package/dist/admin/controllers/admin.scope.controller.js +106 -0
  10. package/dist/admin/controllers/admin.scope.controller.js.map +1 -0
  11. package/dist/admin/controllers/admin.tenant.controller.d.ts +5 -6
  12. package/dist/admin/controllers/admin.tenant.controller.d.ts.map +1 -1
  13. package/dist/admin/controllers/admin.tenant.controller.js +17 -11
  14. package/dist/admin/controllers/admin.tenant.controller.js.map +1 -1
  15. package/dist/admin/controllers/admin.tenant.user.controller.d.ts +4 -6
  16. package/dist/admin/controllers/admin.tenant.user.controller.d.ts.map +1 -1
  17. package/dist/admin/controllers/admin.tenant.user.controller.js +5 -8
  18. package/dist/admin/controllers/admin.tenant.user.controller.js.map +1 -1
  19. package/dist/admin/controllers/admin.user.controller.d.ts +1 -1
  20. package/dist/admin/controllers/system.role.controller.d.ts +24 -0
  21. package/dist/admin/controllers/system.role.controller.d.ts.map +1 -0
  22. package/dist/admin/controllers/system.role.controller.js +106 -0
  23. package/dist/admin/controllers/system.role.controller.js.map +1 -0
  24. package/dist/admin/dtos/add.api.key.dto.d.ts +7 -0
  25. package/dist/admin/dtos/add.api.key.dto.d.ts.map +1 -0
  26. package/dist/admin/dtos/add.api.key.dto.js +55 -0
  27. package/dist/admin/dtos/add.api.key.dto.js.map +1 -0
  28. package/dist/admin/dtos/add.scope.dto.d.ts +7 -0
  29. package/dist/admin/dtos/add.scope.dto.d.ts.map +1 -0
  30. package/dist/admin/dtos/add.scope.dto.js +47 -0
  31. package/dist/admin/dtos/add.scope.dto.js.map +1 -0
  32. package/dist/admin/dtos/add.system.role.dto.d.ts +8 -0
  33. package/dist/admin/dtos/add.system.role.dto.d.ts.map +1 -0
  34. package/dist/admin/dtos/add.system.role.dto.js +56 -0
  35. package/dist/admin/dtos/add.system.role.dto.js.map +1 -0
  36. package/dist/admin/dtos/add.tenant.dto.d.ts +1 -0
  37. package/dist/admin/dtos/add.tenant.dto.d.ts.map +1 -1
  38. package/dist/admin/dtos/add.tenant.dto.js +12 -0
  39. package/dist/admin/dtos/add.tenant.dto.js.map +1 -1
  40. package/dist/admin/dtos/api.key.list.dto.d.ts +4 -0
  41. package/dist/admin/dtos/api.key.list.dto.d.ts.map +1 -0
  42. package/dist/admin/dtos/api.key.list.dto.js +8 -0
  43. package/dist/admin/dtos/api.key.list.dto.js.map +1 -0
  44. package/dist/admin/dtos/scope.list.dto.d.ts +4 -0
  45. package/dist/admin/dtos/scope.list.dto.d.ts.map +1 -0
  46. package/dist/admin/dtos/scope.list.dto.js +8 -0
  47. package/dist/admin/dtos/scope.list.dto.js.map +1 -0
  48. package/dist/admin/es6.classes.d.ts +14 -4
  49. package/dist/admin/es6.classes.d.ts.map +1 -1
  50. package/dist/admin/es6.classes.js +27 -1
  51. package/dist/admin/es6.classes.js.map +1 -1
  52. package/dist/admin/libraries/api.key.data.processor.d.ts +16 -0
  53. package/dist/admin/libraries/api.key.data.processor.d.ts.map +1 -0
  54. package/dist/admin/libraries/api.key.data.processor.js +59 -0
  55. package/dist/admin/libraries/api.key.data.processor.js.map +1 -0
  56. package/dist/admin/libraries/api.key.list.processor.d.ts +15 -0
  57. package/dist/admin/libraries/api.key.list.processor.d.ts.map +1 -0
  58. package/dist/admin/libraries/api.key.list.processor.js +48 -0
  59. package/dist/admin/libraries/api.key.list.processor.js.map +1 -0
  60. package/dist/admin/libraries/client.user.data.processor.d.ts +3 -6
  61. package/dist/admin/libraries/client.user.data.processor.d.ts.map +1 -1
  62. package/dist/admin/libraries/client.user.data.processor.js +11 -30
  63. package/dist/admin/libraries/client.user.data.processor.js.map +1 -1
  64. package/dist/admin/libraries/scope.data.processor.d.ts +13 -0
  65. package/dist/admin/libraries/scope.data.processor.d.ts.map +1 -0
  66. package/dist/admin/libraries/scope.data.processor.js +43 -0
  67. package/dist/admin/libraries/scope.data.processor.js.map +1 -0
  68. package/dist/admin/libraries/scope.list.processor.d.ts +15 -0
  69. package/dist/admin/libraries/scope.list.processor.d.ts.map +1 -0
  70. package/dist/admin/libraries/scope.list.processor.js +29 -0
  71. package/dist/admin/libraries/scope.list.processor.js.map +1 -0
  72. package/dist/admin/libraries/system.role.data.processor.d.ts +10 -0
  73. package/dist/admin/libraries/system.role.data.processor.d.ts.map +1 -0
  74. package/dist/admin/libraries/system.role.data.processor.js +41 -0
  75. package/dist/admin/libraries/system.role.data.processor.js.map +1 -0
  76. package/dist/admin/libraries/tenant.data.processor.d.ts +5 -6
  77. package/dist/admin/libraries/tenant.data.processor.d.ts.map +1 -1
  78. package/dist/admin/libraries/tenant.data.processor.js +41 -28
  79. package/dist/admin/libraries/tenant.data.processor.js.map +1 -1
  80. package/dist/admin/libraries/tenant.delete.processor.d.ts.map +1 -1
  81. package/dist/admin/libraries/tenant.delete.processor.js +14 -0
  82. package/dist/admin/libraries/tenant.delete.processor.js.map +1 -1
  83. package/dist/admin/services/admin.access.service.d.ts +2 -0
  84. package/dist/admin/services/admin.access.service.d.ts.map +1 -1
  85. package/dist/admin/services/admin.access.service.js +3 -0
  86. package/dist/admin/services/admin.access.service.js.map +1 -1
  87. package/dist/admin/types/admin.types.d.ts +10 -4
  88. package/dist/admin/types/admin.types.d.ts.map +1 -1
  89. package/dist/auth/auth.module.d.ts.map +1 -1
  90. package/dist/auth/auth.module.js +17 -3
  91. package/dist/auth/auth.module.js.map +1 -1
  92. package/dist/auth/entities/api.key.entity.d.ts +4 -1
  93. package/dist/auth/entities/api.key.entity.d.ts.map +1 -1
  94. package/dist/auth/entities/api.key.entity.js +13 -3
  95. package/dist/auth/entities/api.key.entity.js.map +1 -1
  96. package/dist/auth/entities/tenant.scope.entity.d.ts +10 -0
  97. package/dist/auth/entities/tenant.scope.entity.d.ts.map +1 -0
  98. package/dist/auth/entities/tenant.scope.entity.js +41 -0
  99. package/dist/auth/entities/tenant.scope.entity.js.map +1 -0
  100. package/dist/auth/enums/api.key.default.enum.d.ts +2 -1
  101. package/dist/auth/enums/api.key.default.enum.d.ts.map +1 -1
  102. package/dist/auth/enums/api.key.default.enum.js +1 -0
  103. package/dist/auth/enums/api.key.default.enum.js.map +1 -1
  104. package/dist/auth/es6.classes.d.ts +3 -1
  105. package/dist/auth/es6.classes.d.ts.map +1 -1
  106. package/dist/auth/es6.classes.js +4 -0
  107. package/dist/auth/es6.classes.js.map +1 -1
  108. package/dist/auth/guards/api.key.guard.js +1 -1
  109. package/dist/auth/guards/api.key.guard.js.map +1 -1
  110. package/dist/auth/helpers/api.key.context.d.ts +6 -1
  111. package/dist/auth/helpers/api.key.context.d.ts.map +1 -1
  112. package/dist/auth/helpers/api.key.context.js +11 -2
  113. package/dist/auth/helpers/api.key.context.js.map +1 -1
  114. package/dist/auth/middlewares/api.key.middleware.d.ts +1 -0
  115. package/dist/auth/middlewares/api.key.middleware.d.ts.map +1 -1
  116. package/dist/auth/middlewares/api.key.middleware.js +17 -5
  117. package/dist/auth/middlewares/api.key.middleware.js.map +1 -1
  118. package/dist/auth/services/api.key.service.d.ts +17 -3
  119. package/dist/auth/services/api.key.service.d.ts.map +1 -1
  120. package/dist/auth/services/api.key.service.js +102 -7
  121. package/dist/auth/services/api.key.service.js.map +1 -1
  122. package/dist/auth/services/auth.service.d.ts +4 -1
  123. package/dist/auth/services/auth.service.d.ts.map +1 -1
  124. package/dist/auth/services/auth.service.js +19 -15
  125. package/dist/auth/services/auth.service.js.map +1 -1
  126. package/dist/auth/services/role.service.d.ts +9 -0
  127. package/dist/auth/services/role.service.d.ts.map +1 -0
  128. package/dist/auth/services/role.service.js +40 -0
  129. package/dist/auth/services/role.service.js.map +1 -0
  130. package/dist/auth/services/scope.service.d.ts +10 -0
  131. package/dist/auth/services/scope.service.d.ts.map +1 -0
  132. package/dist/auth/services/scope.service.js +50 -0
  133. package/dist/auth/services/scope.service.js.map +1 -0
  134. package/dist/auth/types/api.key.types.d.ts +16 -1
  135. package/dist/auth/types/api.key.types.d.ts.map +1 -1
  136. package/dist/common/types/common.response.types.d.ts +10 -0
  137. package/dist/common/types/common.response.types.d.ts.map +1 -1
  138. package/dist/constants/entity.constants.d.ts +1 -0
  139. package/dist/constants/entity.constants.d.ts.map +1 -1
  140. package/dist/constants/entity.constants.js +1 -0
  141. package/dist/constants/entity.constants.js.map +1 -1
  142. package/dist/constants/entity.maps.d.ts +2 -0
  143. package/dist/constants/entity.maps.d.ts.map +1 -1
  144. package/dist/constants/entity.maps.js +2 -0
  145. package/dist/constants/entity.maps.js.map +1 -1
  146. package/dist/constants/job.constants.d.ts +2 -0
  147. package/dist/constants/job.constants.d.ts.map +1 -1
  148. package/dist/constants/job.constants.js +2 -0
  149. package/dist/constants/job.constants.js.map +1 -1
  150. package/dist/constants/job.maps.d.ts.map +1 -1
  151. package/dist/constants/job.maps.js.map +1 -1
  152. package/dist/index.d.ts +4 -2
  153. package/dist/index.d.ts.map +1 -1
  154. package/dist/index.js +7 -3
  155. package/dist/index.js.map +1 -1
  156. package/dist/migrations/1749600000017.CreateSysApiKeysTable.d.ts.map +1 -1
  157. package/dist/migrations/1749600000017.CreateSysApiKeysTable.js +8 -1
  158. package/dist/migrations/1749600000017.CreateSysApiKeysTable.js.map +1 -1
  159. package/dist/migrations/1749600000027.CreateSysTenantScopesTable.d.ts +6 -0
  160. package/dist/migrations/1749600000027.CreateSysTenantScopesTable.d.ts.map +1 -0
  161. package/dist/migrations/1749600000027.CreateSysTenantScopesTable.js +36 -0
  162. package/dist/migrations/1749600000027.CreateSysTenantScopesTable.js.map +1 -0
  163. package/dist/notification/es6.classes.d.ts +3 -1
  164. package/dist/notification/es6.classes.d.ts.map +1 -1
  165. package/dist/notification/es6.classes.js +3 -1
  166. package/dist/notification/es6.classes.js.map +1 -1
  167. package/dist/notification/jobs/tenant.onboarded.mail.job.d.ts +15 -0
  168. package/dist/notification/jobs/tenant.onboarded.mail.job.d.ts.map +1 -0
  169. package/dist/notification/jobs/tenant.onboarded.mail.job.js +56 -0
  170. package/dist/notification/jobs/tenant.onboarded.mail.job.js.map +1 -0
  171. package/dist/notification/jobs/tenant.user.onboarded.mail.job.d.ts +15 -0
  172. package/dist/notification/jobs/tenant.user.onboarded.mail.job.d.ts.map +1 -0
  173. package/dist/notification/jobs/tenant.user.onboarded.mail.job.js +56 -0
  174. package/dist/notification/jobs/tenant.user.onboarded.mail.job.js.map +1 -0
  175. package/dist/notification/notification.module.d.ts.map +1 -1
  176. package/dist/notification/notification.module.js +7 -0
  177. package/dist/notification/notification.module.js.map +1 -1
  178. package/dist/notification/types/email.notification.types.d.ts +12 -0
  179. package/dist/notification/types/email.notification.types.d.ts.map +1 -1
  180. package/package.json +1 -1
  181. package/dist/admin/dtos/add.user.role.dto.d.ts +0 -4
  182. package/dist/admin/dtos/add.user.role.dto.d.ts.map +0 -1
  183. package/dist/admin/dtos/add.user.role.dto.js +0 -22
  184. package/dist/admin/dtos/add.user.role.dto.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"api.key.guard.js","sourceRoot":"","sources":["../../../src/auth/guards/api.key.guard.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,2CAKwB;AACxB,uCAAyC;AAEzC,+EAA2E;AAC3E,qFAA4E;AAC5E,wEAA8D;AAC9D,qEAA+D;AAC/D,iEAA4D;AAUrD,IAAM,WAAW,GAAjB,MAAM,WAAW;IACtB,YACmB,aAA4B,EAC5B,SAAoB;QADpB,kBAAa,GAAb,aAAa,CAAe;QAC5B,cAAS,GAAT,SAAS,CAAW;IACpC,CAAC;IAEJ,KAAK,CAAC,WAAW,CAAC,OAAyB;QACzC,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,iBAAiB,CAAU,gCAAa,EAAE;YACxE,OAAO,CAAC,UAAU,EAAE;YACpB,OAAO,CAAC,QAAQ,EAAE;SACnB,CAAC,CAAC;QACH,IAAI,QAAQ;YAAE,OAAO,IAAI,CAAC;QAE1B,MAAM,OAAO,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC,UAAU,EAAW,CAAC;QAC7D,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;QACxC,IAAI,CAAC,MAAM;YAAE,MAAM,IAAI,8BAAqB,CAAC,qBAAqB,CAAC,CAAC;QAEpE,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;QAC/D,IAAI,CAAC,MAAM;YACT,MAAM,IAAI,8BAAqB,CAC7B,yCAAyC,CAC1C,CAAC;QAEJ,MAAM,cAAc,GAClB,IAAI,CAAC,SAAS,CAAC,iBAAiB,CAAW,6CAAkB,EAAE;YAC7D,OAAO,CAAC,UAAU,EAAE;YACpB,OAAO,CAAC,QAAQ,EAAE;SACnB,CAAC,IAAI,EAAE,CAAC;QACX,KAAK,MAAM,KAAK,IAAI,cAAc,EAAE,CAAC;YACnC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,CAAC;gBAChD,MAAM,IAAI,kCAAe,CAAC,2BAA2B,KAAK,UAAU,CAAC,CAAC;YACxE,CAAC;QACH,CAAC;QAEA,OAAgC,CAAC,MAAM,GAAG,MAAM,CAAC;QAClD,OAAO,IAAI,CAAC;IACd,CAAC;IAEO,UAAU,CAAC,OAAgB;QACjC,MAAM,UAAU,GACd,OAAO,CAAC,GAAG,CAAC,mBAAmB,IAAI,oCAAa,CAAC,WAAW,CAAC;QAC/D,MAAM,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QAC9C,IAAI,SAAS;YAAE,OAAO,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAE1E,MAAM,aAAa,GAAG,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC;QACpD,IAAI,aAAa,EAAE,WAAW,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;YACvD,OAAO,aAAa,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC;QACtD,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;CACF,CAAA;AAlDY,kCAAW;sBAAX,WAAW;IADvB,IAAA,mBAAU,GAAE;qCAGuB,+BAAa;QACjB,gBAAS;GAH5B,WAAW,CAkDvB"}
1
+ {"version":3,"file":"api.key.guard.js","sourceRoot":"","sources":["../../../src/auth/guards/api.key.guard.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,2CAKwB;AACxB,uCAAyC;AAEzC,+EAA2E;AAC3E,qFAA4E;AAC5E,wEAA8D;AAC9D,qEAA+D;AAC/D,iEAA4D;AAUrD,IAAM,WAAW,GAAjB,MAAM,WAAW;IACtB,YACmB,aAA4B,EAC5B,SAAoB;QADpB,kBAAa,GAAb,aAAa,CAAe;QAC5B,cAAS,GAAT,SAAS,CAAW;IACpC,CAAC;IAEJ,KAAK,CAAC,WAAW,CAAC,OAAyB;QACzC,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,iBAAiB,CAAU,gCAAa,EAAE;YACxE,OAAO,CAAC,UAAU,EAAE;YACpB,OAAO,CAAC,QAAQ,EAAE;SACnB,CAAC,CAAC;QACH,IAAI,QAAQ;YAAE,OAAO,IAAI,CAAC;QAE1B,MAAM,OAAO,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC,UAAU,EAAW,CAAC;QAC7D,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;QACxC,IAAI,CAAC,MAAM;YAAE,MAAM,IAAI,8BAAqB,CAAC,qBAAqB,CAAC,CAAC;QAEpE,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;QAC/D,IAAI,CAAC,MAAM;YACT,MAAM,IAAI,8BAAqB,CAC7B,yCAAyC,CAC1C,CAAC;QAEJ,MAAM,cAAc,GAClB,IAAI,CAAC,SAAS,CAAC,iBAAiB,CAAW,6CAAkB,EAAE;YAC7D,OAAO,CAAC,UAAU,EAAE;YACpB,OAAO,CAAC,QAAQ,EAAE;SACnB,CAAC,IAAI,EAAE,CAAC;QACX,KAAK,MAAM,KAAK,IAAI,cAAc,EAAE,CAAC;YACnC,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC;gBACxD,MAAM,IAAI,kCAAe,CAAC,2BAA2B,KAAK,UAAU,CAAC,CAAC;YACxE,CAAC;QACH,CAAC;QAEA,OAAgC,CAAC,MAAM,GAAG,MAAM,CAAC;QAClD,OAAO,IAAI,CAAC;IACd,CAAC;IAEO,UAAU,CAAC,OAAgB;QACjC,MAAM,UAAU,GACd,OAAO,CAAC,GAAG,CAAC,mBAAmB,IAAI,oCAAa,CAAC,WAAW,CAAC;QAC/D,MAAM,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QAC9C,IAAI,SAAS;YAAE,OAAO,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAE1E,MAAM,aAAa,GAAG,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC;QACpD,IAAI,aAAa,EAAE,WAAW,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;YACvD,OAAO,aAAa,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC;QACtD,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;CACF,CAAA;AAlDY,kCAAW;sBAAX,WAAW;IADvB,IAAA,mBAAU,GAAE;qCAGuB,+BAAa;QACjB,gBAAS;GAH5B,WAAW,CAkDvB"}
@@ -1,6 +1,11 @@
1
1
  import { ApiKeyEntity } from '../entities/api.key.entity';
2
+ import { TenantEntity } from '../../tenant/entities/tenant.entity';
3
+ import type { ApiKeyContextValue } from '../types/api.key.types';
2
4
  export declare class ApiKeyContext {
3
- static set(apiKey: ApiKeyEntity): void;
5
+ static runWithContext<T>(context: ApiKeyContextValue, callback: () => T): T;
6
+ static set(context: ApiKeyContextValue): void;
4
7
  static apiKey(): ApiKeyEntity | undefined;
8
+ static tenant(): TenantEntity | undefined;
9
+ static scopes(): ApiKeyContextValue | undefined;
5
10
  }
6
11
  //# sourceMappingURL=api.key.context.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"api.key.context.d.ts","sourceRoot":"","sources":["../../../src/auth/helpers/api.key.context.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAU1D,qBAAa,aAAa;IACxB,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,YAAY,GAAG,IAAI;IAItC,MAAM,CAAC,MAAM,IAAI,YAAY,GAAG,SAAS;CAG1C"}
1
+ {"version":3,"file":"api.key.context.d.ts","sourceRoot":"","sources":["../../../src/auth/helpers/api.key.context.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC1D,OAAO,EAAE,YAAY,EAAE,MAAM,qCAAqC,CAAC;AACnE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAYjE,qBAAa,aAAa;IAMxB,MAAM,CAAC,cAAc,CAAC,CAAC,EAAE,OAAO,EAAE,kBAAkB,EAAE,QAAQ,EAAE,MAAM,CAAC,GAAG,CAAC;IAS3E,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE,kBAAkB,GAAG,IAAI;IAI7C,MAAM,CAAC,MAAM,IAAI,YAAY,GAAG,SAAS;IAIzC,MAAM,CAAC,MAAM,IAAI,YAAY,GAAG,SAAS;IAUzC,MAAM,CAAC,MAAM,IAAI,kBAAkB,GAAG,SAAS;CAGhD"}
@@ -4,10 +4,19 @@ exports.ApiKeyContext = void 0;
4
4
  const async_hooks_1 = require("async_hooks");
5
5
  const storage = new async_hooks_1.AsyncLocalStorage();
6
6
  class ApiKeyContext {
7
- static set(apiKey) {
8
- storage.enterWith(apiKey);
7
+ static runWithContext(context, callback) {
8
+ return storage.run(context, callback);
9
+ }
10
+ static set(context) {
11
+ storage.enterWith(context);
9
12
  }
10
13
  static apiKey() {
14
+ return storage.getStore()?.apiKey;
15
+ }
16
+ static tenant() {
17
+ return storage.getStore()?.tenant;
18
+ }
19
+ static scopes() {
11
20
  return storage.getStore();
12
21
  }
13
22
  }
@@ -1 +1 @@
1
- {"version":3,"file":"api.key.context.js","sourceRoot":"","sources":["../../../src/auth/helpers/api.key.context.ts"],"names":[],"mappings":";;;AAAA,6CAAgD;AAGhD,MAAM,OAAO,GAAG,IAAI,+BAAiB,EAAgB,CAAC;AAQtD,MAAa,aAAa;IACxB,MAAM,CAAC,GAAG,CAAC,MAAoB;QAC7B,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;IAC5B,CAAC;IAED,MAAM,CAAC,MAAM;QACX,OAAO,OAAO,CAAC,QAAQ,EAAE,CAAC;IAC5B,CAAC;CACF;AARD,sCAQC"}
1
+ {"version":3,"file":"api.key.context.js","sourceRoot":"","sources":["../../../src/auth/helpers/api.key.context.ts"],"names":[],"mappings":";;;AAAA,6CAAgD;AAKhD,MAAM,OAAO,GAAG,IAAI,+BAAiB,EAAsB,CAAC;AAU5D,MAAa,aAAa;IAMxB,MAAM,CAAC,cAAc,CAAI,OAA2B,EAAE,QAAiB;QACrE,OAAO,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IACxC,CAAC;IAOD,MAAM,CAAC,GAAG,CAAC,OAA2B;QACpC,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;IAC7B,CAAC;IAED,MAAM,CAAC,MAAM;QACX,OAAO,OAAO,CAAC,QAAQ,EAAE,EAAE,MAAM,CAAC;IACpC,CAAC;IAED,MAAM,CAAC,MAAM;QACX,OAAO,OAAO,CAAC,QAAQ,EAAE,EAAE,MAAM,CAAC;IACpC,CAAC;IAQD,MAAM,CAAC,MAAM;QACX,OAAO,OAAO,CAAC,QAAQ,EAAE,CAAC;IAC5B,CAAC;CACF;AApCD,sCAoCC"}
@@ -5,6 +5,7 @@ export declare class ApiKeyMiddleware implements NestMiddleware {
5
5
  private readonly apiKeyService;
6
6
  constructor(apiKeyService: ApiKeyService);
7
7
  use(request: Request, _response: Response, next: NextFunction): Promise<void>;
8
+ private resolveContext;
8
9
  private extractKey;
9
10
  }
10
11
  //# sourceMappingURL=api.key.middleware.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"api.key.middleware.d.ts","sourceRoot":"","sources":["../../../src/auth/middlewares/api.key.middleware.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAC5D,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAE1D,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAe5D,qBACa,gBAAiB,YAAW,cAAc;IACzC,OAAO,CAAC,QAAQ,CAAC,aAAa;gBAAb,aAAa,EAAE,aAAa;IAEnD,GAAG,CACP,OAAO,EAAE,OAAO,EAChB,SAAS,EAAE,QAAQ,EACnB,IAAI,EAAE,YAAY,GACjB,OAAO,CAAC,IAAI,CAAC;IAShB,OAAO,CAAC,UAAU;CAYnB"}
1
+ {"version":3,"file":"api.key.middleware.d.ts","sourceRoot":"","sources":["../../../src/auth/middlewares/api.key.middleware.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAC5D,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAE1D,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAiB5D,qBACa,gBAAiB,YAAW,cAAc;IACzC,OAAO,CAAC,QAAQ,CAAC,aAAa;gBAAb,aAAa,EAAE,aAAa;IAEnD,GAAG,CACP,OAAO,EAAE,OAAO,EAChB,SAAS,EAAE,QAAQ,EACnB,IAAI,EAAE,YAAY,GACjB,OAAO,CAAC,IAAI,CAAC;YAcF,cAAc;IAgB5B,OAAO,CAAC,UAAU;CAYnB"}
@@ -19,14 +19,26 @@ let ApiKeyMiddleware = class ApiKeyMiddleware {
19
19
  this.apiKeyService = apiKeyService;
20
20
  }
21
21
  async use(request, _response, next) {
22
- const rawKey = this.extractKey(request);
23
- if (rawKey) {
24
- const apiKey = await this.apiKeyService.validateApiKey(rawKey);
25
- if (apiKey)
26
- api_key_context_1.ApiKeyContext.set(apiKey);
22
+ const context = await this.resolveContext(request);
23
+ if (context) {
24
+ api_key_context_1.ApiKeyContext.runWithContext(context, next);
25
+ return;
27
26
  }
28
27
  next();
29
28
  }
29
+ async resolveContext(request) {
30
+ const rawKey = this.extractKey(request);
31
+ if (!rawKey)
32
+ return null;
33
+ const apiKey = await this.apiKeyService.validateApiKey(rawKey);
34
+ if (!apiKey)
35
+ return null;
36
+ return {
37
+ apiKey,
38
+ tenant: apiKey.tenant ?? undefined,
39
+ scopes: await this.apiKeyService.grantedScopes(apiKey.id),
40
+ };
41
+ }
30
42
  extractKey(request) {
31
43
  const headerName = process.env.API_KEY_HEADER_NAME || api_key_default_enum_1.ApiKeyDefault.HEADER_NAME;
32
44
  const headerKey = request.headers[headerName];
@@ -1 +1 @@
1
- {"version":3,"file":"api.key.middleware.js","sourceRoot":"","sources":["../../../src/auth/middlewares/api.key.middleware.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,2CAA4D;AAE5D,wEAA8D;AAC9D,iEAA4D;AAC5D,gEAA2D;AAepD,IAAM,gBAAgB,GAAtB,MAAM,gBAAgB;IAC3B,YAA6B,aAA4B;QAA5B,kBAAa,GAAb,aAAa,CAAe;IAAG,CAAC;IAE7D,KAAK,CAAC,GAAG,CACP,OAAgB,EAChB,SAAmB,EACnB,IAAkB;QAElB,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;QACxC,IAAI,MAAM,EAAE,CAAC;YACX,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;YAC/D,IAAI,MAAM;gBAAE,+BAAa,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACxC,CAAC;QACD,IAAI,EAAE,CAAC;IACT,CAAC;IAEO,UAAU,CAAC,OAAgB;QACjC,MAAM,UAAU,GACd,OAAO,CAAC,GAAG,CAAC,mBAAmB,IAAI,oCAAa,CAAC,WAAW,CAAC;QAC/D,MAAM,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QAC9C,IAAI,SAAS;YAAE,OAAO,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAE1E,MAAM,aAAa,GAAG,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC;QACpD,IAAI,aAAa,EAAE,WAAW,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;YACvD,OAAO,aAAa,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC;QACtD,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;CACF,CAAA;AA5BY,4CAAgB;2BAAhB,gBAAgB;IAD5B,IAAA,mBAAU,GAAE;qCAEiC,+BAAa;GAD9C,gBAAgB,CA4B5B"}
1
+ {"version":3,"file":"api.key.middleware.js","sourceRoot":"","sources":["../../../src/auth/middlewares/api.key.middleware.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,2CAA4D;AAE5D,wEAA8D;AAC9D,iEAA4D;AAC5D,gEAA2D;AAiBpD,IAAM,gBAAgB,GAAtB,MAAM,gBAAgB;IAC3B,YAA6B,aAA4B;QAA5B,kBAAa,GAAb,aAAa,CAAe;IAAG,CAAC;IAE7D,KAAK,CAAC,GAAG,CACP,OAAgB,EAChB,SAAmB,EACnB,IAAkB;QAElB,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;QAKnD,IAAI,OAAO,EAAE,CAAC;YACZ,+BAAa,CAAC,cAAc,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;YAC5C,OAAO;QACT,CAAC;QACD,IAAI,EAAE,CAAC;IACT,CAAC;IAGO,KAAK,CAAC,cAAc,CAC1B,OAAgB;QAEhB,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;QACxC,IAAI,CAAC,MAAM;YAAE,OAAO,IAAI,CAAC;QAEzB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;QAC/D,IAAI,CAAC,MAAM;YAAE,OAAO,IAAI,CAAC;QAEzB,OAAO;YACL,MAAM;YACN,MAAM,EAAE,MAAM,CAAC,MAAM,IAAI,SAAS;YAClC,MAAM,EAAE,MAAM,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE,CAAC;SAC1D,CAAC;IACJ,CAAC;IAEO,UAAU,CAAC,OAAgB;QACjC,MAAM,UAAU,GACd,OAAO,CAAC,GAAG,CAAC,mBAAmB,IAAI,oCAAa,CAAC,WAAW,CAAC;QAC/D,MAAM,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QAC9C,IAAI,SAAS;YAAE,OAAO,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAE1E,MAAM,aAAa,GAAG,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC;QACpD,IAAI,aAAa,EAAE,WAAW,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;YACvD,OAAO,aAAa,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC;QACtD,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;CACF,CAAA;AAjDY,4CAAgB;2BAAhB,gBAAgB;IAD5B,IAAA,mBAAU,GAAE;qCAEiC,+BAAa;GAD9C,gBAAgB,CAiD5B"}
@@ -1,17 +1,31 @@
1
1
  import { Logger } from '@nestjs/common';
2
2
  import { DataSource } from 'typeorm';
3
+ import { DeleteResult, DisableResult } from '../../common/types/common.response.types';
4
+ import { EncryptionService } from '../../common/services/encryption.service';
3
5
  import { ApiKeyEntity } from '../entities/api.key.entity';
4
- import { GenerateApiKeyOptions, GeneratedApiKey } from '../types/api.key.types';
6
+ import { ApiScopeEntity } from '../entities/api.scope.entity';
7
+ import { ApiKeyAccess, ApiKeyDetail, GenerateApiKeyOptions, GeneratedApiKey } from '../types/api.key.types';
5
8
  export declare class ApiKeyService {
6
9
  private readonly dataSource;
10
+ private readonly encryptionService;
7
11
  protected readonly logger: Logger;
8
- constructor(dataSource: DataSource);
12
+ constructor(dataSource: DataSource, encryptionService: EncryptionService);
9
13
  generateApiKey(name: string, options?: GenerateApiKeyOptions): Promise<GeneratedApiKey>;
14
+ revealApiKey(apiKeyUuid: string): Promise<string>;
15
+ grantScopes(apiKeyUuid: string, scopeIds?: string[], grantedBy?: string): Promise<ApiScopeEntity[]>;
10
16
  validateApiKey(rawKey: string): Promise<ApiKeyEntity | null>;
11
- hasScope(apiKey: ApiKeyEntity, scope: string): boolean;
17
+ grantedScopes(apiKeyUuid: string): Promise<string[]>;
18
+ apiKeyDetail(apiKeyUuid: string, reveal?: boolean): Promise<ApiKeyDetail>;
19
+ hasScope(apiKey: ApiKeyEntity, scope: string): Promise<boolean>;
20
+ validateAccess(scopeIdentifier: string): ApiKeyAccess;
12
21
  revokeApiKey(apiKeyUuid: string): Promise<void>;
22
+ disableApiKey(apiKeyUuid: string, actorUuid: string): Promise<DisableResult>;
23
+ deleteApiKey(apiKeyUuid: string, actorUuid: string): Promise<DeleteResult>;
13
24
  listApiKeys(): Promise<ApiKeyEntity[]>;
25
+ private grantedScopeRecords;
26
+ private grants;
14
27
  private touchLastUsed;
15
28
  private get apiKeyRepository();
29
+ private get apiScopeRepository();
16
30
  }
17
31
  //# sourceMappingURL=api.key.service.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"api.key.service.d.ts","sourceRoot":"","sources":["../../../src/auth/services/api.key.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAEpD,OAAO,EAAE,UAAU,EAAc,MAAM,SAAS,CAAC;AAGjD,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAE1D,OAAO,EAAE,qBAAqB,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAOhF,qBACa,aAAa;IAGZ,OAAO,CAAC,QAAQ,CAAC,UAAU;IAFvC,SAAS,CAAC,QAAQ,CAAC,MAAM,SAAkC;gBAE9B,UAAU,EAAE,UAAU;IAE7C,cAAc,CAClB,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE,qBAAqB,GAC9B,OAAO,CAAC,eAAe,CAAC;IAiBrB,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC;IAgBlE,QAAQ,CAAC,MAAM,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO;IAKhD,YAAY,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAW/C,WAAW,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;YAI9B,aAAa;IAO3B,OAAO,KAAK,gBAAgB,GAE3B;CACF"}
1
+ {"version":3,"file":"api.key.service.d.ts","sourceRoot":"","sources":["../../../src/auth/services/api.key.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAEpD,OAAO,EAAE,UAAU,EAAc,MAAM,SAAS,CAAC;AAGjD,OAAO,EACL,YAAY,EACZ,aAAa,EACd,MAAM,0CAA0C,CAAC;AAClD,OAAO,EAAE,iBAAiB,EAAE,MAAM,0CAA0C,CAAC;AAE7E,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC1D,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAI9D,OAAO,EACL,YAAY,EACZ,YAAY,EACZ,qBAAqB,EACrB,eAAe,EAChB,MAAM,wBAAwB,CAAC;AAYhC,qBACa,aAAa;IAItB,OAAO,CAAC,QAAQ,CAAC,UAAU;IAC3B,OAAO,CAAC,QAAQ,CAAC,iBAAiB;IAJpC,SAAS,CAAC,QAAQ,CAAC,MAAM,SAAkC;gBAGxC,UAAU,EAAE,UAAU,EACtB,iBAAiB,EAAE,iBAAiB;IAGjD,cAAc,CAClB,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE,qBAAqB,GAC9B,OAAO,CAAC,eAAe,CAAC;IAgCrB,YAAY,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAiBjD,WAAW,CACf,UAAU,EAAE,MAAM,EAClB,QAAQ,CAAC,EAAE,MAAM,EAAE,EACnB,SAAS,CAAC,EAAE,MAAM,GACjB,OAAO,CAAC,cAAc,EAAE,CAAC;IAetB,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC;IAiB5D,aAAa,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAapD,YAAY,CAChB,UAAU,EAAE,MAAM,EAClB,MAAM,UAAQ,GACb,OAAO,CAAC,YAAY,CAAC;IAsBlB,QAAQ,CAAC,MAAM,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAWrE,cAAc,CAAC,eAAe,EAAE,MAAM,GAAG,YAAY;IAkB/C,YAAY,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAiB/C,aAAa,CACjB,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,aAAa,CAAC;IAkBnB,YAAY,CAChB,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,YAAY,CAAC;IAiBlB,WAAW,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;YAK9B,mBAAmB;IAajC,OAAO,CAAC,MAAM;YAMA,aAAa;IAO3B,OAAO,KAAK,gBAAgB,GAE3B;IAED,OAAO,KAAK,kBAAkB,GAE7B;CACF"}
@@ -14,13 +14,18 @@ exports.ApiKeyService = void 0;
14
14
  const common_1 = require("@nestjs/common");
15
15
  const crypto_1 = require("crypto");
16
16
  const typeorm_1 = require("typeorm");
17
+ const access_exception_1 = require("../../global/exceptions/access.exception");
17
18
  const not_found_exception_1 = require("../../global/exceptions/not.found.exception");
19
+ const encryption_service_1 = require("../../common/services/encryption.service");
18
20
  const hash_util_1 = require("../../global/utilities/hash.util");
19
21
  const api_key_entity_1 = require("../entities/api.key.entity");
22
+ const api_scope_entity_1 = require("../entities/api.scope.entity");
20
23
  const api_key_default_enum_1 = require("../enums/api.key.default.enum");
24
+ const api_key_context_1 = require("../helpers/api.key.context");
21
25
  let ApiKeyService = ApiKeyService_1 = class ApiKeyService {
22
- constructor(dataSource) {
26
+ constructor(dataSource, encryptionService) {
23
27
  this.dataSource = dataSource;
28
+ this.encryptionService = encryptionService;
24
29
  this.logger = new common_1.Logger(ApiKeyService_1.name);
25
30
  }
26
31
  async generateApiKey(name, options) {
@@ -29,18 +34,43 @@ let ApiKeyService = ApiKeyService_1 = class ApiKeyService {
29
34
  name,
30
35
  key_prefix: rawKey.slice(0, api_key_default_enum_1.ApiKeyDefault.PREFIX_VISIBLE_LENGTH),
31
36
  key_hash: hash_util_1.Hash.sha256(rawKey),
37
+ key_encrypted: this.encryptionService.encrypt(rawKey),
32
38
  is_active: true,
33
- ...(options?.scopes ? { scopes: options.scopes } : {}),
39
+ ...(options?.tenantId ? { tenant_id: options.tenantId } : {}),
34
40
  ...(options?.expiresAt ? { expires_at: options.expiresAt } : {}),
35
41
  ...(options?.createdBy ? { created_by: options.createdBy } : {}),
36
42
  }));
43
+ await this.grantScopes(apiKey.id, options?.scopeIds, options?.createdBy);
44
+ delete apiKey.key_encrypted;
37
45
  return { rawKey, apiKey };
38
46
  }
47
+ async revealApiKey(apiKeyUuid) {
48
+ const apiKey = await this.apiKeyRepository
49
+ .createQueryBuilder('api_key')
50
+ .addSelect('api_key.key_encrypted')
51
+ .where('api_key.id = :id', { id: apiKeyUuid })
52
+ .getOne();
53
+ if (!apiKey)
54
+ throw new not_found_exception_1.NotFoundException('No API key exists for this id');
55
+ if (!apiKey.key_encrypted)
56
+ throw new not_found_exception_1.NotFoundException('This API key predates recoverable storage — reissue it instead.');
57
+ return this.encryptionService.decrypt(apiKey.key_encrypted);
58
+ }
59
+ async grantScopes(apiKeyUuid, scopeIds, grantedBy) {
60
+ if (!scopeIds?.length)
61
+ return [];
62
+ return this.apiScopeRepository.save([...new Set(scopeIds)].map((scope_id) => this.apiScopeRepository.create({
63
+ api_key_id: apiKeyUuid,
64
+ scope_id,
65
+ ...(grantedBy ? { created_by: grantedBy } : {}),
66
+ })));
67
+ }
39
68
  async validateApiKey(rawKey) {
40
69
  if (!rawKey)
41
70
  return null;
42
71
  const apiKey = await this.apiKeyRepository.findOne({
43
72
  where: { key_hash: hash_util_1.Hash.sha256(rawKey) },
73
+ relations: { tenant: true },
44
74
  });
45
75
  if (!apiKey || !apiKey.is_active || apiKey.revoked_at)
46
76
  return null;
@@ -49,10 +79,39 @@ let ApiKeyService = ApiKeyService_1 = class ApiKeyService {
49
79
  this.touchLastUsed(apiKey).catch((error) => this.logger.warn(`Failed to update last_used_at: ${error.message}`));
50
80
  return apiKey;
51
81
  }
52
- hasScope(apiKey, scope) {
53
- if (!apiKey.scopes || apiKey.scopes.length === 0)
54
- return true;
55
- return apiKey.scopes.includes('*') || apiKey.scopes.includes(scope);
82
+ async grantedScopes(apiKeyUuid) {
83
+ const scopes = await this.grantedScopeRecords(apiKeyUuid);
84
+ return scopes.map((scope) => scope.identifier);
85
+ }
86
+ async apiKeyDetail(apiKeyUuid, reveal = false) {
87
+ const query = this.apiKeyRepository
88
+ .createQueryBuilder('api_key')
89
+ .leftJoinAndSelect('api_key.tenant', 'tenant')
90
+ .where('api_key.id = :id', { id: apiKeyUuid });
91
+ if (reveal)
92
+ query.addSelect('api_key.key_encrypted');
93
+ const apiKey = await query.getOne();
94
+ if (!apiKey)
95
+ throw new not_found_exception_1.NotFoundException('No API key exists for this id');
96
+ const encrypted = apiKey.key_encrypted;
97
+ delete apiKey.key_encrypted;
98
+ return Object.assign(apiKey, {
99
+ scopes: await this.grantedScopeRecords(apiKeyUuid),
100
+ ...(encrypted ? { key: this.encryptionService.decrypt(encrypted) } : {}),
101
+ });
102
+ }
103
+ async hasScope(apiKey, scope) {
104
+ return this.grants(await this.grantedScopes(apiKey.id), scope);
105
+ }
106
+ validateAccess(scopeIdentifier) {
107
+ const granted = api_key_context_1.ApiKeyContext.scopes();
108
+ if (!granted)
109
+ throw new access_exception_1.AccessException('Authentication required: no valid API key on this request.');
110
+ if (!this.grants(granted.scopes, scopeIdentifier))
111
+ throw new access_exception_1.AccessException('This feature is not enabled for this Api key');
112
+ if (!granted.tenant)
113
+ throw new access_exception_1.AccessException('This Api key is not bound to an organization.');
114
+ return { tenant: granted.tenant };
56
115
  }
57
116
  async revokeApiKey(apiKeyUuid) {
58
117
  const apiKey = await this.apiKeyRepository.findOne({
@@ -64,19 +123,55 @@ let ApiKeyService = ApiKeyService_1 = class ApiKeyService {
64
123
  apiKey.is_active = false;
65
124
  await this.apiKeyRepository.save(apiKey);
66
125
  }
126
+ async disableApiKey(apiKeyUuid, actorUuid) {
127
+ const apiKey = await this.apiKeyRepository.findOne({
128
+ where: { id: apiKeyUuid },
129
+ });
130
+ if (!apiKey)
131
+ throw new not_found_exception_1.NotFoundException('No API key exists for this id');
132
+ apiKey.is_active = false;
133
+ await this.apiKeyRepository.save(apiKey);
134
+ return { id: apiKeyUuid, disabled: true, disabled_by: actorUuid };
135
+ }
136
+ async deleteApiKey(apiKeyUuid, actorUuid) {
137
+ if (!(await this.apiKeyRepository.existsBy({ id: apiKeyUuid })))
138
+ throw new not_found_exception_1.NotFoundException('No API key exists for this id');
139
+ await this.dataSource.transaction(async (trx) => {
140
+ await trx.update(api_key_entity_1.ApiKeyEntity, { id: apiKeyUuid }, { is_active: false, revoked_at: new Date() });
141
+ await trx.softDelete(api_scope_entity_1.ApiScopeEntity, { api_key_id: apiKeyUuid });
142
+ await trx.softDelete(api_key_entity_1.ApiKeyEntity, { id: apiKeyUuid });
143
+ });
144
+ return { id: apiKeyUuid, deleted: true, deleted_by: actorUuid };
145
+ }
67
146
  async listApiKeys() {
68
147
  return this.apiKeyRepository.find({ order: { created_at: 'DESC' } });
69
148
  }
149
+ async grantedScopeRecords(apiKeyUuid) {
150
+ const apiScopes = await this.apiScopeRepository.find({
151
+ where: { api_key_id: apiKeyUuid },
152
+ relations: { scope: true },
153
+ });
154
+ return apiScopes
155
+ .map((apiScope) => apiScope.scope)
156
+ .filter((scope) => !!scope);
157
+ }
158
+ grants(granted, scope) {
159
+ return (granted.includes(api_key_default_enum_1.ApiKeyDefault.WILDCARD_SCOPE) || granted.includes(scope));
160
+ }
70
161
  async touchLastUsed(apiKey) {
71
162
  await this.apiKeyRepository.update({ id: apiKey.id }, { last_used_at: new Date() });
72
163
  }
73
164
  get apiKeyRepository() {
74
165
  return this.dataSource.getRepository(api_key_entity_1.ApiKeyEntity);
75
166
  }
167
+ get apiScopeRepository() {
168
+ return this.dataSource.getRepository(api_scope_entity_1.ApiScopeEntity);
169
+ }
76
170
  };
77
171
  exports.ApiKeyService = ApiKeyService;
78
172
  exports.ApiKeyService = ApiKeyService = ApiKeyService_1 = __decorate([
79
173
  (0, common_1.Injectable)(),
80
- __metadata("design:paramtypes", [typeorm_1.DataSource])
174
+ __metadata("design:paramtypes", [typeorm_1.DataSource,
175
+ encryption_service_1.EncryptionService])
81
176
  ], ApiKeyService);
82
177
  //# sourceMappingURL=api.key.service.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"api.key.service.js","sourceRoot":"","sources":["../../../src/auth/services/api.key.service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"api.key.service.js","sourceRoot":"","sources":["../../../src/auth/services/api.key.service.ts"],"names":[],"mappings":"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"}
@@ -2,13 +2,16 @@ import { JwtService } from '@nestjs/jwt';
2
2
  import { DataSource } from 'typeorm';
3
3
  import { UserEntity } from '../entities/user.entity';
4
4
  import { CacheService } from '../../common/services/cache.service';
5
+ import { ScopeService } from './scope.service';
5
6
  import { AuthenticatedAccess, AuthTokenPair, IssueTokensUser, TokenIssueContext } from '../types/auth.types';
6
7
  export declare class AuthService {
7
8
  private readonly jwtService;
8
9
  private readonly cacheService;
9
10
  private readonly dataSource;
10
- constructor(jwtService: JwtService, cacheService: CacheService, dataSource: DataSource);
11
+ private readonly scopeService;
12
+ constructor(jwtService: JwtService, cacheService: CacheService, dataSource: DataSource, scopeService: ScopeService);
11
13
  validateRole(roleIdentifier?: string): Promise<AuthenticatedAccess>;
14
+ validateAccess(scopeIdentifier: string, roleIdentifier?: string): Promise<AuthenticatedAccess>;
12
15
  validateCredentials(email: string, password: string): Promise<UserEntity>;
13
16
  issueTokens(user: IssueTokensUser, context?: TokenIssueContext): Promise<AuthTokenPair>;
14
17
  refresh(rawRefreshToken: string, context?: TokenIssueContext): Promise<AuthTokenPair>;
@@ -1 +1 @@
1
- {"version":3,"file":"auth.service.d.ts","sourceRoot":"","sources":["../../../src/auth/services/auth.service.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAkB,MAAM,aAAa,CAAC;AACzD,OAAO,EAAE,UAAU,EAAsB,MAAM,SAAS,CAAC;AAIzD,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAErD,OAAO,EAAE,YAAY,EAAE,MAAM,qCAAqC,CAAC;AAEnE,OAAO,EACL,mBAAmB,EACnB,aAAa,EACb,eAAe,EACf,iBAAiB,EAClB,MAAM,qBAAqB,CAAC;AAI7B,qBACa,WAAW;IAEpB,OAAO,CAAC,QAAQ,CAAC,UAAU;IAC3B,OAAO,CAAC,QAAQ,CAAC,YAAY;IAC7B,OAAO,CAAC,QAAQ,CAAC,UAAU;gBAFV,UAAU,EAAE,UAAU,EACtB,YAAY,EAAE,YAAY,EAC1B,UAAU,EAAE,UAAU;IAYnC,YAAY,CAAC,cAAc,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,CAAC;IA+BnE,mBAAmB,CACvB,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,UAAU,CAAC;IAwBhB,WAAW,CACf,IAAI,EAAE,eAAe,EACrB,OAAO,CAAC,EAAE,iBAAiB,GAC1B,OAAO,CAAC,aAAa,CAAC;IAuDnB,OAAO,CACX,eAAe,EAAE,MAAM,EACvB,OAAO,CAAC,EAAE,iBAAiB,GAC1B,OAAO,CAAC,aAAa,CAAC;IAgCnB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IASjD,SAAS,CAAC,eAAe,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAUjD,iBAAiB,CAAC,GAAG,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAKjE,MAAM,CAAC,eAAe,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAYpD,OAAO,CAAC,SAAS;IAIjB,OAAO,KAAK,gBAAgB,GAE3B;IAED,OAAO,KAAK,WAAW,GAEtB;CACF"}
1
+ {"version":3,"file":"auth.service.d.ts","sourceRoot":"","sources":["../../../src/auth/services/auth.service.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAkB,MAAM,aAAa,CAAC;AACzD,OAAO,EAAE,UAAU,EAAsB,MAAM,SAAS,CAAC;AAIzD,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAErD,OAAO,EAAE,YAAY,EAAE,MAAM,qCAAqC,CAAC;AACnE,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAE/C,OAAO,EACL,mBAAmB,EACnB,aAAa,EACb,eAAe,EACf,iBAAiB,EAClB,MAAM,qBAAqB,CAAC;AAI7B,qBACa,WAAW;IAEpB,OAAO,CAAC,QAAQ,CAAC,UAAU;IAC3B,OAAO,CAAC,QAAQ,CAAC,YAAY;IAC7B,OAAO,CAAC,QAAQ,CAAC,UAAU;IAC3B,OAAO,CAAC,QAAQ,CAAC,YAAY;gBAHZ,UAAU,EAAE,UAAU,EACtB,YAAY,EAAE,YAAY,EAC1B,UAAU,EAAE,UAAU,EACtB,YAAY,EAAE,YAAY;IAYvC,YAAY,CAAC,cAAc,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,CAAC;IAkCnE,cAAc,CAClB,eAAe,EAAE,MAAM,EACvB,cAAc,CAAC,EAAE,MAAM,GACtB,OAAO,CAAC,mBAAmB,CAAC;IA4BzB,mBAAmB,CACvB,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,UAAU,CAAC;IAwBhB,WAAW,CACf,IAAI,EAAE,eAAe,EACrB,OAAO,CAAC,EAAE,iBAAiB,GAC1B,OAAO,CAAC,aAAa,CAAC;IAuDnB,OAAO,CACX,eAAe,EAAE,MAAM,EACvB,OAAO,CAAC,EAAE,iBAAiB,GAC1B,OAAO,CAAC,aAAa,CAAC;IAgCnB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAOjD,SAAS,CAAC,eAAe,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAQjD,iBAAiB,CAAC,GAAG,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAKjE,MAAM,CAAC,eAAe,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAYpD,OAAO,CAAC,SAAS;IAIjB,OAAO,KAAK,gBAAgB,GAE3B;IAED,OAAO,KAAK,WAAW,GAEtB;CACF"}
@@ -19,20 +19,22 @@ const system_auth_session_entity_1 = require("../entities/system.auth.session.en
19
19
  const user_entity_1 = require("../entities/user.entity");
20
20
  const user_role_entity_1 = require("../entities/user.role.entity");
21
21
  const cache_service_1 = require("../../common/services/cache.service");
22
+ const scope_service_1 = require("./scope.service");
22
23
  const access_exception_1 = require("../../global/exceptions/access.exception");
23
24
  const auth_1 = require("../helpers/auth");
24
25
  const auth_utilities_1 = require("../utilities/auth.utilities");
25
26
  let AuthService = class AuthService {
26
- constructor(jwtService, cacheService, dataSource) {
27
+ constructor(jwtService, cacheService, dataSource, scopeService) {
27
28
  this.jwtService = jwtService;
28
29
  this.cacheService = cacheService;
29
30
  this.dataSource = dataSource;
31
+ this.scopeService = scopeService;
30
32
  }
31
33
  async validateRole(roleIdentifier) {
32
34
  const user = auth_1.Auth.user();
33
35
  if (!user)
34
36
  throw new access_exception_1.AccessException('Authentication required: no active session.');
35
- const userRoles = await user_role_entity_1.UserRoleEntity.find({
37
+ const userRoles = await this.dataSource.getRepository(user_role_entity_1.UserRoleEntity).find({
36
38
  where: { user_id: user.id },
37
39
  relations: { role: true },
38
40
  });
@@ -45,6 +47,17 @@ let AuthService = class AuthService {
45
47
  }
46
48
  return { user, roles };
47
49
  }
50
+ async validateAccess(scopeIdentifier, roleIdentifier) {
51
+ const user = auth_1.Auth.user();
52
+ if (!user)
53
+ throw new access_exception_1.AccessException('Authentication required: no active session.');
54
+ if (!user.tenant_id)
55
+ throw new access_exception_1.AccessException('This user does not belong to an organization.');
56
+ const scopes = await this.scopeService.tenantScopes(user.tenant_id);
57
+ if (!scopes.includes(scopeIdentifier))
58
+ throw new access_exception_1.AccessException('This feature is not enabled for your organization');
59
+ return this.validateRole(roleIdentifier);
60
+ }
48
61
  async validateCredentials(email, password) {
49
62
  const user = await this.dataSource
50
63
  .getRepository(user_entity_1.UserEntity)
@@ -127,21 +140,11 @@ let AuthService = class AuthService {
127
140
  return this.issueTokens({ id: payload.sub, email: payload.email }, context);
128
141
  }
129
142
  async revokeAllForUser(userUuid) {
130
- await this.refreshTokenRepo
131
- .createQueryBuilder()
132
- .update()
133
- .set({ revoked_at: new Date() })
134
- .where('user_id = :userId AND revoked_at IS NULL', { userId: userUuid })
135
- .execute();
143
+ await this.refreshTokenRepo.update({ user_id: userUuid, revoked_at: (0, typeorm_1.IsNull)() }, { revoked_at: new Date() });
136
144
  }
137
145
  async revokeOne(rawRefreshToken) {
138
146
  const tokenHash = this.hashToken(rawRefreshToken);
139
- await this.refreshTokenRepo
140
- .createQueryBuilder()
141
- .update()
142
- .set({ revoked_at: new Date() })
143
- .where('token_hash = :hash AND revoked_at IS NULL', { hash: tokenHash })
144
- .execute();
147
+ await this.refreshTokenRepo.update({ token_hash: tokenHash, revoked_at: (0, typeorm_1.IsNull)() }, { revoked_at: new Date() });
145
148
  }
146
149
  async revokeAccessToken(jti, ttlSeconds) {
147
150
  await this.cacheService.setRaw(`blocklist:${jti}`, '1', ttlSeconds);
@@ -168,6 +171,7 @@ exports.AuthService = AuthService = __decorate([
168
171
  (0, common_1.Injectable)(),
169
172
  __metadata("design:paramtypes", [jwt_1.JwtService,
170
173
  cache_service_1.CacheService,
171
- typeorm_1.DataSource])
174
+ typeorm_1.DataSource,
175
+ scope_service_1.ScopeService])
172
176
  ], AuthService);
173
177
  //# sourceMappingURL=auth.service.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"auth.service.js","sourceRoot":"","sources":["../../../src/auth/services/auth.service.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,2CAAmE;AACnE,qCAAyD;AACzD,qCAAyD;AACzD,mCAAgD;AAChD,yFAAmF;AACnF,uFAAiF;AACjF,yDAAqD;AACrD,mEAA8D;AAC9D,uEAAmE;AACnE,+EAA2E;AAO3E,0CAAuC;AACvC,gEAA0D;AAGnD,IAAM,WAAW,GAAjB,MAAM,WAAW;IACtB,YACmB,UAAsB,EACtB,YAA0B,EAC1B,UAAsB;QAFtB,eAAU,GAAV,UAAU,CAAY;QACtB,iBAAY,GAAZ,YAAY,CAAc;QAC1B,eAAU,GAAV,UAAU,CAAY;IACtC,CAAC;IAWJ,KAAK,CAAC,YAAY,CAAC,cAAuB;QACxC,MAAM,IAAI,GAAG,WAAI,CAAC,IAAI,EAA4B,CAAC;QACnD,IAAI,CAAC,IAAI;YACP,MAAM,IAAI,kCAAe,CAAC,6CAA6C,CAAC,CAAC;QAE3E,MAAM,SAAS,GAAG,MAAM,iCAAc,CAAC,IAAI,CAAC;YAC1C,KAAK,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,EAAE,EAAE;YAC3B,SAAS,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE;SAC1B,CAAC,CAAC;QACH,MAAM,KAAK,GAAG,SAAS;aACpB,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC;aAChC,MAAM,CAAC,CAAC,IAAI,EAAoC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QAE9D,IACE,cAAc;YACd,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,KAAK,cAAc,CAAC,EACzD,CAAC;YACD,MAAM,IAAI,kCAAe,CACvB,6BAA6B,cAAc,SAAS,CACrD,CAAC;QACJ,CAAC;QAED,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;IACzB,CAAC;IAQD,KAAK,CAAC,mBAAmB,CACvB,KAAa,EACb,QAAgB;QAEhB,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,UAAU;aAC/B,aAAa,CAAC,wBAAU,CAAC;aACzB,kBAAkB,CAAC,MAAM,CAAC;aAC1B,SAAS,CAAC,eAAe,CAAC;aAC1B,KAAK,CAAC,qBAAqB,EAAE,EAAE,KAAK,EAAE,CAAC;aACvC,MAAM,EAAE,CAAC;QAEZ,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;YAC5B,MAAM,4BAAW,CAAC,mBAAmB,CAAC,QAAQ,CAAC,CAAC;YAChD,MAAM,IAAI,8BAAqB,CAAC,2BAA2B,CAAC,CAAC;QAC/D,CAAC;QACD,MAAM,OAAO,GAAG,MAAM,4BAAW,CAAC,eAAe,CAAC,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC3E,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,MAAM,IAAI,8BAAqB,CAAC,2BAA2B,CAAC,CAAC;QAC/D,CAAC;QACD,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YACjB,MAAM,IAAI,8BAAqB,CAAC,0BAA0B,CAAC,CAAC;QAC9D,CAAC;QAED,OAAQ,IAA8B,CAAC,QAAQ,CAAC;QAChD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,KAAK,CAAC,WAAW,CACf,IAAqB,EACrB,OAA2B;QAE3B,MAAM,GAAG,GAAG,IAAA,mBAAU,GAAE,CAAC;QACzB,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC;QACrD,MAAM,aAAa,GAAG,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC;QAEvD,MAAM,iBAAiB,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,IAAI,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;QACrE,MAAM,gBAAgB,GAAG,IAAI,IAAI,CAC/B,IAAI,CAAC,GAAG,EAAE,GAAG,4BAAW,CAAC,aAAa,CAAC,YAAY,CAAC,CACrD,CAAC;QACF,MAAM,IAAI,CAAC,WAAW,CAAC,IAAI,CACzB,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC;YACtB,OAAO,EAAE,IAAI,CAAC,EAAE;YAChB,QAAQ,EAAE,KAAK;YACf,kBAAkB,EAAE,iBAAiB;YACrC,UAAU,EAAE,gBAAgB;YAC5B,cAAc,EAAE,IAAI;SACrB,CAAC,CACH,CAAC;QAEF,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,SAAS,CACjD,EAAE,GAAG,EAAE,IAAI,CAAC,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,iBAAiB,EAAE,EAChE;YACE,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,mBAAmB;YACvC,SAAS,EAAE,YAA2C;SACvD,CACF,CAAC;QAEF,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,SAAS,CAClD,EAAE,GAAG,EAAE,IAAI,CAAC,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,EACnC;YACE,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,oBAAoB;YACxC,SAAS,EAAE,aAA4C;SACxD,CACF,CAAC;QAEF,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;QAC/C,MAAM,SAAS,GAAG,IAAI,IAAI,CACxB,IAAI,CAAC,GAAG,EAAE,GAAG,4BAAW,CAAC,aAAa,CAAC,aAAa,CAAC,CACtD,CAAC;QAEF,MAAM,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAC9B,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC;YAC3B,OAAO,EAAE,IAAI,CAAC,EAAE;YAChB,QAAQ,EAAE,KAAK;YACf,UAAU,EAAE,SAAS;YACrB,UAAU,EAAE,SAAS;YACrB,UAAU,EAAE,IAAI;YAChB,UAAU,EAAE,OAAO,EAAE,UAAU,IAAI,IAAI;YACvC,UAAU,EAAE,OAAO,EAAE,UAAU,IAAI,IAAI;SACxC,CAAC,CACH,CAAC;QAEF,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,aAAa,EAAE,YAAY,EAAE,CAAC;IACpE,CAAC;IAED,KAAK,CAAC,OAAO,CACX,eAAuB,EACvB,OAA2B;QAE3B,IAAI,OAAuC,CAAC;QAC5C,IAAI,CAAC;YACH,OAAO,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,eAAe,EAAE;gBAC3D,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,oBAAoB;aACzC,CAAC,CAAC;QACL,CAAC;QAAC,MAAM,CAAC;YACP,MAAM,IAAI,8BAAqB,CAAC,uBAAuB,CAAC,CAAC;QAC3D,CAAC;QAED,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC;QAClD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC;YACjD,KAAK,EAAE;gBACL,OAAO,EAAE,OAAO,CAAC,GAAG;gBACpB,UAAU,EAAE,SAAS;gBACrB,UAAU,EAAE,IAAA,gBAAM,GAAE;aACrB;SACF,CAAC,CAAC;QAEH,IAAI,CAAC,MAAM;YACT,MAAM,IAAI,8BAAqB,CAC7B,4CAA4C,CAC7C,CAAC;QACJ,IAAI,MAAM,CAAC,UAAU,GAAG,IAAI,IAAI,EAAE;YAChC,MAAM,IAAI,8BAAqB,CAAC,2BAA2B,CAAC,CAAC;QAE/D,MAAM,CAAC,UAAU,GAAG,IAAI,IAAI,EAAE,CAAC;QAC/B,MAAM,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAEzC,OAAO,IAAI,CAAC,WAAW,CAAC,EAAE,EAAE,EAAE,OAAO,CAAC,GAAG,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,EAAE,OAAO,CAAC,CAAC;IAC9E,CAAC;IAED,KAAK,CAAC,gBAAgB,CAAC,QAAgB;QACrC,MAAM,IAAI,CAAC,gBAAgB;aACxB,kBAAkB,EAAE;aACpB,MAAM,EAAE;aACR,GAAG,CAAC,EAAE,UAAU,EAAE,IAAI,IAAI,EAAE,EAAE,CAAC;aAC/B,KAAK,CAAC,0CAA0C,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;aACvE,OAAO,EAAE,CAAC;IACf,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,eAAuB;QACrC,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC;QAClD,MAAM,IAAI,CAAC,gBAAgB;aACxB,kBAAkB,EAAE;aACpB,MAAM,EAAE;aACR,GAAG,CAAC,EAAE,UAAU,EAAE,IAAI,IAAI,EAAE,EAAE,CAAC;aAC/B,KAAK,CAAC,2CAA2C,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;aACvE,OAAO,EAAE,CAAC;IACf,CAAC;IAED,KAAK,CAAC,iBAAiB,CAAC,GAAW,EAAE,UAAkB;QACrD,MAAM,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,aAAa,GAAG,EAAE,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC;IACtE,CAAC;IAGD,KAAK,CAAC,MAAM,CAAC,eAAuB;QAClC,MAAM,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC;QAEtC,MAAM,iBAAiB,GAAG,WAAI,CAAC,OAAO,EAAE,CAAC;QACzC,IAAI,iBAAiB,EAAE,CAAC;YACtB,MAAM,IAAI,CAAC,WAAW,CAAC,MAAM,CAC3B,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,QAAQ,EAAE,KAAK,EAAE,EAC1D,EAAE,cAAc,EAAE,IAAI,IAAI,EAAE,EAAE,CAC/B,CAAC;QACJ,CAAC;IACH,CAAC;IAEO,SAAS,CAAC,KAAa;QAC7B,OAAO,IAAA,mBAAU,EAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAC1D,CAAC;IAED,IAAY,gBAAgB;QAC1B,OAAO,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,sDAAwB,CAAC,CAAC;IACjE,CAAC;IAED,IAAY,WAAW;QACrB,OAAO,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,oDAAuB,CAAC,CAAC;IAChE,CAAC;CACF,CAAA;AAtNY,kCAAW;sBAAX,WAAW;IADvB,IAAA,mBAAU,GAAE;qCAGoB,gBAAU;QACR,4BAAY;QACd,oBAAU;GAJ9B,WAAW,CAsNvB"}
1
+ {"version":3,"file":"auth.service.js","sourceRoot":"","sources":["../../../src/auth/services/auth.service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ import { DataSource } from 'typeorm';
2
+ import { DeleteResult } from '../../common/types/common.response.types';
3
+ export declare class RoleService {
4
+ private readonly dataSource;
5
+ constructor(dataSource: DataSource);
6
+ deleteRole(roleUuid: string, actorUuid: string): Promise<DeleteResult>;
7
+ private get roleRepository();
8
+ }
9
+ //# sourceMappingURL=role.service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"role.service.d.ts","sourceRoot":"","sources":["../../../src/auth/services/role.service.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAc,MAAM,SAAS,CAAC;AAEjD,OAAO,EAAE,YAAY,EAAE,MAAM,0CAA0C,CAAC;AAQxE,qBACa,WAAW;IACV,OAAO,CAAC,QAAQ,CAAC,UAAU;gBAAV,UAAU,EAAE,UAAU;IAS7C,UAAU,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;IAY5E,OAAO,KAAK,cAAc,GAEzB;CACF"}
@@ -0,0 +1,40 @@
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.RoleService = void 0;
13
+ const common_1 = require("@nestjs/common");
14
+ const typeorm_1 = require("typeorm");
15
+ const not_found_exception_1 = require("../../global/exceptions/not.found.exception");
16
+ const system_role_entity_1 = require("../entities/system.role.entity");
17
+ const user_role_entity_1 = require("../entities/user.role.entity");
18
+ let RoleService = class RoleService {
19
+ constructor(dataSource) {
20
+ this.dataSource = dataSource;
21
+ }
22
+ async deleteRole(roleUuid, actorUuid) {
23
+ if (!(await this.roleRepository.existsBy({ id: roleUuid })))
24
+ throw new not_found_exception_1.NotFoundException('No role exists for this id');
25
+ await this.dataSource.transaction(async (trx) => {
26
+ await trx.softDelete(user_role_entity_1.UserRoleEntity, { role_id: roleUuid });
27
+ await trx.softDelete(system_role_entity_1.SystemRoleEntity, { id: roleUuid });
28
+ });
29
+ return { id: roleUuid, deleted: true, deleted_by: actorUuid };
30
+ }
31
+ get roleRepository() {
32
+ return this.dataSource.getRepository(system_role_entity_1.SystemRoleEntity);
33
+ }
34
+ };
35
+ exports.RoleService = RoleService;
36
+ exports.RoleService = RoleService = __decorate([
37
+ (0, common_1.Injectable)(),
38
+ __metadata("design:paramtypes", [typeorm_1.DataSource])
39
+ ], RoleService);
40
+ //# sourceMappingURL=role.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"role.service.js","sourceRoot":"","sources":["../../../src/auth/services/role.service.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,2CAA4C;AAC5C,qCAAiD;AACjD,qFAAgF;AAEhF,uEAAkE;AAClE,mEAA8D;AAOvD,IAAM,WAAW,GAAjB,MAAM,WAAW;IACtB,YAA6B,UAAsB;QAAtB,eAAU,GAAV,UAAU,CAAY;IAAG,CAAC;IASvD,KAAK,CAAC,UAAU,CAAC,QAAgB,EAAE,SAAiB;QAClD,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC;YACzD,MAAM,IAAI,uCAAiB,CAAC,4BAA4B,CAAC,CAAC;QAE5D,MAAM,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;YAC9C,MAAM,GAAG,CAAC,UAAU,CAAC,iCAAc,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,CAAC;YAC5D,MAAM,GAAG,CAAC,UAAU,CAAC,qCAAgB,EAAE,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC;QAC3D,CAAC,CAAC,CAAC;QAEH,OAAO,EAAE,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,SAAS,EAAE,CAAC;IAChE,CAAC;IAED,IAAY,cAAc;QACxB,OAAO,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,qCAAgB,CAAC,CAAC;IACzD,CAAC;CACF,CAAA;AAzBY,kCAAW;sBAAX,WAAW;IADvB,IAAA,mBAAU,GAAE;qCAE8B,oBAAU;GADxC,WAAW,CAyBvB"}
@@ -0,0 +1,10 @@
1
+ import { DataSource } from 'typeorm';
2
+ import { DeleteResult } from '../../common/types/common.response.types';
3
+ export declare class ScopeService {
4
+ private readonly dataSource;
5
+ constructor(dataSource: DataSource);
6
+ tenantScopes(tenantUuid: string): Promise<string[]>;
7
+ deleteScope(scopeUuid: string, actorUuid: string): Promise<DeleteResult>;
8
+ private get scopeRepository();
9
+ }
10
+ //# sourceMappingURL=scope.service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scope.service.d.ts","sourceRoot":"","sources":["../../../src/auth/services/scope.service.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAc,MAAM,SAAS,CAAC;AAEjD,OAAO,EAAE,YAAY,EAAE,MAAM,0CAA0C,CAAC;AASxE,qBACa,YAAY;IACX,OAAO,CAAC,QAAQ,CAAC,UAAU;gBAAV,UAAU,EAAE,UAAU;IAG7C,YAAY,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAkBnD,WAAW,CACf,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,YAAY,CAAC;IAaxB,OAAO,KAAK,eAAe,GAE1B;CACF"}
@@ -0,0 +1,50 @@
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.ScopeService = void 0;
13
+ const common_1 = require("@nestjs/common");
14
+ const typeorm_1 = require("typeorm");
15
+ const not_found_exception_1 = require("../../global/exceptions/not.found.exception");
16
+ const api_scope_entity_1 = require("../entities/api.scope.entity");
17
+ const scope_entity_1 = require("../entities/scope.entity");
18
+ const tenant_scope_entity_1 = require("../entities/tenant.scope.entity");
19
+ let ScopeService = class ScopeService {
20
+ constructor(dataSource) {
21
+ this.dataSource = dataSource;
22
+ }
23
+ async tenantScopes(tenantUuid) {
24
+ const tenantScopes = await this.dataSource
25
+ .getRepository(tenant_scope_entity_1.TenantScopeEntity)
26
+ .find({ where: { tenant_id: tenantUuid }, relations: { scope: true } });
27
+ return tenantScopes
28
+ .map((tenantScope) => tenantScope.scope?.identifier)
29
+ .filter((identifier) => !!identifier);
30
+ }
31
+ async deleteScope(scopeUuid, actorUuid) {
32
+ if (!(await this.scopeRepository.existsBy({ id: scopeUuid })))
33
+ throw new not_found_exception_1.NotFoundException('No scope exists for this id');
34
+ await this.dataSource.transaction(async (trx) => {
35
+ await trx.softDelete(tenant_scope_entity_1.TenantScopeEntity, { scope_id: scopeUuid });
36
+ await trx.softDelete(api_scope_entity_1.ApiScopeEntity, { scope_id: scopeUuid });
37
+ await trx.softDelete(scope_entity_1.ScopeEntity, { id: scopeUuid });
38
+ });
39
+ return { id: scopeUuid, deleted: true, deleted_by: actorUuid };
40
+ }
41
+ get scopeRepository() {
42
+ return this.dataSource.getRepository(scope_entity_1.ScopeEntity);
43
+ }
44
+ };
45
+ exports.ScopeService = ScopeService;
46
+ exports.ScopeService = ScopeService = __decorate([
47
+ (0, common_1.Injectable)(),
48
+ __metadata("design:paramtypes", [typeorm_1.DataSource])
49
+ ], ScopeService);
50
+ //# sourceMappingURL=scope.service.js.map