@neohm/nestend 2.0.4 → 3.0.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 (214) hide show
  1. package/README.md +77 -28
  2. package/dist/admin/controllers/admin.user.controller.d.ts +1 -1
  3. package/dist/admin/controllers/admin.user.controller.js +4 -4
  4. package/dist/admin/controllers/admin.user.controller.js.map +1 -1
  5. package/dist/admin/dtos/add.admin.user.dto.d.ts +6 -2
  6. package/dist/admin/dtos/add.admin.user.dto.d.ts.map +1 -1
  7. package/dist/admin/dtos/add.admin.user.dto.js +33 -3
  8. package/dist/admin/dtos/add.admin.user.dto.js.map +1 -1
  9. package/dist/admin/dtos/base.user.dto.d.ts +0 -1
  10. package/dist/admin/dtos/base.user.dto.d.ts.map +1 -1
  11. package/dist/admin/dtos/base.user.dto.js +0 -11
  12. package/dist/admin/dtos/base.user.dto.js.map +1 -1
  13. package/dist/admin/es6.classes.d.ts +2 -1
  14. package/dist/admin/es6.classes.d.ts.map +1 -1
  15. package/dist/admin/es6.classes.js +24 -3
  16. package/dist/admin/es6.classes.js.map +1 -1
  17. package/dist/admin/libraries/admin.user.data.processor.d.ts +11 -4
  18. package/dist/admin/libraries/admin.user.data.processor.d.ts.map +1 -1
  19. package/dist/admin/libraries/admin.user.data.processor.js +55 -17
  20. package/dist/admin/libraries/admin.user.data.processor.js.map +1 -1
  21. package/dist/admin/libraries/bulk.user.data.processor.d.ts +1 -1
  22. package/dist/admin/libraries/bulk.user.data.processor.d.ts.map +1 -1
  23. package/dist/admin/libraries/bulk.user.data.processor.js +2 -13
  24. package/dist/admin/libraries/bulk.user.data.processor.js.map +1 -1
  25. package/dist/admin/libraries/client.user.data.processor.d.ts +1 -1
  26. package/dist/admin/libraries/client.user.data.processor.d.ts.map +1 -1
  27. package/dist/admin/libraries/client.user.data.processor.js +2 -6
  28. package/dist/admin/libraries/client.user.data.processor.js.map +1 -1
  29. package/dist/admin/libraries/scheduled.task.data.processor.d.ts +3 -3
  30. package/dist/admin/libraries/scheduled.task.data.processor.d.ts.map +1 -1
  31. package/dist/admin/libraries/scheduled.task.data.processor.js.map +1 -1
  32. package/dist/admin/libraries/tenant.data.processor.d.ts +2 -2
  33. package/dist/admin/libraries/tenant.data.processor.d.ts.map +1 -1
  34. package/dist/admin/libraries/tenant.data.processor.js.map +1 -1
  35. package/dist/admin/libraries/user.data.processor.d.ts +0 -11
  36. package/dist/admin/libraries/user.data.processor.d.ts.map +1 -1
  37. package/dist/admin/libraries/user.data.processor.js +0 -44
  38. package/dist/admin/libraries/user.data.processor.js.map +1 -1
  39. package/dist/admin/services/admin.access.service.d.ts +8 -8
  40. package/dist/admin/services/admin.access.service.d.ts.map +1 -1
  41. package/dist/admin/services/admin.access.service.js +8 -8
  42. package/dist/admin/services/admin.access.service.js.map +1 -1
  43. package/dist/auth/auth.module.d.ts.map +1 -1
  44. package/dist/auth/auth.module.js +17 -5
  45. package/dist/auth/auth.module.js.map +1 -1
  46. package/dist/auth/controllers/admin.auth.controller.d.ts +20 -0
  47. package/dist/auth/controllers/admin.auth.controller.d.ts.map +1 -0
  48. package/dist/auth/controllers/admin.auth.controller.js +95 -0
  49. package/dist/auth/controllers/admin.auth.controller.js.map +1 -0
  50. package/dist/auth/controllers/auth.controller.d.ts.map +1 -1
  51. package/dist/auth/controllers/auth.controller.js +7 -4
  52. package/dist/auth/controllers/auth.controller.js.map +1 -1
  53. package/dist/auth/dtos/admin.login.dto.d.ts +5 -0
  54. package/dist/auth/dtos/admin.login.dto.d.ts.map +1 -0
  55. package/dist/auth/dtos/admin.login.dto.js +30 -0
  56. package/dist/auth/dtos/admin.login.dto.js.map +1 -0
  57. package/dist/auth/entities/admin.user.entity.d.ts +11 -0
  58. package/dist/auth/entities/admin.user.entity.d.ts.map +1 -0
  59. package/dist/auth/entities/admin.user.entity.js +47 -0
  60. package/dist/auth/entities/admin.user.entity.js.map +1 -0
  61. package/dist/auth/entities/api.key.entity.d.ts +2 -2
  62. package/dist/auth/entities/api.key.entity.d.ts.map +1 -1
  63. package/dist/auth/entities/api.key.entity.js +2 -2
  64. package/dist/auth/entities/api.key.entity.js.map +1 -1
  65. package/dist/auth/entities/api.scope.entity.d.ts +13 -0
  66. package/dist/auth/entities/api.scope.entity.d.ts.map +1 -0
  67. package/dist/auth/entities/api.scope.entity.js +51 -0
  68. package/dist/auth/entities/api.scope.entity.js.map +1 -0
  69. package/dist/auth/entities/scope.entity.d.ts +7 -0
  70. package/dist/auth/entities/scope.entity.d.ts.map +1 -0
  71. package/dist/auth/entities/scope.entity.js +34 -0
  72. package/dist/auth/entities/scope.entity.js.map +1 -0
  73. package/dist/auth/entities/system.admin.role.entity.d.ts +11 -0
  74. package/dist/auth/entities/system.admin.role.entity.d.ts.map +1 -0
  75. package/dist/auth/entities/system.admin.role.entity.js +46 -0
  76. package/dist/auth/entities/system.admin.role.entity.js.map +1 -0
  77. package/dist/auth/entities/system.admin.user.role.entity.d.ts +10 -0
  78. package/dist/auth/entities/system.admin.user.role.entity.d.ts.map +1 -0
  79. package/dist/auth/entities/system.admin.user.role.entity.js +41 -0
  80. package/dist/auth/entities/system.admin.user.role.entity.js.map +1 -0
  81. package/dist/auth/entities/system.auth.session.entity.d.ts +9 -0
  82. package/dist/auth/entities/system.auth.session.entity.d.ts.map +1 -0
  83. package/dist/auth/entities/system.auth.session.entity.js +42 -0
  84. package/dist/auth/entities/system.auth.session.entity.js.map +1 -0
  85. package/dist/auth/entities/system.refresh.token.entity.d.ts +1 -0
  86. package/dist/auth/entities/system.refresh.token.entity.d.ts.map +1 -1
  87. package/dist/auth/entities/system.refresh.token.entity.js +4 -0
  88. package/dist/auth/entities/system.refresh.token.entity.js.map +1 -1
  89. package/dist/auth/entities/system.role.entity.d.ts +3 -4
  90. package/dist/auth/entities/system.role.entity.d.ts.map +1 -1
  91. package/dist/auth/entities/system.role.entity.js +5 -8
  92. package/dist/auth/entities/system.role.entity.js.map +1 -1
  93. package/dist/auth/es6.classes.d.ts +6 -4
  94. package/dist/auth/es6.classes.d.ts.map +1 -1
  95. package/dist/auth/es6.classes.js +32 -6
  96. package/dist/auth/es6.classes.js.map +1 -1
  97. package/dist/auth/helpers/admin.auth.d.ts +6 -0
  98. package/dist/auth/helpers/admin.auth.d.ts.map +1 -0
  99. package/dist/auth/helpers/admin.auth.js +29 -0
  100. package/dist/auth/helpers/admin.auth.js.map +1 -0
  101. package/dist/auth/helpers/api.key.context.d.ts +6 -0
  102. package/dist/auth/helpers/api.key.context.d.ts.map +1 -0
  103. package/dist/auth/helpers/api.key.context.js +15 -0
  104. package/dist/auth/helpers/api.key.context.js.map +1 -0
  105. package/dist/auth/helpers/auth.d.ts +6 -0
  106. package/dist/auth/helpers/auth.d.ts.map +1 -0
  107. package/dist/auth/helpers/auth.js +27 -0
  108. package/dist/auth/helpers/auth.js.map +1 -0
  109. package/dist/auth/middlewares/admin.jwt.middleware.d.ts +10 -0
  110. package/dist/auth/middlewares/admin.jwt.middleware.d.ts.map +1 -0
  111. package/dist/auth/middlewares/admin.jwt.middleware.js +59 -0
  112. package/dist/auth/middlewares/admin.jwt.middleware.js.map +1 -0
  113. package/dist/auth/middlewares/api.key.middleware.d.ts +10 -0
  114. package/dist/auth/middlewares/api.key.middleware.d.ts.map +1 -0
  115. package/dist/auth/middlewares/api.key.middleware.js +47 -0
  116. package/dist/auth/middlewares/api.key.middleware.js.map +1 -0
  117. package/dist/auth/middlewares/jwt.middleware.d.ts +10 -0
  118. package/dist/auth/middlewares/jwt.middleware.d.ts.map +1 -0
  119. package/dist/auth/middlewares/jwt.middleware.js +59 -0
  120. package/dist/auth/middlewares/jwt.middleware.js.map +1 -0
  121. package/dist/auth/services/admin.auth.service.d.ts +19 -0
  122. package/dist/auth/services/admin.auth.service.d.ts.map +1 -0
  123. package/dist/auth/services/admin.auth.service.js +160 -0
  124. package/dist/auth/services/admin.auth.service.js.map +1 -0
  125. package/dist/auth/services/auth.service.d.ts +4 -5
  126. package/dist/auth/services/auth.service.d.ts.map +1 -1
  127. package/dist/auth/services/auth.service.js +41 -35
  128. package/dist/auth/services/auth.service.js.map +1 -1
  129. package/dist/auth/types/auth.types.d.ts +7 -4
  130. package/dist/auth/types/auth.types.d.ts.map +1 -1
  131. package/dist/common/consumers/job.consumer.d.ts +1 -0
  132. package/dist/common/consumers/job.consumer.d.ts.map +1 -1
  133. package/dist/common/consumers/job.consumer.js +7 -2
  134. package/dist/common/consumers/job.consumer.js.map +1 -1
  135. package/dist/common/controllers/common.controller.js +1 -1
  136. package/dist/common/controllers/common.controller.js.map +1 -1
  137. package/dist/common/entities/common.admin.entity.d.ts +7 -0
  138. package/dist/common/entities/common.admin.entity.d.ts.map +1 -0
  139. package/dist/common/entities/common.admin.entity.js +28 -0
  140. package/dist/common/entities/common.admin.entity.js.map +1 -0
  141. package/dist/common/entities/root.entity.d.ts.map +1 -1
  142. package/dist/common/entities/root.entity.js +11 -2
  143. package/dist/common/entities/root.entity.js.map +1 -1
  144. package/dist/constants/entity.constants.d.ts +6 -0
  145. package/dist/constants/entity.constants.d.ts.map +1 -1
  146. package/dist/constants/entity.constants.js +6 -0
  147. package/dist/constants/entity.constants.js.map +1 -1
  148. package/dist/constants/entity.maps.d.ts +12 -0
  149. package/dist/constants/entity.maps.d.ts.map +1 -1
  150. package/dist/constants/entity.maps.js +12 -0
  151. package/dist/constants/entity.maps.js.map +1 -1
  152. package/dist/global/filters/global.exception.filter.d.ts.map +1 -1
  153. package/dist/global/filters/global.exception.filter.js +6 -2
  154. package/dist/global/filters/global.exception.filter.js.map +1 -1
  155. package/dist/global/utilities/migration.utility.d.ts +4 -0
  156. package/dist/global/utilities/migration.utility.d.ts.map +1 -1
  157. package/dist/global/utilities/migration.utility.js +70 -8
  158. package/dist/global/utilities/migration.utility.js.map +1 -1
  159. package/dist/index.d.ts +26 -3
  160. package/dist/index.d.ts.map +1 -1
  161. package/dist/index.js +55 -8
  162. package/dist/index.js.map +1 -1
  163. package/dist/migrations/1749600000003.CreateSysRolesTable.d.ts.map +1 -1
  164. package/dist/migrations/1749600000003.CreateSysRolesTable.js +3 -4
  165. package/dist/migrations/1749600000003.CreateSysRolesTable.js.map +1 -1
  166. package/dist/migrations/1749600000021.CreateSysAdminUsersTable.d.ts +6 -0
  167. package/dist/migrations/1749600000021.CreateSysAdminUsersTable.d.ts.map +1 -0
  168. package/dist/migrations/1749600000021.CreateSysAdminUsersTable.js +23 -0
  169. package/dist/migrations/1749600000021.CreateSysAdminUsersTable.js.map +1 -0
  170. package/dist/migrations/1749600000022.CreateSysAdminRolesTable.d.ts +6 -0
  171. package/dist/migrations/1749600000022.CreateSysAdminRolesTable.d.ts.map +1 -0
  172. package/dist/migrations/1749600000022.CreateSysAdminRolesTable.js +21 -0
  173. package/dist/migrations/1749600000022.CreateSysAdminRolesTable.js.map +1 -0
  174. package/dist/migrations/1749600000023.CreateSysAdminUserRolesJoinTable.d.ts +6 -0
  175. package/dist/migrations/1749600000023.CreateSysAdminUserRolesJoinTable.d.ts.map +1 -0
  176. package/dist/migrations/1749600000023.CreateSysAdminUserRolesJoinTable.js +34 -0
  177. package/dist/migrations/1749600000023.CreateSysAdminUserRolesJoinTable.js.map +1 -0
  178. package/dist/migrations/1749600000024.CreateSysAuthSessionsTable.d.ts +6 -0
  179. package/dist/migrations/1749600000024.CreateSysAuthSessionsTable.d.ts.map +1 -0
  180. package/dist/migrations/1749600000024.CreateSysAuthSessionsTable.js +22 -0
  181. package/dist/migrations/1749600000024.CreateSysAuthSessionsTable.js.map +1 -0
  182. package/dist/migrations/1749600000025.CreateSysScopesTable.d.ts +6 -0
  183. package/dist/migrations/1749600000025.CreateSysScopesTable.d.ts.map +1 -0
  184. package/dist/migrations/1749600000025.CreateSysScopesTable.js +25 -0
  185. package/dist/migrations/1749600000025.CreateSysScopesTable.js.map +1 -0
  186. package/dist/migrations/1749600000026.CreateSysApiScopesTable.d.ts +6 -0
  187. package/dist/migrations/1749600000026.CreateSysApiScopesTable.d.ts.map +1 -0
  188. package/dist/migrations/1749600000026.CreateSysApiScopesTable.js +39 -0
  189. package/dist/migrations/1749600000026.CreateSysApiScopesTable.js.map +1 -0
  190. package/dist/migrations/1749600000027.RetargetSysApiKeysCreatedByToAdminUsers.d.ts +8 -0
  191. package/dist/migrations/1749600000027.RetargetSysApiKeysCreatedByToAdminUsers.d.ts.map +1 -0
  192. package/dist/migrations/1749600000027.RetargetSysApiKeysCreatedByToAdminUsers.js +31 -0
  193. package/dist/migrations/1749600000027.RetargetSysApiKeysCreatedByToAdminUsers.js.map +1 -0
  194. package/dist/migrations/1749600000028.RetargetSysTenantsCreatedByToAdminUsers.d.ts +8 -0
  195. package/dist/migrations/1749600000028.RetargetSysTenantsCreatedByToAdminUsers.d.ts.map +1 -0
  196. package/dist/migrations/1749600000028.RetargetSysTenantsCreatedByToAdminUsers.js +31 -0
  197. package/dist/migrations/1749600000028.RetargetSysTenantsCreatedByToAdminUsers.js.map +1 -0
  198. package/dist/migrations/1749600000029.AddIsAdminToSysRefreshTokensTable.d.ts +7 -0
  199. package/dist/migrations/1749600000029.AddIsAdminToSysRefreshTokensTable.d.ts.map +1 -0
  200. package/dist/migrations/1749600000029.AddIsAdminToSysRefreshTokensTable.js +31 -0
  201. package/dist/migrations/1749600000029.AddIsAdminToSysRefreshTokensTable.js.map +1 -0
  202. package/dist/tenant/entities/tenant.entity.d.ts +2 -3
  203. package/dist/tenant/entities/tenant.entity.d.ts.map +1 -1
  204. package/dist/tenant/entities/tenant.entity.js +2 -6
  205. package/dist/tenant/entities/tenant.entity.js.map +1 -1
  206. package/package.json +1 -1
  207. package/dist/auth/middlewares/auth.context.middleware.d.ts +0 -10
  208. package/dist/auth/middlewares/auth.context.middleware.d.ts.map +0 -1
  209. package/dist/auth/middlewares/auth.context.middleware.js +0 -37
  210. package/dist/auth/middlewares/auth.context.middleware.js.map +0 -1
  211. package/dist/auth/services/auth.context.service.d.ts +0 -9
  212. package/dist/auth/services/auth.context.service.d.ts.map +0 -1
  213. package/dist/auth/services/auth.context.service.js +0 -33
  214. package/dist/auth/services/auth.context.service.js.map +0 -1
@@ -2,10 +2,12 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.es6Classes = void 0;
4
4
  const auth_controller_1 = require("./controllers/auth.controller");
5
+ const admin_auth_controller_1 = require("./controllers/admin.auth.controller");
5
6
  const api_key_service_1 = require("./services/api.key.service");
6
- const auth_context_service_1 = require("./services/auth.context.service");
7
7
  const auth_service_1 = require("./services/auth.service");
8
+ const admin_auth_service_1 = require("./services/admin.auth.service");
8
9
  const google_auth_service_1 = require("./services/google.auth.service");
10
+ const admin_login_dto_1 = require("./dtos/admin.login.dto");
9
11
  const change_password_dto_1 = require("./dtos/change.password.dto");
10
12
  const google_login_dto_1 = require("./dtos/google.login.dto");
11
13
  const login_dto_1 = require("./dtos/login.dto");
@@ -22,11 +24,35 @@ const user_details_subscriber_1 = require("./subscribers/user.details.subscriber
22
24
  const user_role_subscriber_1 = require("./subscribers/user.role.subscriber");
23
25
  const user_subscriber_1 = require("./subscribers/user.subscriber");
24
26
  exports.es6Classes = {
25
- controllers: [auth_controller_1.AuthController],
26
- services: [api_key_service_1.ApiKeyService, auth_context_service_1.AuthContextService, auth_service_1.AuthService, google_auth_service_1.GoogleAuthService],
27
+ controllers: [auth_controller_1.AuthController, admin_auth_controller_1.AdminAuthController],
28
+ services: [
29
+ api_key_service_1.ApiKeyService,
30
+ auth_service_1.AuthService,
31
+ admin_auth_service_1.AdminAuthService,
32
+ google_auth_service_1.GoogleAuthService,
33
+ ],
27
34
  libraries: [],
28
- dtos: [change_password_dto_1.ChangePasswordDto, google_login_dto_1.GoogleLoginDto, login_dto_1.LoginDto, refresh_token_dto_1.RefreshTokenDto, register_dto_1.RegisterDto],
29
- jobs: [system_refresh_token_job_1.SystemRefreshTokenJob, system_role_job_1.SystemRoleJob, user_details_job_1.UserDetailsJob, user_job_1.UserJob, user_role_job_1.UserRoleJob],
30
- subscribers: [system_refresh_token_subscriber_1.SystemRefreshTokenSubscriber, system_role_subscriber_1.SystemRoleSubscriber, user_details_subscriber_1.UserDetailsSubscriber, user_role_subscriber_1.UserRoleSubscriber, user_subscriber_1.UserSubscriber],
35
+ dtos: [
36
+ admin_login_dto_1.AdminLoginDto,
37
+ change_password_dto_1.ChangePasswordDto,
38
+ google_login_dto_1.GoogleLoginDto,
39
+ login_dto_1.LoginDto,
40
+ refresh_token_dto_1.RefreshTokenDto,
41
+ register_dto_1.RegisterDto,
42
+ ],
43
+ jobs: [
44
+ system_refresh_token_job_1.SystemRefreshTokenJob,
45
+ system_role_job_1.SystemRoleJob,
46
+ user_details_job_1.UserDetailsJob,
47
+ user_job_1.UserJob,
48
+ user_role_job_1.UserRoleJob,
49
+ ],
50
+ subscribers: [
51
+ system_refresh_token_subscriber_1.SystemRefreshTokenSubscriber,
52
+ system_role_subscriber_1.SystemRoleSubscriber,
53
+ user_details_subscriber_1.UserDetailsSubscriber,
54
+ user_role_subscriber_1.UserRoleSubscriber,
55
+ user_subscriber_1.UserSubscriber,
56
+ ],
31
57
  };
32
58
  //# sourceMappingURL=es6.classes.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"es6.classes.js","sourceRoot":"","sources":["../../src/auth/es6.classes.ts"],"names":[],"mappings":";;;AAAA,mEAA+D;AAC/D,gEAA2D;AAC3D,0EAAqE;AACrE,0DAAsD;AACtD,wEAAmE;AACnE,oEAA+D;AAC/D,8DAAyD;AACzD,gDAA4C;AAC5C,gEAA2D;AAC3D,sDAAkD;AAClD,8EAAwE;AACxE,4DAAuD;AACvD,8DAAyD;AACzD,8CAA0C;AAC1C,wDAAmD;AACnD,mGAA6F;AAC7F,iFAA4E;AAC5E,mFAA8E;AAC9E,6EAAwE;AACxE,mEAA+D;AAElD,QAAA,UAAU,GAAG;IACxB,WAAW,EAAE,CAAC,gCAAc,CAAC;IAC7B,QAAQ,EAAE,CAAC,+BAAa,EAAE,yCAAkB,EAAE,0BAAW,EAAE,uCAAiB,CAAU;IACtF,SAAS,EAAE,EAAE;IACb,IAAI,EAAE,CAAC,uCAAiB,EAAE,iCAAc,EAAE,oBAAQ,EAAE,mCAAe,EAAE,0BAAW,CAAC;IACjF,IAAI,EAAE,CAAC,gDAAqB,EAAE,+BAAa,EAAE,iCAAc,EAAE,kBAAO,EAAE,2BAAW,CAAC;IAClF,WAAW,EAAE,CAAC,8DAA4B,EAAE,6CAAoB,EAAE,+CAAqB,EAAE,yCAAkB,EAAE,gCAAc,CAAC;CAC7H,CAAC"}
1
+ {"version":3,"file":"es6.classes.js","sourceRoot":"","sources":["../../src/auth/es6.classes.ts"],"names":[],"mappings":";;;AAAA,mEAA+D;AAC/D,+EAA0E;AAC1E,gEAA2D;AAC3D,0DAAsD;AACtD,sEAAiE;AACjE,wEAAmE;AACnE,4DAAuD;AACvD,oEAA+D;AAC/D,8DAAyD;AACzD,gDAA4C;AAC5C,gEAA2D;AAC3D,sDAAkD;AAClD,8EAAwE;AACxE,4DAAuD;AACvD,8DAAyD;AACzD,8CAA0C;AAC1C,wDAAmD;AACnD,mGAA6F;AAC7F,iFAA4E;AAC5E,mFAA8E;AAC9E,6EAAwE;AACxE,mEAA+D;AAElD,QAAA,UAAU,GAAG;IACxB,WAAW,EAAE,CAAC,gCAAc,EAAE,2CAAmB,CAAC;IAClD,QAAQ,EAAE;QACR,+BAAa;QACb,0BAAW;QACX,qCAAgB;QAChB,uCAAiB;KACT;IACV,SAAS,EAAE,EAAE;IACb,IAAI,EAAE;QACJ,+BAAa;QACb,uCAAiB;QACjB,iCAAc;QACd,oBAAQ;QACR,mCAAe;QACf,0BAAW;KACZ;IACD,IAAI,EAAE;QACJ,gDAAqB;QACrB,+BAAa;QACb,iCAAc;QACd,kBAAO;QACP,2BAAW;KACZ;IACD,WAAW,EAAE;QACX,8DAA4B;QAC5B,6CAAoB;QACpB,+CAAqB;QACrB,yCAAkB;QAClB,gCAAc;KACf;CACF,CAAC"}
@@ -0,0 +1,6 @@
1
+ export declare class AdminAuth {
2
+ static setAdminUserContext(adminUserId: string, sessionIdentifier?: string): Promise<void>;
3
+ static adminUser(): Record<string, any> | undefined;
4
+ static session(): string | undefined;
5
+ }
6
+ //# sourceMappingURL=admin.auth.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"admin.auth.d.ts","sourceRoot":"","sources":["../../../src/auth/helpers/admin.auth.ts"],"names":[],"mappings":"AAgBA,qBAAa,SAAS;WACP,mBAAmB,CAC9B,WAAW,EAAE,MAAM,EACnB,iBAAiB,CAAC,EAAE,MAAM,GACzB,OAAO,CAAC,IAAI,CAAC;IAehB,MAAM,CAAC,SAAS,IAAI,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,SAAS;IAInD,MAAM,CAAC,OAAO,IAAI,MAAM,GAAG,SAAS;CAGrC"}
@@ -0,0 +1,29 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.AdminAuth = void 0;
4
+ const async_hooks_1 = require("async_hooks");
5
+ const admin_user_entity_1 = require("../entities/admin.user.entity");
6
+ const storage = new async_hooks_1.AsyncLocalStorage();
7
+ class AdminAuth {
8
+ static async setAdminUserContext(adminUserId, sessionIdentifier) {
9
+ const adminUser = await admin_user_entity_1.AdminUserEntity.findOne({
10
+ where: { id: adminUserId },
11
+ });
12
+ if (!adminUser)
13
+ return;
14
+ const adminUserObject = { ...adminUser };
15
+ delete adminUserObject.password;
16
+ delete adminUserObject.created_at;
17
+ delete adminUserObject.updated_at;
18
+ delete adminUserObject.deleted_at;
19
+ storage.enterWith({ adminUser: adminUserObject, sessionIdentifier });
20
+ }
21
+ static adminUser() {
22
+ return storage.getStore()?.adminUser;
23
+ }
24
+ static session() {
25
+ return storage.getStore()?.sessionIdentifier;
26
+ }
27
+ }
28
+ exports.AdminAuth = AdminAuth;
29
+ //# sourceMappingURL=admin.auth.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"admin.auth.js","sourceRoot":"","sources":["../../../src/auth/helpers/admin.auth.ts"],"names":[],"mappings":";;;AAAA,6CAAgD;AAChD,qEAAgE;AAOhE,MAAM,OAAO,GAAG,IAAI,+BAAiB,EAAyB,CAAC;AAQ/D,MAAa,SAAS;IACpB,MAAM,CAAC,KAAK,CAAC,mBAAmB,CAC9B,WAAmB,EACnB,iBAA0B;QAE1B,MAAM,SAAS,GAAG,MAAM,mCAAe,CAAC,OAAO,CAAC;YAC9C,KAAK,EAAE,EAAE,EAAE,EAAE,WAAW,EAAE;SAC3B,CAAC,CAAC;QACH,IAAI,CAAC,SAAS;YAAE,OAAO;QAEvB,MAAM,eAAe,GAAwB,EAAE,GAAG,SAAS,EAAE,CAAC;QAC9D,OAAO,eAAe,CAAC,QAAQ,CAAC;QAChC,OAAO,eAAe,CAAC,UAAU,CAAC;QAClC,OAAO,eAAe,CAAC,UAAU,CAAC;QAClC,OAAO,eAAe,CAAC,UAAU,CAAC;QAElC,OAAO,CAAC,SAAS,CAAC,EAAE,SAAS,EAAE,eAAe,EAAE,iBAAiB,EAAE,CAAC,CAAC;IACvE,CAAC;IAED,MAAM,CAAC,SAAS;QACd,OAAO,OAAO,CAAC,QAAQ,EAAE,EAAE,SAAS,CAAC;IACvC,CAAC;IAED,MAAM,CAAC,OAAO;QACZ,OAAO,OAAO,CAAC,QAAQ,EAAE,EAAE,iBAAiB,CAAC;IAC/C,CAAC;CACF;AA1BD,8BA0BC"}
@@ -0,0 +1,6 @@
1
+ import { ApiKeyEntity } from '../entities/api.key.entity';
2
+ export declare class ApiKeyContext {
3
+ static set(apiKey: ApiKeyEntity): void;
4
+ static apiKey(): ApiKeyEntity | undefined;
5
+ }
6
+ //# sourceMappingURL=api.key.context.d.ts.map
@@ -0,0 +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"}
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ApiKeyContext = void 0;
4
+ const async_hooks_1 = require("async_hooks");
5
+ const storage = new async_hooks_1.AsyncLocalStorage();
6
+ class ApiKeyContext {
7
+ static set(apiKey) {
8
+ storage.enterWith(apiKey);
9
+ }
10
+ static apiKey() {
11
+ return storage.getStore();
12
+ }
13
+ }
14
+ exports.ApiKeyContext = ApiKeyContext;
15
+ //# sourceMappingURL=api.key.context.js.map
@@ -0,0 +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"}
@@ -0,0 +1,6 @@
1
+ export declare class Auth {
2
+ static setUserContext(userId: string, sessionIdentifier?: string): Promise<void>;
3
+ static user(): Record<string, any> | undefined;
4
+ static session(): string | undefined;
5
+ }
6
+ //# sourceMappingURL=auth.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../../src/auth/helpers/auth.ts"],"names":[],"mappings":"AAgBA,qBAAa,IAAI;WACF,cAAc,CACzB,MAAM,EAAE,MAAM,EACd,iBAAiB,CAAC,EAAE,MAAM,GACzB,OAAO,CAAC,IAAI,CAAC;IAahB,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,SAAS;IAI9C,MAAM,CAAC,OAAO,IAAI,MAAM,GAAG,SAAS;CAGrC"}
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Auth = void 0;
4
+ const async_hooks_1 = require("async_hooks");
5
+ const user_entity_1 = require("../entities/user.entity");
6
+ const storage = new async_hooks_1.AsyncLocalStorage();
7
+ class Auth {
8
+ static async setUserContext(userId, sessionIdentifier) {
9
+ const user = await user_entity_1.UserEntity.findOne({ where: { id: userId } });
10
+ if (!user)
11
+ return;
12
+ const userObject = { ...user };
13
+ delete userObject.password;
14
+ delete userObject.created_at;
15
+ delete userObject.updated_at;
16
+ delete userObject.deleted_at;
17
+ storage.enterWith({ user: userObject, sessionIdentifier });
18
+ }
19
+ static user() {
20
+ return storage.getStore()?.user;
21
+ }
22
+ static session() {
23
+ return storage.getStore()?.sessionIdentifier;
24
+ }
25
+ }
26
+ exports.Auth = Auth;
27
+ //# sourceMappingURL=auth.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth.js","sourceRoot":"","sources":["../../../src/auth/helpers/auth.ts"],"names":[],"mappings":";;;AAAA,6CAAgD;AAChD,yDAAqD;AAOrD,MAAM,OAAO,GAAG,IAAI,+BAAiB,EAAoB,CAAC;AAQ1D,MAAa,IAAI;IACf,MAAM,CAAC,KAAK,CAAC,cAAc,CACzB,MAAc,EACd,iBAA0B;QAE1B,MAAM,IAAI,GAAG,MAAM,wBAAU,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC;QACjE,IAAI,CAAC,IAAI;YAAE,OAAO;QAElB,MAAM,UAAU,GAAwB,EAAE,GAAG,IAAI,EAAE,CAAC;QACpD,OAAO,UAAU,CAAC,QAAQ,CAAC;QAC3B,OAAO,UAAU,CAAC,UAAU,CAAC;QAC7B,OAAO,UAAU,CAAC,UAAU,CAAC;QAC7B,OAAO,UAAU,CAAC,UAAU,CAAC;QAE7B,OAAO,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,iBAAiB,EAAE,CAAC,CAAC;IAC7D,CAAC;IAED,MAAM,CAAC,IAAI;QACT,OAAO,OAAO,CAAC,QAAQ,EAAE,EAAE,IAAI,CAAC;IAClC,CAAC;IAED,MAAM,CAAC,OAAO;QACZ,OAAO,OAAO,CAAC,QAAQ,EAAE,EAAE,iBAAiB,CAAC;IAC/C,CAAC;CACF;AAxBD,oBAwBC"}
@@ -0,0 +1,10 @@
1
+ import { NestMiddleware } from '@nestjs/common';
2
+ import { JwtService } from '@nestjs/jwt';
3
+ import { NextFunction, Request, Response } from 'express';
4
+ export declare class AdminJwtMiddleware implements NestMiddleware {
5
+ private readonly jwtService;
6
+ constructor(jwtService: JwtService);
7
+ use(request: Request, _response: Response, next: NextFunction): Promise<void>;
8
+ private extractToken;
9
+ }
10
+ //# sourceMappingURL=admin.jwt.middleware.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"admin.jwt.middleware.d.ts","sourceRoot":"","sources":["../../../src/auth/middlewares/admin.jwt.middleware.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAC5D,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAkB1D,qBACa,kBAAmB,YAAW,cAAc;IAC3C,OAAO,CAAC,QAAQ,CAAC,UAAU;gBAAV,UAAU,EAAE,UAAU;IAE7C,GAAG,CACP,OAAO,EAAE,OAAO,EAChB,SAAS,EAAE,QAAQ,EACnB,IAAI,EAAE,YAAY,GACjB,OAAO,CAAC,IAAI,CAAC;IAyBhB,OAAO,CAAC,YAAY;CAOrB"}
@@ -0,0 +1,59 @@
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.AdminJwtMiddleware = void 0;
13
+ const common_1 = require("@nestjs/common");
14
+ const jwt_1 = require("@nestjs/jwt");
15
+ const system_auth_session_entity_1 = require("../entities/system.auth.session.entity");
16
+ const admin_auth_1 = require("../helpers/admin.auth");
17
+ let AdminJwtMiddleware = class AdminJwtMiddleware {
18
+ constructor(jwtService) {
19
+ this.jwtService = jwtService;
20
+ }
21
+ async use(request, _response, next) {
22
+ const token = this.extractToken(request);
23
+ if (token) {
24
+ try {
25
+ const payload = await this.jwtService.verifyAsync(token, {
26
+ secret: process.env.ACCESS_TOKEN_SECRET,
27
+ });
28
+ if (payload.sid) {
29
+ const session = await system_auth_session_entity_1.SystemAuthSessionEntity.findOne({
30
+ where: { session_identifier: payload.sid, is_admin: true },
31
+ });
32
+ const active = !!session &&
33
+ !session.invalidated_at &&
34
+ session.expires_at.getTime() > Date.now();
35
+ if (active)
36
+ await admin_auth_1.AdminAuth.setAdminUserContext(payload.sub, payload.sid);
37
+ }
38
+ }
39
+ catch {
40
+ }
41
+ }
42
+ next();
43
+ }
44
+ extractToken(request) {
45
+ const header = request.headers['authorization'];
46
+ if (!header)
47
+ return undefined;
48
+ const [scheme, value] = header.split(' ');
49
+ if (scheme?.toLowerCase() !== 'bearer' || !value)
50
+ return undefined;
51
+ return value.trim();
52
+ }
53
+ };
54
+ exports.AdminJwtMiddleware = AdminJwtMiddleware;
55
+ exports.AdminJwtMiddleware = AdminJwtMiddleware = __decorate([
56
+ (0, common_1.Injectable)(),
57
+ __metadata("design:paramtypes", [jwt_1.JwtService])
58
+ ], AdminJwtMiddleware);
59
+ //# sourceMappingURL=admin.jwt.middleware.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"admin.jwt.middleware.js","sourceRoot":"","sources":["../../../src/auth/middlewares/admin.jwt.middleware.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,2CAA4D;AAC5D,qCAAyC;AAEzC,uFAAiF;AAEjF,sDAAkD;AAgB3C,IAAM,kBAAkB,GAAxB,MAAM,kBAAkB;IAC7B,YAA6B,UAAsB;QAAtB,eAAU,GAAV,UAAU,CAAY;IAAG,CAAC;IAEvD,KAAK,CAAC,GAAG,CACP,OAAgB,EAChB,SAAmB,EACnB,IAAkB;QAElB,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;QACzC,IAAI,KAAK,EAAE,CAAC;YACV,IAAI,CAAC;gBACH,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,WAAW,CAAa,KAAK,EAAE;oBACnE,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,mBAAmB;iBACxC,CAAC,CAAC;gBACH,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;oBAChB,MAAM,OAAO,GAAG,MAAM,oDAAuB,CAAC,OAAO,CAAC;wBACpD,KAAK,EAAE,EAAE,kBAAkB,EAAE,OAAO,CAAC,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAE;qBAC3D,CAAC,CAAC;oBACH,MAAM,MAAM,GACV,CAAC,CAAC,OAAO;wBACT,CAAC,OAAO,CAAC,cAAc;wBACvB,OAAO,CAAC,UAAU,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;oBAC5C,IAAI,MAAM;wBACR,MAAM,sBAAS,CAAC,mBAAmB,CAAC,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC;gBAClE,CAAC;YACH,CAAC;YAAC,MAAM,CAAC;YAET,CAAC;QACH,CAAC;QACD,IAAI,EAAE,CAAC;IACT,CAAC;IAEO,YAAY,CAAC,OAAgB;QACnC,MAAM,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;QAChD,IAAI,CAAC,MAAM;YAAE,OAAO,SAAS,CAAC;QAC9B,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC1C,IAAI,MAAM,EAAE,WAAW,EAAE,KAAK,QAAQ,IAAI,CAAC,KAAK;YAAE,OAAO,SAAS,CAAC;QACnE,OAAO,KAAK,CAAC,IAAI,EAAE,CAAC;IACtB,CAAC;CACF,CAAA;AAvCY,gDAAkB;6BAAlB,kBAAkB;IAD9B,IAAA,mBAAU,GAAE;qCAE8B,gBAAU;GADxC,kBAAkB,CAuC9B"}
@@ -0,0 +1,10 @@
1
+ import { NestMiddleware } from '@nestjs/common';
2
+ import { NextFunction, Request, Response } from 'express';
3
+ import { ApiKeyService } from '../services/api.key.service';
4
+ export declare class ApiKeyMiddleware implements NestMiddleware {
5
+ private readonly apiKeyService;
6
+ constructor(apiKeyService: ApiKeyService);
7
+ use(request: Request, _response: Response, next: NextFunction): Promise<void>;
8
+ private extractKey;
9
+ }
10
+ //# sourceMappingURL=api.key.middleware.d.ts.map
@@ -0,0 +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"}
@@ -0,0 +1,47 @@
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.ApiKeyMiddleware = void 0;
13
+ const common_1 = require("@nestjs/common");
14
+ const api_key_default_enum_1 = require("../enums/api.key.default.enum");
15
+ const api_key_service_1 = require("../services/api.key.service");
16
+ const api_key_context_1 = require("../helpers/api.key.context");
17
+ let ApiKeyMiddleware = class ApiKeyMiddleware {
18
+ constructor(apiKeyService) {
19
+ this.apiKeyService = apiKeyService;
20
+ }
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);
27
+ }
28
+ next();
29
+ }
30
+ extractKey(request) {
31
+ const headerName = process.env.API_KEY_HEADER_NAME || api_key_default_enum_1.ApiKeyDefault.HEADER_NAME;
32
+ const headerKey = request.headers[headerName];
33
+ if (headerKey)
34
+ return Array.isArray(headerKey) ? headerKey[0] : headerKey;
35
+ const authorization = request.headers.authorization;
36
+ if (authorization?.toLowerCase().startsWith('apikey ')) {
37
+ return authorization.slice('apikey '.length).trim();
38
+ }
39
+ return null;
40
+ }
41
+ };
42
+ exports.ApiKeyMiddleware = ApiKeyMiddleware;
43
+ exports.ApiKeyMiddleware = ApiKeyMiddleware = __decorate([
44
+ (0, common_1.Injectable)(),
45
+ __metadata("design:paramtypes", [api_key_service_1.ApiKeyService])
46
+ ], ApiKeyMiddleware);
47
+ //# sourceMappingURL=api.key.middleware.js.map
@@ -0,0 +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"}
@@ -0,0 +1,10 @@
1
+ import { NestMiddleware } from '@nestjs/common';
2
+ import { JwtService } from '@nestjs/jwt';
3
+ import { NextFunction, Request, Response } from 'express';
4
+ export declare class JwtMiddleware implements NestMiddleware {
5
+ private readonly jwtService;
6
+ constructor(jwtService: JwtService);
7
+ use(request: Request, _response: Response, next: NextFunction): Promise<void>;
8
+ private extractToken;
9
+ }
10
+ //# sourceMappingURL=jwt.middleware.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jwt.middleware.d.ts","sourceRoot":"","sources":["../../../src/auth/middlewares/jwt.middleware.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAC5D,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAkB1D,qBACa,aAAc,YAAW,cAAc;IACtC,OAAO,CAAC,QAAQ,CAAC,UAAU;gBAAV,UAAU,EAAE,UAAU;IAE7C,GAAG,CACP,OAAO,EAAE,OAAO,EAChB,SAAS,EAAE,QAAQ,EACnB,IAAI,EAAE,YAAY,GACjB,OAAO,CAAC,IAAI,CAAC;IAwBhB,OAAO,CAAC,YAAY;CAOrB"}
@@ -0,0 +1,59 @@
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.JwtMiddleware = void 0;
13
+ const common_1 = require("@nestjs/common");
14
+ const jwt_1 = require("@nestjs/jwt");
15
+ const system_auth_session_entity_1 = require("../entities/system.auth.session.entity");
16
+ const auth_1 = require("../helpers/auth");
17
+ let JwtMiddleware = class JwtMiddleware {
18
+ constructor(jwtService) {
19
+ this.jwtService = jwtService;
20
+ }
21
+ async use(request, _response, next) {
22
+ const token = this.extractToken(request);
23
+ if (token) {
24
+ try {
25
+ const payload = await this.jwtService.verifyAsync(token, {
26
+ secret: process.env.ACCESS_TOKEN_SECRET,
27
+ });
28
+ if (payload.sid) {
29
+ const session = await system_auth_session_entity_1.SystemAuthSessionEntity.findOne({
30
+ where: { session_identifier: payload.sid, is_admin: false },
31
+ });
32
+ const active = !!session &&
33
+ !session.invalidated_at &&
34
+ session.expires_at.getTime() > Date.now();
35
+ if (active)
36
+ await auth_1.Auth.setUserContext(payload.sub, payload.sid);
37
+ }
38
+ }
39
+ catch {
40
+ }
41
+ }
42
+ next();
43
+ }
44
+ extractToken(request) {
45
+ const header = request.headers['authorization'];
46
+ if (!header)
47
+ return undefined;
48
+ const [scheme, value] = header.split(' ');
49
+ if (scheme?.toLowerCase() !== 'bearer' || !value)
50
+ return undefined;
51
+ return value.trim();
52
+ }
53
+ };
54
+ exports.JwtMiddleware = JwtMiddleware;
55
+ exports.JwtMiddleware = JwtMiddleware = __decorate([
56
+ (0, common_1.Injectable)(),
57
+ __metadata("design:paramtypes", [jwt_1.JwtService])
58
+ ], JwtMiddleware);
59
+ //# sourceMappingURL=jwt.middleware.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jwt.middleware.js","sourceRoot":"","sources":["../../../src/auth/middlewares/jwt.middleware.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,2CAA4D;AAC5D,qCAAyC;AAEzC,uFAAiF;AAEjF,0CAAuC;AAgBhC,IAAM,aAAa,GAAnB,MAAM,aAAa;IACxB,YAA6B,UAAsB;QAAtB,eAAU,GAAV,UAAU,CAAY;IAAG,CAAC;IAEvD,KAAK,CAAC,GAAG,CACP,OAAgB,EAChB,SAAmB,EACnB,IAAkB;QAElB,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;QACzC,IAAI,KAAK,EAAE,CAAC;YACV,IAAI,CAAC;gBACH,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,WAAW,CAAa,KAAK,EAAE;oBACnE,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,mBAAmB;iBACxC,CAAC,CAAC;gBACH,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;oBAChB,MAAM,OAAO,GAAG,MAAM,oDAAuB,CAAC,OAAO,CAAC;wBACpD,KAAK,EAAE,EAAE,kBAAkB,EAAE,OAAO,CAAC,GAAG,EAAE,QAAQ,EAAE,KAAK,EAAE;qBAC5D,CAAC,CAAC;oBACH,MAAM,MAAM,GACV,CAAC,CAAC,OAAO;wBACT,CAAC,OAAO,CAAC,cAAc;wBACvB,OAAO,CAAC,UAAU,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;oBAC5C,IAAI,MAAM;wBAAE,MAAM,WAAI,CAAC,cAAc,CAAC,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC;gBAClE,CAAC;YACH,CAAC;YAAC,MAAM,CAAC;YAET,CAAC;QACH,CAAC;QACD,IAAI,EAAE,CAAC;IACT,CAAC;IAEO,YAAY,CAAC,OAAgB;QACnC,MAAM,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;QAChD,IAAI,CAAC,MAAM;YAAE,OAAO,SAAS,CAAC;QAC9B,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC1C,IAAI,MAAM,EAAE,WAAW,EAAE,KAAK,QAAQ,IAAI,CAAC,KAAK;YAAE,OAAO,SAAS,CAAC;QACnE,OAAO,KAAK,CAAC,IAAI,EAAE,CAAC;IACtB,CAAC;CACF,CAAA;AAtCY,sCAAa;wBAAb,aAAa;IADzB,IAAA,mBAAU,GAAE;qCAE8B,gBAAU;GADxC,aAAa,CAsCzB"}
@@ -0,0 +1,19 @@
1
+ import { JwtService } from '@nestjs/jwt';
2
+ import { DataSource } from 'typeorm';
3
+ import { AdminUserEntity } from '../entities/admin.user.entity';
4
+ import { AdminAuthenticatedAccess, AuthTokenPair, IssueTokensUser, TokenIssueContext } from '../types/auth.types';
5
+ export declare class AdminAuthService {
6
+ private readonly jwtService;
7
+ private readonly dataSource;
8
+ constructor(jwtService: JwtService, dataSource: DataSource);
9
+ validateRole(roleIdentifier?: string): Promise<AdminAuthenticatedAccess>;
10
+ validateCredentials(emailOrUsername: string, password: string): Promise<AdminUserEntity>;
11
+ issueTokens(user: IssueTokensUser, context?: TokenIssueContext): Promise<AuthTokenPair>;
12
+ refresh(rawRefreshToken: string, context?: TokenIssueContext): Promise<AuthTokenPair>;
13
+ revokeOne(rawRefreshToken: string): Promise<void>;
14
+ logout(rawRefreshToken: string): Promise<void>;
15
+ private hashToken;
16
+ private get refreshTokenRepo();
17
+ private get sessionRepo();
18
+ }
19
+ //# sourceMappingURL=admin.auth.service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"admin.auth.service.d.ts","sourceRoot":"","sources":["../../../src/auth/services/admin.auth.service.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,UAAU,EAAsB,MAAM,SAAS,CAAC;AAIzD,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAGhE,OAAO,EACL,wBAAwB,EACxB,aAAa,EACb,eAAe,EACf,iBAAiB,EAClB,MAAM,qBAAqB,CAAC;AAI7B,qBACa,gBAAgB;IAEzB,OAAO,CAAC,QAAQ,CAAC,UAAU;IAC3B,OAAO,CAAC,QAAQ,CAAC,UAAU;gBADV,UAAU,EAAE,UAAU,EACtB,UAAU,EAAE,UAAU;IASnC,YAAY,CAChB,cAAc,CAAC,EAAE,MAAM,GACtB,OAAO,CAAC,wBAAwB,CAAC;IA6B9B,mBAAmB,CACvB,eAAe,EAAE,MAAM,EACvB,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,eAAe,CAAC;IAsBrB,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;IAiCnB,SAAS,CAAC,eAAe,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAajD,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"}
@@ -0,0 +1,160 @@
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.AdminAuthService = void 0;
13
+ const common_1 = require("@nestjs/common");
14
+ const jwt_1 = require("@nestjs/jwt");
15
+ const typeorm_1 = require("typeorm");
16
+ const crypto_1 = require("crypto");
17
+ const system_refresh_token_entity_1 = require("../entities/system.refresh.token.entity");
18
+ const system_auth_session_entity_1 = require("../entities/system.auth.session.entity");
19
+ const admin_user_entity_1 = require("../entities/admin.user.entity");
20
+ const system_admin_user_role_entity_1 = require("../entities/system.admin.user.role.entity");
21
+ const access_exception_1 = require("../../global/exceptions/access.exception");
22
+ const admin_auth_1 = require("../helpers/admin.auth");
23
+ const auth_utilities_1 = require("../utilities/auth.utilities");
24
+ let AdminAuthService = class AdminAuthService {
25
+ constructor(jwtService, dataSource) {
26
+ this.jwtService = jwtService;
27
+ this.dataSource = dataSource;
28
+ }
29
+ async validateRole(roleIdentifier) {
30
+ const user = admin_auth_1.AdminAuth.adminUser();
31
+ if (!user)
32
+ throw new access_exception_1.AccessException('Authentication required: no active session.');
33
+ const adminUserRoles = await system_admin_user_role_entity_1.SystemAdminUserRoleEntity.find({
34
+ where: { admin_user_id: user.id },
35
+ relations: { role: true },
36
+ });
37
+ const roles = adminUserRoles
38
+ .map((adminUserRole) => adminUserRole.role)
39
+ .filter((role) => !!role);
40
+ if (roleIdentifier &&
41
+ !roles.some((role) => role.identifier === roleIdentifier)) {
42
+ throw new access_exception_1.AccessException(`This action requires the "${roleIdentifier}" role.`);
43
+ }
44
+ return { user, roles };
45
+ }
46
+ async validateCredentials(emailOrUsername, password) {
47
+ const user = await this.dataSource
48
+ .getRepository(admin_user_entity_1.AdminUserEntity)
49
+ .createQueryBuilder('admin_user')
50
+ .addSelect('admin_user.password')
51
+ .where('admin_user.email = :value OR admin_user.username = :value', {
52
+ value: emailOrUsername,
53
+ })
54
+ .getOne();
55
+ if (!user || !user.password) {
56
+ throw new common_1.UnauthorizedException('Invalid credentials');
57
+ }
58
+ const matches = await auth_utilities_1.AuthUtility.comparePassword(password, user.password);
59
+ if (!matches) {
60
+ throw new common_1.UnauthorizedException('Invalid credentials');
61
+ }
62
+ delete user.password;
63
+ return user;
64
+ }
65
+ async issueTokens(user, context) {
66
+ const jti = (0, crypto_1.randomUUID)();
67
+ const accessExpiry = process.env.ACCESS_TOKEN_EXPIRY;
68
+ const refreshExpiry = process.env.REFRESH_TOKEN_EXPIRY;
69
+ const sessionIdentifier = this.hashToken(`${Date.now()}:${user.id}`);
70
+ const sessionExpiresAt = new Date(Date.now() + auth_utilities_1.AuthUtility.parseExpiryMs(accessExpiry));
71
+ await this.sessionRepo.save(this.sessionRepo.create({
72
+ user_id: user.id,
73
+ is_admin: true,
74
+ session_identifier: sessionIdentifier,
75
+ expires_at: sessionExpiresAt,
76
+ invalidated_at: null,
77
+ }));
78
+ const accessToken = await this.jwtService.signAsync({ sub: user.id, email: user.email, jti, sid: sessionIdentifier }, {
79
+ secret: process.env.ACCESS_TOKEN_SECRET,
80
+ expiresIn: accessExpiry,
81
+ });
82
+ const refreshToken = await this.jwtService.signAsync({ sub: user.id, email: user.email }, {
83
+ secret: process.env.REFRESH_TOKEN_SECRET,
84
+ expiresIn: refreshExpiry,
85
+ });
86
+ const tokenHash = this.hashToken(refreshToken);
87
+ const expiresAt = new Date(Date.now() + auth_utilities_1.AuthUtility.parseExpiryMs(refreshExpiry));
88
+ await this.refreshTokenRepo.save(this.refreshTokenRepo.create({
89
+ user_id: user.id,
90
+ is_admin: true,
91
+ token_hash: tokenHash,
92
+ expires_at: expiresAt,
93
+ revoked_at: null,
94
+ ip_address: context?.ip_address ?? null,
95
+ user_agent: context?.user_agent ?? null,
96
+ }));
97
+ return { access_token: accessToken, refresh_token: refreshToken };
98
+ }
99
+ async refresh(rawRefreshToken, context) {
100
+ let payload;
101
+ try {
102
+ payload = await this.jwtService.verifyAsync(rawRefreshToken, {
103
+ secret: process.env.REFRESH_TOKEN_SECRET,
104
+ });
105
+ }
106
+ catch {
107
+ throw new common_1.UnauthorizedException('Invalid refresh token');
108
+ }
109
+ const tokenHash = this.hashToken(rawRefreshToken);
110
+ const stored = await this.refreshTokenRepo.findOne({
111
+ where: {
112
+ user_id: payload.sub,
113
+ is_admin: true,
114
+ token_hash: tokenHash,
115
+ revoked_at: (0, typeorm_1.IsNull)(),
116
+ },
117
+ });
118
+ if (!stored)
119
+ throw new common_1.UnauthorizedException('Refresh token not found or already revoked');
120
+ if (stored.expires_at < new Date())
121
+ throw new common_1.UnauthorizedException('Refresh token has expired');
122
+ stored.revoked_at = new Date();
123
+ await this.refreshTokenRepo.save(stored);
124
+ return this.issueTokens({ id: payload.sub, email: payload.email }, context);
125
+ }
126
+ async revokeOne(rawRefreshToken) {
127
+ const tokenHash = this.hashToken(rawRefreshToken);
128
+ await this.refreshTokenRepo
129
+ .createQueryBuilder()
130
+ .update()
131
+ .set({ revoked_at: new Date() })
132
+ .where('token_hash = :hash AND is_admin = true AND revoked_at IS NULL', {
133
+ hash: tokenHash,
134
+ })
135
+ .execute();
136
+ }
137
+ async logout(rawRefreshToken) {
138
+ await this.revokeOne(rawRefreshToken);
139
+ const sessionIdentifier = admin_auth_1.AdminAuth.session();
140
+ if (sessionIdentifier) {
141
+ await this.sessionRepo.update({ session_identifier: sessionIdentifier, is_admin: true }, { invalidated_at: new Date() });
142
+ }
143
+ }
144
+ hashToken(token) {
145
+ return (0, crypto_1.createHash)('sha256').update(token).digest('hex');
146
+ }
147
+ get refreshTokenRepo() {
148
+ return this.dataSource.getRepository(system_refresh_token_entity_1.SystemRefreshTokenEntity);
149
+ }
150
+ get sessionRepo() {
151
+ return this.dataSource.getRepository(system_auth_session_entity_1.SystemAuthSessionEntity);
152
+ }
153
+ };
154
+ exports.AdminAuthService = AdminAuthService;
155
+ exports.AdminAuthService = AdminAuthService = __decorate([
156
+ (0, common_1.Injectable)(),
157
+ __metadata("design:paramtypes", [jwt_1.JwtService,
158
+ typeorm_1.DataSource])
159
+ ], AdminAuthService);
160
+ //# sourceMappingURL=admin.auth.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"admin.auth.service.js","sourceRoot":"","sources":["../../../src/auth/services/admin.auth.service.ts"],"names":[],"mappings":"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"}