arkos 1.3.2-canary.3 → 1.3.3-beta

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 (301) hide show
  1. package/README.md +8 -4
  2. package/dist/cjs/app.js +174 -1
  3. package/dist/cjs/app.js.map +1 -1
  4. package/dist/cjs/exports/auth/index.js +6 -1
  5. package/dist/cjs/exports/controllers/index.js +11 -1
  6. package/dist/cjs/exports/error-handler/index.js +11 -1
  7. package/dist/cjs/exports/index.js +12 -1
  8. package/dist/cjs/exports/middlewares/index.js +7 -1
  9. package/dist/cjs/exports/prisma/index.js +13 -1
  10. package/dist/cjs/exports/services/index.js +48 -1
  11. package/dist/cjs/exports/utils/index.js +24 -1
  12. package/dist/cjs/exports/utils/index.js.map +1 -1
  13. package/dist/cjs/exports/validation/index.js +11 -1
  14. package/dist/cjs/modules/auth/auth.controller.js +247 -1
  15. package/dist/cjs/modules/auth/auth.controller.js.map +1 -1
  16. package/dist/cjs/modules/auth/auth.router.js +82 -1
  17. package/dist/cjs/modules/auth/auth.service.js +226 -1
  18. package/dist/cjs/modules/auth/utils/auth-error-objects.js +10 -1
  19. package/dist/cjs/modules/auth/utils/helpers/auth.controller.helpers.js +83 -1
  20. package/dist/cjs/modules/auth/utils/services/auth-action.service.js +92 -1
  21. package/dist/cjs/modules/base/base.controller.js +210 -1
  22. package/dist/cjs/modules/base/base.controller.js.map +1 -1
  23. package/dist/cjs/modules/base/base.middlewares.js +92 -1
  24. package/dist/cjs/modules/base/base.middlewares.js.map +1 -1
  25. package/dist/cjs/modules/base/base.router.js +22 -1
  26. package/dist/cjs/modules/base/base.service.js +615 -1
  27. package/dist/cjs/modules/base/base.service.js.map +1 -1
  28. package/dist/cjs/modules/base/types/base.service.types.js +3 -1
  29. package/dist/cjs/modules/base/types/base.service.types.js.map +1 -1
  30. package/dist/cjs/modules/base/utils/helpers/base.controller.helpers.js +80 -1
  31. package/dist/cjs/modules/base/utils/helpers/base.middlewares.helpers.js +50 -1
  32. package/dist/cjs/modules/base/utils/helpers/base.router.helpers.js +118 -1
  33. package/dist/cjs/modules/base/utils/helpers/base.router.helpers.js.map +1 -1
  34. package/dist/cjs/modules/base/utils/helpers/base.service.helpers.js +208 -1
  35. package/dist/cjs/modules/base/utils/helpers/base.service.helpers.js.map +1 -1
  36. package/dist/cjs/modules/base/utils/router-validator.js +16 -1
  37. package/dist/cjs/modules/base/utils/service-hooks-manager.js +19 -1
  38. package/dist/cjs/modules/debugger/debugger.service.js +48 -0
  39. package/dist/cjs/modules/debugger/debugger.service.js.map +1 -0
  40. package/dist/cjs/modules/email/email.service.js +104 -1
  41. package/dist/cjs/modules/error-handler/error-handler.controller.js +146 -4
  42. package/dist/cjs/modules/error-handler/utils/app-error.js +17 -1
  43. package/dist/cjs/modules/error-handler/utils/catch-async.js +21 -1
  44. package/dist/cjs/modules/error-handler/utils/error-handler.helpers.js +205 -3
  45. package/dist/cjs/modules/file-upload/file-upload.controller.js +237 -1
  46. package/dist/cjs/modules/file-upload/file-upload.controller.js.map +1 -1
  47. package/dist/cjs/modules/file-upload/file-upload.router.js +60 -1
  48. package/dist/cjs/modules/file-upload/file-upload.service.js +322 -1
  49. package/dist/cjs/modules/file-upload/utils/helpers/file-upload.helpers.js +97 -1
  50. package/dist/cjs/modules/swagger/swagger.router.js +39 -1
  51. package/dist/cjs/modules/swagger/swagger.router.js.map +1 -1
  52. package/dist/cjs/modules/swagger/utils/helpers/get-authentication-json-schema-paths.js +338 -1
  53. package/dist/cjs/modules/swagger/utils/helpers/get-swagger-default-configs.js +64 -1
  54. package/dist/cjs/modules/swagger/utils/helpers/get-system-json-schema-paths.js +37 -1
  55. package/dist/cjs/modules/swagger/utils/helpers/json-schema-generators/generate-class-validator-json-schemas.js +52 -1
  56. package/dist/cjs/modules/swagger/utils/helpers/json-schema-generators/generate-class-validator-json-schemas.js.map +1 -1
  57. package/dist/cjs/modules/swagger/utils/helpers/json-schema-generators/generate-prisma-json-schemas.js +32 -1
  58. package/dist/cjs/modules/swagger/utils/helpers/json-schema-generators/generate-system-json-schemas.js +49 -1
  59. package/dist/cjs/modules/swagger/utils/helpers/json-schema-generators/generate-zod-json-schemas.js +34 -1
  60. package/dist/cjs/modules/swagger/utils/helpers/json-schema-generators/prisma-models/generate-prisma-model-main-routes-paths.js +471 -1
  61. package/dist/cjs/modules/swagger/utils/helpers/json-schema-generators/prisma-models/generate-prisma-model-parent-routes-paths.js +572 -1
  62. package/dist/cjs/modules/swagger/utils/helpers/missing-json-schemas-generator.js +260 -1
  63. package/dist/cjs/modules/swagger/utils/helpers/missing-json-schemas-generator.js.map +1 -1
  64. package/dist/cjs/modules/swagger/utils/helpers/swagger.router.helpers.js +112 -1
  65. package/dist/cjs/paths.js +9 -1
  66. package/dist/cjs/server.js +103 -5
  67. package/dist/cjs/server.js.map +1 -1
  68. package/dist/cjs/types/arkos-config.js +3 -1
  69. package/dist/cjs/types/arkos-config.js.map +1 -1
  70. package/dist/cjs/types/auth.js +3 -1
  71. package/dist/cjs/types/index.js +11 -1
  72. package/dist/cjs/types/index.js.map +1 -1
  73. package/dist/cjs/types/router-config.js +3 -1
  74. package/dist/cjs/utils/arkos-env.js +9 -1
  75. package/dist/cjs/utils/cli/build.js +214 -5
  76. package/dist/cjs/utils/cli/dev.js +154 -3
  77. package/dist/cjs/utils/cli/generate.js +126 -1
  78. package/dist/cjs/utils/cli/generate.js.map +1 -1
  79. package/dist/cjs/utils/cli/index.js +104 -1
  80. package/dist/cjs/utils/cli/index.js.map +1 -1
  81. package/dist/cjs/utils/cli/prisma-generate.js +120 -0
  82. package/dist/cjs/utils/cli/prisma-generate.js.map +1 -0
  83. package/dist/cjs/utils/cli/start.js +103 -1
  84. package/dist/cjs/utils/cli/utils/cli.helpers.js +24 -1
  85. package/dist/cjs/utils/cli/utils/smart-fs-watcher.js +73 -1
  86. package/dist/cjs/utils/cli/utils/template-generator/templates/auth-configs-template.js +60 -0
  87. package/dist/cjs/utils/cli/utils/template-generator/templates/auth-configs-template.js.map +1 -0
  88. package/dist/cjs/utils/cli/utils/template-generator/templates/controller-template.js +17 -0
  89. package/dist/cjs/utils/cli/utils/template-generator/templates/controller-template.js.map +1 -0
  90. package/dist/cjs/utils/cli/utils/template-generator/templates/hooks-template.js +201 -0
  91. package/dist/cjs/utils/cli/utils/template-generator/templates/hooks-template.js.map +1 -0
  92. package/dist/cjs/utils/cli/utils/template-generator/templates/middlewares-template.js +286 -0
  93. package/dist/cjs/utils/cli/utils/template-generator/templates/middlewares-template.js.map +1 -0
  94. package/dist/cjs/utils/cli/utils/template-generator/templates/query-options-template.js +64 -0
  95. package/dist/cjs/utils/cli/utils/template-generator/templates/query-options-template.js.map +1 -0
  96. package/dist/cjs/utils/cli/utils/template-generator/templates/router-template.js +42 -0
  97. package/dist/cjs/utils/cli/utils/template-generator/templates/router-template.js.map +1 -0
  98. package/dist/cjs/utils/cli/utils/template-generator/templates/service-template.js +29 -0
  99. package/dist/cjs/utils/cli/utils/template-generator/templates/service-template.js.map +1 -0
  100. package/dist/cjs/utils/cli/utils/template-generators.js +34 -2
  101. package/dist/cjs/utils/cli/utils/template-generators.js.map +1 -1
  102. package/dist/cjs/utils/cli/utils/watermark-stamper.js +17 -3
  103. package/dist/cjs/utils/dotenv.helpers.js +43 -1
  104. package/dist/cjs/utils/dynamic-loader.js +270 -9
  105. package/dist/cjs/utils/features/api.features.js +226 -1
  106. package/dist/cjs/utils/features/api.features.js.map +1 -1
  107. package/dist/cjs/utils/features/change-case.features.js +67 -1
  108. package/dist/cjs/utils/features/port-and-host-allocator.js +105 -1
  109. package/dist/cjs/utils/helpers/api.features.helpers.js +112 -1
  110. package/dist/cjs/utils/helpers/change-case.helpers.js +177 -1
  111. package/dist/cjs/utils/helpers/deepmerge.helper.js +115 -1
  112. package/dist/cjs/utils/helpers/deepmerge.helper.js.map +1 -1
  113. package/dist/cjs/utils/helpers/dynamic-loader.helpers.js +76 -1
  114. package/dist/cjs/utils/helpers/fs.helpers.js +57 -1
  115. package/dist/cjs/utils/helpers/global.helpers.js +94 -1
  116. package/dist/cjs/utils/helpers/prisma.helpers.js +44 -1
  117. package/dist/cjs/utils/helpers/prisma.helpers.js.map +1 -1
  118. package/dist/cjs/utils/helpers/query-parser.helpers.js +45 -1
  119. package/dist/cjs/utils/helpers/routers.helpers.js +37 -1
  120. package/dist/cjs/utils/helpers/text.helpers.js +28 -1
  121. package/dist/cjs/utils/prisma/prisma-json-schema-generator.js +455 -1
  122. package/dist/cjs/utils/prisma/prisma-schema-parser.js +216 -4
  123. package/dist/cjs/utils/prisma/types.js +3 -1
  124. package/dist/cjs/utils/sheu.js +126 -1
  125. package/dist/cjs/utils/sheu.js.map +1 -1
  126. package/dist/cjs/utils/validate-dto.js +17 -1
  127. package/dist/cjs/utils/validate-schema.js +15 -1
  128. package/dist/esm/app.js +134 -1
  129. package/dist/esm/app.js.map +1 -1
  130. package/dist/esm/exports/auth/index.js +2 -1
  131. package/dist/esm/exports/controllers/index.js +4 -1
  132. package/dist/esm/exports/error-handler/index.js +4 -1
  133. package/dist/esm/exports/index.js +8 -1
  134. package/dist/esm/exports/middlewares/index.js +2 -1
  135. package/dist/esm/exports/prisma/index.js +6 -1
  136. package/dist/esm/exports/services/index.js +9 -1
  137. package/dist/esm/exports/utils/index.js +4 -1
  138. package/dist/esm/exports/utils/index.js.map +1 -1
  139. package/dist/esm/exports/validation/index.js +4 -1
  140. package/dist/esm/modules/auth/auth.controller.js +240 -1
  141. package/dist/esm/modules/auth/auth.controller.js.map +1 -1
  142. package/dist/esm/modules/auth/auth.router.js +76 -1
  143. package/dist/esm/modules/auth/auth.service.js +219 -1
  144. package/dist/esm/modules/auth/utils/auth-error-objects.js +4 -1
  145. package/dist/esm/modules/auth/utils/helpers/auth.controller.helpers.js +73 -1
  146. package/dist/esm/modules/auth/utils/services/auth-action.service.js +90 -1
  147. package/dist/esm/modules/base/base.controller.js +203 -1
  148. package/dist/esm/modules/base/base.controller.js.map +1 -1
  149. package/dist/esm/modules/base/base.middlewares.js +81 -1
  150. package/dist/esm/modules/base/base.middlewares.js.map +1 -1
  151. package/dist/esm/modules/base/base.router.js +15 -1
  152. package/dist/esm/modules/base/base.service.js +608 -1
  153. package/dist/esm/modules/base/base.service.js.map +1 -1
  154. package/dist/esm/modules/base/types/base.service.types.js +2 -1
  155. package/dist/esm/modules/base/types/base.service.types.js.map +1 -1
  156. package/dist/esm/modules/base/utils/helpers/base.controller.helpers.js +76 -1
  157. package/dist/esm/modules/base/utils/helpers/base.middlewares.helpers.js +44 -1
  158. package/dist/esm/modules/base/utils/helpers/base.router.helpers.js +109 -1
  159. package/dist/esm/modules/base/utils/helpers/base.router.helpers.js.map +1 -1
  160. package/dist/esm/modules/base/utils/helpers/base.service.helpers.js +198 -1
  161. package/dist/esm/modules/base/utils/helpers/base.service.helpers.js.map +1 -1
  162. package/dist/esm/modules/base/utils/router-validator.js +14 -1
  163. package/dist/esm/modules/base/utils/service-hooks-manager.js +17 -1
  164. package/dist/esm/modules/debugger/debugger.service.js +43 -0
  165. package/dist/esm/modules/debugger/debugger.service.js.map +1 -0
  166. package/dist/esm/modules/email/email.service.js +97 -1
  167. package/dist/esm/modules/error-handler/error-handler.controller.js +107 -4
  168. package/dist/esm/modules/error-handler/utils/app-error.js +15 -1
  169. package/dist/esm/modules/error-handler/utils/catch-async.js +19 -1
  170. package/dist/esm/modules/error-handler/utils/error-handler.helpers.js +163 -3
  171. package/dist/esm/modules/file-upload/file-upload.controller.js +232 -1
  172. package/dist/esm/modules/file-upload/file-upload.controller.js.map +1 -1
  173. package/dist/esm/modules/file-upload/file-upload.router.js +54 -1
  174. package/dist/esm/modules/file-upload/file-upload.service.js +314 -1
  175. package/dist/esm/modules/file-upload/utils/helpers/file-upload.helpers.js +87 -1
  176. package/dist/esm/modules/swagger/swagger.router.js +33 -1
  177. package/dist/esm/modules/swagger/swagger.router.js.map +1 -1
  178. package/dist/esm/modules/swagger/utils/helpers/get-authentication-json-schema-paths.js +333 -1
  179. package/dist/esm/modules/swagger/utils/helpers/get-swagger-default-configs.js +58 -1
  180. package/dist/esm/modules/swagger/utils/helpers/get-system-json-schema-paths.js +34 -1
  181. package/dist/esm/modules/swagger/utils/helpers/json-schema-generators/generate-class-validator-json-schemas.js +46 -1
  182. package/dist/esm/modules/swagger/utils/helpers/json-schema-generators/generate-class-validator-json-schemas.js.map +1 -1
  183. package/dist/esm/modules/swagger/utils/helpers/json-schema-generators/generate-prisma-json-schemas.js +26 -1
  184. package/dist/esm/modules/swagger/utils/helpers/json-schema-generators/generate-system-json-schemas.js +46 -1
  185. package/dist/esm/modules/swagger/utils/helpers/json-schema-generators/generate-zod-json-schemas.js +28 -1
  186. package/dist/esm/modules/swagger/utils/helpers/json-schema-generators/prisma-models/generate-prisma-model-main-routes-paths.js +465 -1
  187. package/dist/esm/modules/swagger/utils/helpers/json-schema-generators/prisma-models/generate-prisma-model-parent-routes-paths.js +566 -1
  188. package/dist/esm/modules/swagger/utils/helpers/missing-json-schemas-generator.js +255 -1
  189. package/dist/esm/modules/swagger/utils/helpers/missing-json-schemas-generator.js.map +1 -1
  190. package/dist/esm/modules/swagger/utils/helpers/swagger.router.helpers.js +101 -1
  191. package/dist/esm/paths.js +3 -1
  192. package/dist/esm/server.js +94 -5
  193. package/dist/esm/server.js.map +1 -1
  194. package/dist/esm/types/arkos-config.js +2 -1
  195. package/dist/esm/types/arkos-config.js.map +1 -1
  196. package/dist/esm/types/auth.js +2 -1
  197. package/dist/esm/types/index.js +8 -1
  198. package/dist/esm/types/index.js.map +1 -1
  199. package/dist/esm/types/router-config.js +2 -1
  200. package/dist/esm/utils/arkos-env.js +7 -1
  201. package/dist/esm/utils/cli/build.js +208 -5
  202. package/dist/esm/utils/cli/dev.js +147 -3
  203. package/dist/esm/utils/cli/generate.js +120 -1
  204. package/dist/esm/utils/cli/generate.js.map +1 -1
  205. package/dist/esm/utils/cli/index.js +94 -1
  206. package/dist/esm/utils/cli/index.js.map +1 -1
  207. package/dist/esm/utils/cli/prisma-generate.js +114 -0
  208. package/dist/esm/utils/cli/prisma-generate.js.map +1 -0
  209. package/dist/esm/utils/cli/start.js +96 -1
  210. package/dist/esm/utils/cli/utils/cli.helpers.js +16 -1
  211. package/dist/esm/utils/cli/utils/smart-fs-watcher.js +68 -1
  212. package/dist/esm/utils/cli/utils/template-generator/templates/auth-configs-template.js +57 -0
  213. package/dist/esm/utils/cli/utils/template-generator/templates/auth-configs-template.js.map +1 -0
  214. package/dist/esm/utils/cli/utils/template-generator/templates/controller-template.js +14 -0
  215. package/dist/esm/utils/cli/utils/template-generator/templates/controller-template.js.map +1 -0
  216. package/dist/esm/utils/cli/utils/template-generator/templates/hooks-template.js +198 -0
  217. package/dist/esm/utils/cli/utils/template-generator/templates/hooks-template.js.map +1 -0
  218. package/dist/esm/utils/cli/utils/template-generator/templates/middlewares-template.js +283 -0
  219. package/dist/esm/utils/cli/utils/template-generator/templates/middlewares-template.js.map +1 -0
  220. package/dist/esm/utils/cli/utils/template-generator/templates/query-options-template.js +61 -0
  221. package/dist/esm/utils/cli/utils/template-generator/templates/query-options-template.js.map +1 -0
  222. package/dist/esm/utils/cli/utils/template-generator/templates/router-template.js +39 -0
  223. package/dist/esm/utils/cli/utils/template-generator/templates/router-template.js.map +1 -0
  224. package/dist/esm/utils/cli/utils/template-generator/templates/service-template.js +26 -0
  225. package/dist/esm/utils/cli/utils/template-generator/templates/service-template.js.map +1 -0
  226. package/dist/esm/utils/cli/utils/template-generators.js +28 -2
  227. package/dist/esm/utils/cli/utils/template-generators.js.map +1 -1
  228. package/dist/esm/utils/cli/utils/watermark-stamper.js +15 -3
  229. package/dist/esm/utils/dotenv.helpers.js +37 -1
  230. package/dist/esm/utils/dynamic-loader.js +254 -9
  231. package/dist/esm/utils/features/api.features.js +220 -1
  232. package/dist/esm/utils/features/api.features.js.map +1 -1
  233. package/dist/esm/utils/features/change-case.features.js +31 -1
  234. package/dist/esm/utils/features/port-and-host-allocator.js +67 -1
  235. package/dist/esm/utils/helpers/api.features.helpers.js +106 -1
  236. package/dist/esm/utils/helpers/change-case.helpers.js +161 -1
  237. package/dist/esm/utils/helpers/deepmerge.helper.js +113 -1
  238. package/dist/esm/utils/helpers/deepmerge.helper.js.map +1 -1
  239. package/dist/esm/utils/helpers/dynamic-loader.helpers.js +69 -1
  240. package/dist/esm/utils/helpers/fs.helpers.js +48 -1
  241. package/dist/esm/utils/helpers/global.helpers.js +51 -1
  242. package/dist/esm/utils/helpers/prisma.helpers.js +36 -1
  243. package/dist/esm/utils/helpers/prisma.helpers.js.map +1 -1
  244. package/dist/esm/utils/helpers/query-parser.helpers.js +40 -1
  245. package/dist/esm/utils/helpers/routers.helpers.js +29 -1
  246. package/dist/esm/utils/helpers/text.helpers.js +22 -1
  247. package/dist/esm/utils/prisma/prisma-json-schema-generator.js +448 -1
  248. package/dist/esm/utils/prisma/prisma-schema-parser.js +209 -4
  249. package/dist/esm/utils/prisma/types.js +2 -1
  250. package/dist/esm/utils/sheu.js +124 -1
  251. package/dist/esm/utils/sheu.js.map +1 -1
  252. package/dist/esm/utils/validate-dto.js +11 -1
  253. package/dist/esm/utils/validate-schema.js +9 -1
  254. package/dist/types/exports/utils/index.d.ts +2 -2
  255. package/dist/types/modules/base/base.controller.d.ts +2 -0
  256. package/dist/types/modules/base/base.service.d.ts +5 -0
  257. package/dist/types/modules/base/types/base.service.types.d.ts +11 -8
  258. package/dist/types/modules/base/utils/helpers/base.router.helpers.d.ts +2 -0
  259. package/dist/types/modules/debugger/debugger.service.d.ts +7 -0
  260. package/dist/types/types/arkos-config.d.ts +3 -0
  261. package/dist/types/types/index.d.ts +3 -0
  262. package/dist/types/utils/cli/generate.d.ts +2 -0
  263. package/dist/types/utils/cli/prisma-generate.d.ts +1 -0
  264. package/dist/types/utils/features/api.features.d.ts +3 -5
  265. package/dist/types/utils/sheu.d.ts +4 -0
  266. package/package.json +2 -2
  267. package/dist/cjs/utils/cli/utils/template-generator/templates/generate-auth-configs-template.js +0 -21
  268. package/dist/cjs/utils/cli/utils/template-generator/templates/generate-auth-configs-template.js.map +0 -1
  269. package/dist/cjs/utils/cli/utils/template-generator/templates/generate-controller-template.js +0 -12
  270. package/dist/cjs/utils/cli/utils/template-generator/templates/generate-controller-template.js.map +0 -1
  271. package/dist/cjs/utils/cli/utils/template-generator/templates/generate-hooks-template.js +0 -144
  272. package/dist/cjs/utils/cli/utils/template-generator/templates/generate-hooks-template.js.map +0 -1
  273. package/dist/cjs/utils/cli/utils/template-generator/templates/generate-middlewares.js +0 -256
  274. package/dist/cjs/utils/cli/utils/template-generator/templates/generate-middlewares.js.map +0 -1
  275. package/dist/cjs/utils/cli/utils/template-generator/templates/generate-prisma-query-options.js +0 -36
  276. package/dist/cjs/utils/cli/utils/template-generator/templates/generate-prisma-query-options.js.map +0 -1
  277. package/dist/cjs/utils/cli/utils/template-generator/templates/generate-router-template.js +0 -18
  278. package/dist/cjs/utils/cli/utils/template-generator/templates/generate-router-template.js.map +0 -1
  279. package/dist/cjs/utils/cli/utils/template-generator/templates/generate-service-template.js +0 -9
  280. package/dist/cjs/utils/cli/utils/template-generator/templates/generate-service-template.js.map +0 -1
  281. package/dist/esm/utils/cli/utils/template-generator/templates/generate-auth-configs-template.js +0 -21
  282. package/dist/esm/utils/cli/utils/template-generator/templates/generate-auth-configs-template.js.map +0 -1
  283. package/dist/esm/utils/cli/utils/template-generator/templates/generate-controller-template.js +0 -12
  284. package/dist/esm/utils/cli/utils/template-generator/templates/generate-controller-template.js.map +0 -1
  285. package/dist/esm/utils/cli/utils/template-generator/templates/generate-hooks-template.js +0 -144
  286. package/dist/esm/utils/cli/utils/template-generator/templates/generate-hooks-template.js.map +0 -1
  287. package/dist/esm/utils/cli/utils/template-generator/templates/generate-middlewares.js +0 -256
  288. package/dist/esm/utils/cli/utils/template-generator/templates/generate-middlewares.js.map +0 -1
  289. package/dist/esm/utils/cli/utils/template-generator/templates/generate-prisma-query-options.js +0 -36
  290. package/dist/esm/utils/cli/utils/template-generator/templates/generate-prisma-query-options.js.map +0 -1
  291. package/dist/esm/utils/cli/utils/template-generator/templates/generate-router-template.js +0 -18
  292. package/dist/esm/utils/cli/utils/template-generator/templates/generate-router-template.js.map +0 -1
  293. package/dist/esm/utils/cli/utils/template-generator/templates/generate-service-template.js +0 -9
  294. package/dist/esm/utils/cli/utils/template-generator/templates/generate-service-template.js.map +0 -1
  295. /package/dist/types/utils/cli/utils/template-generator/templates/{generate-auth-configs-template.d.ts → auth-configs-template.d.ts} +0 -0
  296. /package/dist/types/utils/cli/utils/template-generator/templates/{generate-controller-template.d.ts → controller-template.d.ts} +0 -0
  297. /package/dist/types/utils/cli/utils/template-generator/templates/{generate-hooks-template.d.ts → hooks-template.d.ts} +0 -0
  298. /package/dist/types/utils/cli/utils/template-generator/templates/{generate-middlewares.d.ts → middlewares-template.d.ts} +0 -0
  299. /package/dist/types/utils/cli/utils/template-generator/templates/{generate-prisma-query-options.d.ts → query-options-template.d.ts} +0 -0
  300. /package/dist/types/utils/cli/utils/template-generator/templates/{generate-router-template.d.ts → router-template.d.ts} +0 -0
  301. /package/dist/types/utils/cli/utils/template-generator/templates/{generate-service-template.d.ts → service-template.d.ts} +0 -0
@@ -1 +1,247 @@
1
- "use strict";var __importDefault=this&&this.__importDefault||function(r){return r&&r.__esModule?r:{default:r}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.authControllerFactory=exports.defaultExcludedUserFields=void 0;const catch_async_1=__importDefault(require("../error-handler/utils/catch-async")),app_error_1=__importDefault(require("../error-handler/utils/app-error")),auth_service_1=__importDefault(require("./auth.service")),base_service_1=require("../base/base.service"),arkos_env_1=__importDefault(require("../../utils/arkos-env")),server_1=require("../../server"),auth_controller_helpers_1=require("./utils/helpers/auth.controller.helpers"),auth_action_service_1=__importDefault(require("./utils/services/auth-action.service"));exports.defaultExcludedUserFields={password:!1};const authControllerFactory=async(r={})=>{const u=new base_service_1.BaseService("user");return{getMe:(0,catch_async_1.default)(async(e,o,a)=>{const s=await u.findOne({id:e.user.id},e.prismaQueryOptions||{});if(Object.keys(exports.defaultExcludedUserFields).forEach(t=>{s&&delete s[t]}),r?.afterGetMe)return e.responseData={data:s},e.responseStatus=200,a();o.status(200).json({data:s})}),updateMe:(0,catch_async_1.default)(async(e,o,a)=>{if("password"in e.body)throw new app_error_1.default("In order to update password use the update-password endpoint.",400,{},"InvalidFieldPassword");const s=await u.updateOne({id:e.user.id},e.body,e.prismaQueryOptions||{});if(Object.keys(exports.defaultExcludedUserFields).forEach(t=>{s&&delete s[t]}),r?.afterUpdateMe)return e.responseData={data:s},e.responseStatus=200,a();o.status(200).json({data:s})}),logout:(0,catch_async_1.default)(async(e,o,a)=>{if(o.cookie("arkos_access_token","no-token",{expires:new Date(Date.now()+10*1e3),httpOnly:!0}),r?.afterLogout)return e.responseData=null,e.responseStatus=204,a();o.status(204).json()}),login:(0,catch_async_1.default)(async(e,o,a)=>{const s=(0,server_1.getArkosConfig)()?.authentication,t=(0,auth_controller_helpers_1.determineUsernameField)(e),n=t.split(".")[t.split(".").length-1],c=e.body[n],{password:d}=e.body;if(!c||!d)return a(new app_error_1.default(`Please provide both ${n} and password`,400));let i;if(t?.includes?.(".")){const p=(0,auth_controller_helpers_1.getNestedValue)(e.body,t);if(p===void 0)return a(new app_error_1.default(`Invalid ${t} provided`,400));i=(0,auth_controller_helpers_1.createPrismaWhereClause)(t,p)}else i={[t]:c};const l=await u.findOne(i,e.prismaQueryOptions||{});if(!l||!await auth_service_1.default.isCorrectPassword(d,l.password))return a(new app_error_1.default(`Incorrect ${n} or password`,401));const f=auth_service_1.default.signJwtToken(l.id),h={expires:new Date(Date.now()+Number((0,auth_controller_helpers_1.toMs)(s?.jwt?.expiresIn||process.env.JWT_EXPIRES_IN||arkos_env_1.default.JWT_EXPIRES_IN))),httpOnly:s?.jwt?.cookie?.httpOnly||process.env.JWT_COOKIE_HTTP_ONLY==="true"||!0,secure:s?.jwt?.cookie?.secure||process.env.JWT_COOKIE_SECURE==="true"||e.secure||e.headers["x-forwarded-proto"]==="https",sameSite:s?.jwt?.cookie?.sameSite||process.env.JWT_COOKIE_SAME_SITE||(process.env.NODE_ENV==="production"?"none":"lax")};if((s?.login?.sendAccessTokenThrough==="response-only"||s?.login?.sendAccessTokenThrough==="both"||!s?.login?.sendAccessTokenThrough)&&(e.responseData={accessToken:f}),(s?.login?.sendAccessTokenThrough==="cookie-only"||s?.login?.sendAccessTokenThrough==="both"||!s?.login?.sendAccessTokenThrough)&&o.cookie("arkos_access_token",f,h),e.accessToken=f,r?.afterLogin)return e.additionalData={user:l},e.responseStatus=200,a();s?.login?.sendAccessTokenThrough==="response-only"||s?.login?.sendAccessTokenThrough==="both"||!s?.login?.sendAccessTokenThrough?o.status(200).json(e.responseData):(s?.login?.sendAccessTokenThrough==="cookie-only"||s?.login?.sendAccessTokenThrough==="both"||!s?.login?.sendAccessTokenThrough)&&o.status(200).send()}),signup:(0,catch_async_1.default)(async(e,o,a)=>{const s=await u.createOne(e.body,e.prismaQueryOptions||{});if(r?.afterSignup)return e.responseData={data:s},e.responseStatus=201,a();Object.keys(exports.defaultExcludedUserFields).forEach(t=>{delete s[t]}),o.status(201).json({data:s})}),deleteMe:(0,catch_async_1.default)(async(e,o,a)=>{const s=e.user.id,t=await u.updateOne({id:s},{deletedSelfAccountAt:new Date().toISOString()},e.prismaQueryOptions||{});if(r?.afterDeleteMe)return e.responseData={data:t},e.responseStatus=200,a();Object.keys(exports.defaultExcludedUserFields).forEach(n=>{delete t[n]}),o.status(200).json({message:"Account deleted successfully"})}),updatePassword:(0,catch_async_1.default)(async(e,o,a)=>{const{currentPassword:s,newPassword:t}=e.body;if(!s||!t)return a(new app_error_1.default("currentPassword and newPassword are required",400));const n=e.user;if(!n||n?.isActive===!1||n?.deletedSelfAccountAt)return a(new app_error_1.default("User not found!",404));const c=await auth_service_1.default.isCorrectPassword(String(s),String(n.password)),d=(0,server_1.getArkosConfig)(),i=d?.authentication;if(!c)return a(new app_error_1.default("Current password is incorrect.",400));if(!auth_service_1.default.isPasswordStrong(String(t))&&!d?.validation)return a(new app_error_1.default(i?.passwordValidation?.message||"The new password must contain at least one uppercase letter, one lowercase letter, and one number",400));if(await u.updateOne({id:n.id},{password:await auth_service_1.default.hashPassword(t),passwordChangedAt:new Date(Date.now())}),r?.afterUpdatePassword)return e.additionalData={user:n},e.responseData={status:"success",message:"Password updated successfully!"},e.responseStatus=200,a();o.status(200).json({status:"success",message:"Password updated successfully!"})}),findManyAuthAction:(0,catch_async_1.default)(async(e,o)=>{const a=(0,server_1.getArkosConfig)(),s=auth_action_service_1.default.getAll()?.map(t=>(a?.authentication?.mode==="dynamic"&&delete t?.roles,t));o.json({total:s.length,results:s.length,data:s})}),findOneAuthAction:(0,catch_async_1.default)(async(e,o)=>{const a=(0,server_1.getArkosConfig)(),s=e.params?.resourceName;if(!s)throw new app_error_1.default("Please provide a resoureName",400);const t=auth_action_service_1.default.getByResource(e.params?.resourceName)?.map(n=>(a?.authentication?.mode==="dynamic"&&delete n?.roles,n));if(!t)throw new app_error_1.default(`No auth action with resource name ${s}`,404);o.json({total:t.length,results:t.length,data:t})})}};exports.authControllerFactory=authControllerFactory;
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.authControllerFactory = exports.defaultExcludedUserFields = void 0;
7
+ const catch_async_1 = __importDefault(require("../error-handler/utils/catch-async"));
8
+ const app_error_1 = __importDefault(require("../error-handler/utils/app-error"));
9
+ const auth_service_1 = __importDefault(require("./auth.service"));
10
+ const base_service_1 = require("../base/base.service");
11
+ const arkos_env_1 = __importDefault(require("../../utils/arkos-env"));
12
+ const server_1 = require("../../server");
13
+ const auth_controller_helpers_1 = require("./utils/helpers/auth.controller.helpers");
14
+ const auth_action_service_1 = __importDefault(require("./utils/services/auth-action.service"));
15
+ exports.defaultExcludedUserFields = {
16
+ password: false,
17
+ };
18
+ const authControllerFactory = async (interceptors = {}) => {
19
+ const userService = new base_service_1.BaseService("user");
20
+ return {
21
+ getMe: (0, catch_async_1.default)(async (req, res, next) => {
22
+ const user = (await userService.findOne({ id: req.user.id }, req.prismaQueryOptions || {}));
23
+ Object.keys(exports.defaultExcludedUserFields).forEach((key) => {
24
+ if (user)
25
+ delete user[key];
26
+ });
27
+ if (interceptors?.afterGetMe) {
28
+ req.responseData = { data: user };
29
+ res.locals.data = { data: user };
30
+ req.responseStatus = 200;
31
+ res.locals.status = 200;
32
+ return next();
33
+ }
34
+ res.status(200).json({ data: user });
35
+ }),
36
+ updateMe: (0, catch_async_1.default)(async (req, res, next) => {
37
+ if ("password" in req.body)
38
+ throw new app_error_1.default("In order to update password use the update-password endpoint.", 400, {}, "InvalidFieldPassword");
39
+ const user = (await userService.updateOne({ id: req.user.id }, req.body, req.prismaQueryOptions || {}));
40
+ Object.keys(exports.defaultExcludedUserFields).forEach((key) => {
41
+ if (user)
42
+ delete user[key];
43
+ });
44
+ if (interceptors?.afterUpdateMe) {
45
+ req.responseData = { data: user };
46
+ res.locals.data = { data: user };
47
+ req.responseStatus = 200;
48
+ res.locals.status = 200;
49
+ return next();
50
+ }
51
+ res.status(200).json({ data: user });
52
+ }),
53
+ logout: (0, catch_async_1.default)(async (req, res, next) => {
54
+ res.cookie("arkos_access_token", "no-token", {
55
+ expires: new Date(Date.now() + 10 * 1000),
56
+ httpOnly: true,
57
+ });
58
+ if (interceptors?.afterLogout) {
59
+ req.responseData = null;
60
+ res.locals.data = null;
61
+ req.responseStatus = 204;
62
+ res.locals.status = 204;
63
+ return next();
64
+ }
65
+ res.status(204).json();
66
+ }),
67
+ login: (0, catch_async_1.default)(async (req, res, next) => {
68
+ const authConfigs = (0, server_1.getArkosConfig)()?.authentication;
69
+ const usernameField = (0, auth_controller_helpers_1.determineUsernameField)(req);
70
+ const lastField = usernameField.split(".")[usernameField.split(".").length - 1];
71
+ const usernameValue = req.body[lastField];
72
+ const { password } = req.body;
73
+ if (!usernameValue || !password)
74
+ return next(new app_error_1.default(`Please provide both ${lastField} and password`, 400));
75
+ let whereClause;
76
+ if (usernameField?.includes?.(".")) {
77
+ const valueToFind = (0, auth_controller_helpers_1.getNestedValue)(req.body, usernameField);
78
+ if (valueToFind === undefined) {
79
+ return next(new app_error_1.default(`Invalid ${usernameField} provided`, 400));
80
+ }
81
+ whereClause = (0, auth_controller_helpers_1.createPrismaWhereClause)(usernameField, valueToFind);
82
+ }
83
+ else {
84
+ whereClause = { [usernameField]: usernameValue };
85
+ }
86
+ const user = (await userService.findOne(whereClause, req.prismaQueryOptions || {}));
87
+ if (!user ||
88
+ !(await auth_service_1.default.isCorrectPassword(password, user.password))) {
89
+ return next(new app_error_1.default(`Incorrect ${lastField} or password`, 401));
90
+ }
91
+ const token = auth_service_1.default.signJwtToken(user.id);
92
+ const cookieOptions = {
93
+ expires: new Date(Date.now() +
94
+ Number((0, auth_controller_helpers_1.toMs)(authConfigs?.jwt?.expiresIn ||
95
+ process.env.JWT_EXPIRES_IN ||
96
+ arkos_env_1.default.JWT_EXPIRES_IN))),
97
+ httpOnly: authConfigs?.jwt?.cookie?.httpOnly ||
98
+ process.env.JWT_COOKIE_HTTP_ONLY === "true" ||
99
+ true,
100
+ secure: authConfigs?.jwt?.cookie?.secure ||
101
+ process.env.JWT_COOKIE_SECURE === "true" ||
102
+ req.secure ||
103
+ req.headers["x-forwarded-proto"] === "https",
104
+ sameSite: authConfigs?.jwt?.cookie?.sameSite ||
105
+ process.env.JWT_COOKIE_SAME_SITE ||
106
+ (process.env.NODE_ENV === "production" ? "none" : "lax"),
107
+ };
108
+ if (authConfigs?.login?.sendAccessTokenThrough === "response-only" ||
109
+ authConfigs?.login?.sendAccessTokenThrough === "both" ||
110
+ !authConfigs?.login?.sendAccessTokenThrough) {
111
+ req.responseData = { accessToken: token };
112
+ res.locals.data = { accessToken: token };
113
+ }
114
+ if (authConfigs?.login?.sendAccessTokenThrough === "cookie-only" ||
115
+ authConfigs?.login?.sendAccessTokenThrough === "both" ||
116
+ !authConfigs?.login?.sendAccessTokenThrough)
117
+ res.cookie("arkos_access_token", token, cookieOptions);
118
+ req.accessToken = token;
119
+ if (interceptors?.afterLogin) {
120
+ req.additionalData = { user };
121
+ res.locals.additional = { user };
122
+ req.responseStatus = 200;
123
+ res.locals.status = 200;
124
+ return next();
125
+ }
126
+ if (authConfigs?.login?.sendAccessTokenThrough === "response-only" ||
127
+ authConfigs?.login?.sendAccessTokenThrough === "both" ||
128
+ !authConfigs?.login?.sendAccessTokenThrough) {
129
+ res.status(200).json(req.responseData);
130
+ }
131
+ else if (authConfigs?.login?.sendAccessTokenThrough === "cookie-only" ||
132
+ authConfigs?.login?.sendAccessTokenThrough === "both" ||
133
+ !authConfigs?.login?.sendAccessTokenThrough)
134
+ res.status(200).send();
135
+ }),
136
+ signup: (0, catch_async_1.default)(async (req, res, next) => {
137
+ const user = (await userService.createOne(req.body, req.prismaQueryOptions || {}));
138
+ if (interceptors?.afterSignup) {
139
+ req.responseData = { data: user };
140
+ res.locals.data = { data: user };
141
+ req.responseStatus = 201;
142
+ res.locals.status = 201;
143
+ return next();
144
+ }
145
+ Object.keys(exports.defaultExcludedUserFields).forEach((key) => {
146
+ delete user[key];
147
+ });
148
+ res.status(201).json({ data: user });
149
+ }),
150
+ deleteMe: (0, catch_async_1.default)(async (req, res, next) => {
151
+ const userId = req.user.id;
152
+ const updatedUser = (await userService.updateOne({ id: userId }, {
153
+ deletedSelfAccountAt: new Date().toISOString(),
154
+ }, req.prismaQueryOptions || {}));
155
+ if (interceptors?.afterDeleteMe) {
156
+ req.responseData = { data: updatedUser };
157
+ res.locals.data = { data: updatedUser };
158
+ req.responseStatus = 200;
159
+ res.locals.status = 200;
160
+ return next();
161
+ }
162
+ Object.keys(exports.defaultExcludedUserFields).forEach((key) => {
163
+ delete updatedUser[key];
164
+ });
165
+ res.status(200).json({
166
+ message: "Account deleted successfully",
167
+ });
168
+ }),
169
+ updatePassword: (0, catch_async_1.default)(async (req, res, next) => {
170
+ const { currentPassword, newPassword } = req.body;
171
+ if (!currentPassword || !newPassword)
172
+ return next(new app_error_1.default("currentPassword and newPassword are required", 400));
173
+ const user = req.user;
174
+ if (!user || user?.isActive === false || user?.deletedSelfAccountAt)
175
+ return next(new app_error_1.default("User not found!", 404));
176
+ const isPasswordCorrect = await auth_service_1.default.isCorrectPassword(String(currentPassword), String(user.password));
177
+ const configs = (0, server_1.getArkosConfig)();
178
+ const initAuthConfigs = configs?.authentication;
179
+ if (!isPasswordCorrect)
180
+ return next(new app_error_1.default("Current password is incorrect.", 400));
181
+ if (!auth_service_1.default.isPasswordStrong(String(newPassword)) &&
182
+ !configs?.validation) {
183
+ return next(new app_error_1.default(initAuthConfigs?.passwordValidation?.message ||
184
+ "The new password must contain at least one uppercase letter, one lowercase letter, and one number", 400));
185
+ }
186
+ await userService.updateOne({ id: user.id }, {
187
+ password: await auth_service_1.default.hashPassword(newPassword),
188
+ passwordChangedAt: new Date(Date.now()),
189
+ });
190
+ if (interceptors?.afterUpdatePassword) {
191
+ req.additionalData = {
192
+ user,
193
+ };
194
+ req.responseData = {
195
+ status: "success",
196
+ message: "Password updated successfully!",
197
+ };
198
+ res.locals.data = {
199
+ status: "success",
200
+ message: "Password updated successfully!",
201
+ };
202
+ req.responseStatus = 200;
203
+ res.locals.status = 200;
204
+ return next();
205
+ }
206
+ res.status(200).json({
207
+ status: "success",
208
+ message: "Password updated successfully!",
209
+ });
210
+ }),
211
+ findManyAuthAction: (0, catch_async_1.default)(async (_, res) => {
212
+ const arkosConfig = (0, server_1.getArkosConfig)();
213
+ const authActions = auth_action_service_1.default.getAll()?.map((authAction) => {
214
+ if (arkosConfig?.authentication?.mode === "dynamic")
215
+ delete authAction?.roles;
216
+ return authAction;
217
+ });
218
+ res.json({
219
+ total: authActions.length,
220
+ results: authActions.length,
221
+ data: authActions,
222
+ });
223
+ }),
224
+ findOneAuthAction: (0, catch_async_1.default)(async (req, res) => {
225
+ const arkosConfig = (0, server_1.getArkosConfig)();
226
+ const resourceName = req.params?.resourceName;
227
+ if (!resourceName)
228
+ throw new app_error_1.default(`Please provide a resoureName`, 400);
229
+ const authActions = auth_action_service_1.default
230
+ .getByResource(req.params?.resourceName)
231
+ ?.map((authAction) => {
232
+ if (arkosConfig?.authentication?.mode === "dynamic")
233
+ delete authAction?.roles;
234
+ return authAction;
235
+ });
236
+ if (!authActions)
237
+ throw new app_error_1.default(`No auth action with resource name ${resourceName}`, 404);
238
+ res.json({
239
+ total: authActions.length,
240
+ results: authActions.length,
241
+ data: authActions,
242
+ });
243
+ }),
244
+ };
245
+ };
246
+ exports.authControllerFactory = authControllerFactory;
247
+ //# sourceMappingURL=auth.controller.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"auth.controller.js","sourceRoot":"","sources":["../../../../src/modules/auth/auth.controller.ts"],"names":[],"mappings":"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","sourcesContent":["import catchAsync from \"../error-handler/utils/catch-async\";\nimport AppError from \"../error-handler/utils/app-error\";\nimport { CookieOptions } from \"express\";\nimport { ArkosRequest, ArkosResponse, ArkosNextFunction } from \"../../types\";\nimport authService from \"./auth.service\";\nimport { BaseService } from \"../base/base.service\";\nimport { User } from \"../../types\";\nimport arkosEnv from \"../../utils/arkos-env\";\nimport { getArkosConfig } from \"../../server\";\nimport {\n createPrismaWhereClause,\n determineUsernameField,\n getNestedValue,\n MsDuration,\n toMs,\n} from \"./utils/helpers/auth.controller.helpers\";\nimport authActionService from \"./utils/services/auth-action.service\";\n\n/**\n * Default fields to exclude from user object when returning to client\n */\nexport const defaultExcludedUserFields = {\n password: false,\n};\n\n/**\n * Factory function to create authentication controller with configurable interceptors\n *\n * @param interceptors - Optional middleware functions to execute after controller actions\n * @returns An object containing all authentication controller methods\n */\nexport const authControllerFactory = async (interceptors: any = {}) => {\n const userService = new BaseService(\"user\");\n\n return {\n /**\n * Retrieves the current authenticated user's information\n */\n getMe: catchAsync(\n async (\n req: ArkosRequest,\n res: ArkosResponse,\n next: ArkosNextFunction\n ) => {\n const user = (await userService.findOne(\n { id: req.user!.id },\n req.prismaQueryOptions || {}\n )) as Record<string, any>;\n\n Object.keys(defaultExcludedUserFields).forEach((key) => {\n if (user) delete user[key as keyof User];\n });\n\n if (interceptors?.afterGetMe) {\n req.responseData = { data: user };\n req.responseStatus = 200;\n return next();\n }\n\n res.status(200).json({ data: user });\n }\n ),\n\n /**\n * Updates the current authenticated user's information\n */\n updateMe: catchAsync(\n async (\n req: ArkosRequest,\n res: ArkosResponse,\n next: ArkosNextFunction\n ) => {\n if (\"password\" in req.body)\n throw new AppError(\n \"In order to update password use the update-password endpoint.\",\n 400,\n {},\n \"InvalidFieldPassword\"\n );\n\n const user = (await userService.updateOne(\n { id: req.user!.id },\n req.body,\n req.prismaQueryOptions || {}\n )) as Record<string, any>;\n\n Object.keys(defaultExcludedUserFields).forEach((key) => {\n if (user) delete user[key as keyof User];\n });\n\n if (interceptors?.afterUpdateMe) {\n req.responseData = { data: user };\n req.responseStatus = 200;\n return next();\n }\n\n res.status(200).json({ data: user });\n }\n ),\n\n /**\n * Logs out the current user by invalidating their access token cookie\n */\n logout: catchAsync(\n async (\n req: ArkosRequest,\n res: ArkosResponse,\n next: ArkosNextFunction\n ) => {\n res.cookie(\"arkos_access_token\", \"no-token\", {\n expires: new Date(Date.now() + 10 * 1000),\n httpOnly: true,\n });\n\n if (interceptors?.afterLogout) {\n req.responseData = null;\n req.responseStatus = 204;\n return next();\n }\n\n res.status(204).json();\n }\n ),\n\n /**\n * Authenticates a user using configurable username field and password\n * Username field can be specified in query parameter or config\n *\n * Supports nested fields and array queries (e.g., \"profile.nickname\", \"phones.some.number\")\n */\n login: catchAsync(\n async (\n req: ArkosRequest,\n res: ArkosResponse,\n next: ArkosNextFunction\n ) => {\n const authConfigs = getArkosConfig()?.authentication;\n\n const usernameField = determineUsernameField(req);\n\n // For the error message, we only care about the top-level field name\n const lastField =\n usernameField.split(\".\")[usernameField.split(\".\").length - 1];\n\n const usernameValue = req.body[lastField];\n\n const { password } = req.body;\n\n if (!usernameValue || !password)\n return next(\n new AppError(`Please provide both ${lastField} and password`, 400)\n );\n\n // Create appropriate where clause for the query\n let whereClause: Record<string, any>;\n\n if (usernameField?.includes?.(\".\")) {\n // For nested paths, we need to extract the actual value to search for\n const valueToFind = getNestedValue(req.body, usernameField);\n if (valueToFind === undefined) {\n return next(new AppError(`Invalid ${usernameField} provided`, 400));\n }\n whereClause = createPrismaWhereClause(usernameField, valueToFind);\n } else {\n // Simple field case\n whereClause = { [usernameField]: usernameValue };\n }\n\n // Use findFirst instead of findUnique for complex queries\n const user = (await userService.findOne(\n whereClause,\n req.prismaQueryOptions || {}\n )) as Record<string, any>;\n\n if (\n !user ||\n !(await authService.isCorrectPassword(password, user.password))\n ) {\n return next(new AppError(`Incorrect ${lastField} or password`, 401));\n }\n\n const token = authService.signJwtToken(user.id!);\n\n const cookieOptions: CookieOptions = {\n expires: new Date(\n Date.now() +\n Number(\n toMs(\n authConfigs?.jwt?.expiresIn ||\n (process.env.JWT_EXPIRES_IN as MsDuration) ||\n (arkosEnv.JWT_EXPIRES_IN as MsDuration)\n )\n )\n ),\n httpOnly:\n authConfigs?.jwt?.cookie?.httpOnly ||\n process.env.JWT_COOKIE_HTTP_ONLY === \"true\" ||\n true,\n secure:\n authConfigs?.jwt?.cookie?.secure ||\n process.env.JWT_COOKIE_SECURE === \"true\" ||\n req.secure ||\n req.headers[\"x-forwarded-proto\"] === \"https\",\n sameSite:\n authConfigs?.jwt?.cookie?.sameSite ||\n (process.env.JWT_COOKIE_SAME_SITE as\n | \"none\"\n | \"lax\"\n | \"strict\"\n | undefined) ||\n (process.env.NODE_ENV === \"production\" ? \"none\" : \"lax\"),\n };\n\n if (\n authConfigs?.login?.sendAccessTokenThrough === \"response-only\" ||\n authConfigs?.login?.sendAccessTokenThrough === \"both\" ||\n !authConfigs?.login?.sendAccessTokenThrough\n ) {\n req.responseData = { accessToken: token };\n }\n\n if (\n authConfigs?.login?.sendAccessTokenThrough === \"cookie-only\" ||\n authConfigs?.login?.sendAccessTokenThrough === \"both\" ||\n !authConfigs?.login?.sendAccessTokenThrough\n )\n res.cookie(\"arkos_access_token\", token, cookieOptions);\n\n req.accessToken = token;\n\n if (interceptors?.afterLogin) {\n req.additionalData = { user };\n req.responseStatus = 200;\n return next();\n }\n\n if (\n authConfigs?.login?.sendAccessTokenThrough === \"response-only\" ||\n authConfigs?.login?.sendAccessTokenThrough === \"both\" ||\n !authConfigs?.login?.sendAccessTokenThrough\n ) {\n res.status(200).json(req.responseData);\n } else if (\n authConfigs?.login?.sendAccessTokenThrough === \"cookie-only\" ||\n authConfigs?.login?.sendAccessTokenThrough === \"both\" ||\n !authConfigs?.login?.sendAccessTokenThrough\n )\n res.status(200).send();\n }\n ),\n\n /**\n * Creates a new user account using the userService\n */\n signup: catchAsync(\n async (\n req: ArkosRequest,\n res: ArkosResponse,\n next: ArkosNextFunction\n ) => {\n const user = (await userService.createOne(\n req.body,\n req.prismaQueryOptions || {}\n )) as Record<string, any>;\n\n if (interceptors?.afterSignup) {\n req.responseData = { data: user };\n req.responseStatus = 201;\n return next();\n }\n\n Object.keys(defaultExcludedUserFields).forEach((key) => {\n delete user[key as keyof User];\n });\n\n res.status(201).json({ data: user });\n }\n ),\n /**\n * Marks user account as self-deleted by setting deletedSelfAccountAt timestamp\n */\n deleteMe: catchAsync(\n async (\n req: ArkosRequest,\n res: ArkosResponse,\n next: ArkosNextFunction\n ) => {\n const userId = req.user!.id; // Assuming the authenticated user's ID is available in req.user\n\n const updatedUser = (await userService.updateOne(\n { id: userId },\n {\n deletedSelfAccountAt: new Date().toISOString(),\n },\n req.prismaQueryOptions || {}\n )) as Record<string, any>;\n\n if (interceptors?.afterDeleteMe) {\n req.responseData = { data: updatedUser };\n req.responseStatus = 200;\n return next();\n }\n\n Object.keys(defaultExcludedUserFields).forEach((key) => {\n delete updatedUser[key as keyof User];\n });\n\n res.status(200).json({\n message: \"Account deleted successfully\",\n });\n }\n ),\n\n /**\n * Updates the password of the authenticated user\n */\n updatePassword: catchAsync(\n async (\n req: ArkosRequest,\n res: ArkosResponse,\n next: ArkosNextFunction\n ) => {\n const { currentPassword, newPassword } = req.body;\n\n if (!currentPassword || !newPassword)\n return next(\n new AppError(\"currentPassword and newPassword are required\", 400)\n );\n\n const user = req.user;\n\n if (!user || user?.isActive === false || user?.deletedSelfAccountAt)\n return next(new AppError(\"User not found!\", 404));\n\n // Check if the current password is correct\n const isPasswordCorrect = await authService.isCorrectPassword(\n String(currentPassword),\n String(user.password)\n );\n\n const configs = getArkosConfig();\n const initAuthConfigs = configs?.authentication;\n\n if (!isPasswordCorrect)\n return next(new AppError(\"Current password is incorrect.\", 400));\n\n // Check password strength (optional but recommended)\n if (\n !authService.isPasswordStrong(String(newPassword)) &&\n !configs?.validation\n ) {\n return next(\n new AppError(\n initAuthConfigs?.passwordValidation?.message ||\n \"The new password must contain at least one uppercase letter, one lowercase letter, and one number\",\n 400\n )\n );\n }\n\n // Update the password\n await userService.updateOne(\n { id: user.id },\n {\n password: await authService.hashPassword(newPassword),\n passwordChangedAt: new Date(Date.now()),\n }\n );\n\n if (interceptors?.afterUpdatePassword) {\n req.additionalData = {\n user,\n };\n req.responseData = {\n status: \"success\",\n message: \"Password updated successfully!\",\n };\n req.responseStatus = 200;\n return next();\n }\n\n res.status(200).json({\n status: \"success\",\n message: \"Password updated successfully!\",\n });\n }\n ),\n\n findManyAuthAction: catchAsync(\n async (_: ArkosRequest, res: ArkosResponse) => {\n const arkosConfig = getArkosConfig();\n const authActions = authActionService.getAll()?.map((authAction) => {\n if (arkosConfig?.authentication?.mode === \"dynamic\")\n delete (authAction as any)?.roles;\n return authAction;\n });\n\n res.json({\n total: authActions.length,\n results: authActions.length,\n data: authActions,\n });\n }\n ),\n\n findOneAuthAction: catchAsync(\n async (req: ArkosRequest, res: ArkosResponse) => {\n const arkosConfig = getArkosConfig();\n const resourceName = req.params?.resourceName;\n\n if (!resourceName)\n throw new AppError(`Please provide a resoureName`, 400);\n\n const authActions = authActionService\n .getByResource(req.params?.resourceName)\n ?.map((authAction) => {\n if (arkosConfig?.authentication?.mode === \"dynamic\")\n delete (authAction as any)?.roles;\n return authAction;\n });\n\n if (!authActions)\n throw new AppError(\n `No auth action with resource name ${resourceName}`,\n 404\n );\n\n res.json({\n total: authActions.length,\n results: authActions.length,\n data: authActions,\n });\n }\n ),\n };\n};\n"]}
1
+ {"version":3,"file":"auth.controller.js","sourceRoot":"","sources":["../../../../src/modules/auth/auth.controller.ts"],"names":[],"mappings":"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","sourcesContent":["import catchAsync from \"../error-handler/utils/catch-async\";\nimport AppError from \"../error-handler/utils/app-error\";\nimport { CookieOptions } from \"express\";\nimport { ArkosRequest, ArkosResponse, ArkosNextFunction } from \"../../types\";\nimport authService from \"./auth.service\";\nimport { BaseService } from \"../base/base.service\";\nimport { User } from \"../../types\";\nimport arkosEnv from \"../../utils/arkos-env\";\nimport { getArkosConfig } from \"../../server\";\nimport {\n createPrismaWhereClause,\n determineUsernameField,\n getNestedValue,\n MsDuration,\n toMs,\n} from \"./utils/helpers/auth.controller.helpers\";\nimport authActionService from \"./utils/services/auth-action.service\";\n\n/**\n * Default fields to exclude from user object when returning to client\n */\nexport const defaultExcludedUserFields = {\n password: false,\n};\n\n/**\n * Factory function to create authentication controller with configurable interceptors\n *\n * @param interceptors - Optional middleware functions to execute after controller actions\n * @returns An object containing all authentication controller methods\n */\nexport const authControllerFactory = async (interceptors: any = {}) => {\n const userService = new BaseService(\"user\");\n\n return {\n /**\n * Retrieves the current authenticated user's information\n */\n getMe: catchAsync(\n async (\n req: ArkosRequest,\n res: ArkosResponse,\n next: ArkosNextFunction\n ) => {\n const user = (await userService.findOne(\n { id: req.user!.id },\n req.prismaQueryOptions || {}\n )) as Record<string, any>;\n\n Object.keys(defaultExcludedUserFields).forEach((key) => {\n if (user) delete user[key as keyof User];\n });\n\n if (interceptors?.afterGetMe) {\n req.responseData = { data: user };\n res.locals.data = { data: user };\n req.responseStatus = 200;\n res.locals.status = 200;\n return next();\n }\n\n res.status(200).json({ data: user });\n }\n ),\n\n /**\n * Updates the current authenticated user's information\n */\n updateMe: catchAsync(\n async (\n req: ArkosRequest,\n res: ArkosResponse,\n next: ArkosNextFunction\n ) => {\n if (\"password\" in req.body)\n throw new AppError(\n \"In order to update password use the update-password endpoint.\",\n 400,\n {},\n \"InvalidFieldPassword\"\n );\n\n const user = (await userService.updateOne(\n { id: req.user!.id },\n req.body,\n req.prismaQueryOptions || {}\n )) as Record<string, any>;\n\n Object.keys(defaultExcludedUserFields).forEach((key) => {\n if (user) delete user[key as keyof User];\n });\n\n if (interceptors?.afterUpdateMe) {\n req.responseData = { data: user };\n res.locals.data = { data: user };\n req.responseStatus = 200;\n res.locals.status = 200;\n return next();\n }\n\n res.status(200).json({ data: user });\n }\n ),\n\n /**\n * Logs out the current user by invalidating their access token cookie\n */\n logout: catchAsync(\n async (\n req: ArkosRequest,\n res: ArkosResponse,\n next: ArkosNextFunction\n ) => {\n res.cookie(\"arkos_access_token\", \"no-token\", {\n expires: new Date(Date.now() + 10 * 1000),\n httpOnly: true,\n });\n\n if (interceptors?.afterLogout) {\n req.responseData = null;\n res.locals.data = null;\n req.responseStatus = 204;\n res.locals.status = 204;\n return next();\n }\n\n res.status(204).json();\n }\n ),\n\n /**\n * Authenticates a user using configurable username field and password\n * Username field can be specified in query parameter or config\n *\n * Supports nested fields and array queries (e.g., \"profile.nickname\", \"phones.some.number\")\n */\n login: catchAsync(\n async (\n req: ArkosRequest,\n res: ArkosResponse,\n next: ArkosNextFunction\n ) => {\n const authConfigs = getArkosConfig()?.authentication;\n\n const usernameField = determineUsernameField(req);\n\n // For the error message, we only care about the top-level field name\n const lastField =\n usernameField.split(\".\")[usernameField.split(\".\").length - 1];\n\n const usernameValue = req.body[lastField];\n\n const { password } = req.body;\n\n if (!usernameValue || !password)\n return next(\n new AppError(`Please provide both ${lastField} and password`, 400)\n );\n\n // Create appropriate where clause for the query\n let whereClause: Record<string, any>;\n\n if (usernameField?.includes?.(\".\")) {\n // For nested paths, we need to extract the actual value to search for\n const valueToFind = getNestedValue(req.body, usernameField);\n if (valueToFind === undefined) {\n return next(new AppError(`Invalid ${usernameField} provided`, 400));\n }\n whereClause = createPrismaWhereClause(usernameField, valueToFind);\n } else {\n // Simple field case\n whereClause = { [usernameField]: usernameValue };\n }\n\n // Use findFirst instead of findUnique for complex queries\n const user = (await userService.findOne(\n whereClause,\n req.prismaQueryOptions || {}\n )) as Record<string, any>;\n\n if (\n !user ||\n !(await authService.isCorrectPassword(password, user.password))\n ) {\n return next(new AppError(`Incorrect ${lastField} or password`, 401));\n }\n\n const token = authService.signJwtToken(user.id!);\n\n const cookieOptions: CookieOptions = {\n expires: new Date(\n Date.now() +\n Number(\n toMs(\n authConfigs?.jwt?.expiresIn ||\n (process.env.JWT_EXPIRES_IN as MsDuration) ||\n (arkosEnv.JWT_EXPIRES_IN as MsDuration)\n )\n )\n ),\n httpOnly:\n authConfigs?.jwt?.cookie?.httpOnly ||\n process.env.JWT_COOKIE_HTTP_ONLY === \"true\" ||\n true,\n secure:\n authConfigs?.jwt?.cookie?.secure ||\n process.env.JWT_COOKIE_SECURE === \"true\" ||\n req.secure ||\n req.headers[\"x-forwarded-proto\"] === \"https\",\n sameSite:\n authConfigs?.jwt?.cookie?.sameSite ||\n (process.env.JWT_COOKIE_SAME_SITE as\n | \"none\"\n | \"lax\"\n | \"strict\"\n | undefined) ||\n (process.env.NODE_ENV === \"production\" ? \"none\" : \"lax\"),\n };\n\n if (\n authConfigs?.login?.sendAccessTokenThrough === \"response-only\" ||\n authConfigs?.login?.sendAccessTokenThrough === \"both\" ||\n !authConfigs?.login?.sendAccessTokenThrough\n ) {\n req.responseData = { accessToken: token };\n res.locals.data = { accessToken: token };\n }\n\n if (\n authConfigs?.login?.sendAccessTokenThrough === \"cookie-only\" ||\n authConfigs?.login?.sendAccessTokenThrough === \"both\" ||\n !authConfigs?.login?.sendAccessTokenThrough\n )\n res.cookie(\"arkos_access_token\", token, cookieOptions);\n\n req.accessToken = token;\n\n if (interceptors?.afterLogin) {\n req.additionalData = { user };\n res.locals.additional = { user };\n req.responseStatus = 200;\n res.locals.status = 200;\n return next();\n }\n\n if (\n authConfigs?.login?.sendAccessTokenThrough === \"response-only\" ||\n authConfigs?.login?.sendAccessTokenThrough === \"both\" ||\n !authConfigs?.login?.sendAccessTokenThrough\n ) {\n res.status(200).json(req.responseData);\n } else if (\n authConfigs?.login?.sendAccessTokenThrough === \"cookie-only\" ||\n authConfigs?.login?.sendAccessTokenThrough === \"both\" ||\n !authConfigs?.login?.sendAccessTokenThrough\n )\n res.status(200).send();\n }\n ),\n\n /**\n * Creates a new user account using the userService\n */\n signup: catchAsync(\n async (\n req: ArkosRequest,\n res: ArkosResponse,\n next: ArkosNextFunction\n ) => {\n const user = (await userService.createOne(\n req.body,\n req.prismaQueryOptions || {}\n )) as Record<string, any>;\n\n if (interceptors?.afterSignup) {\n req.responseData = { data: user };\n res.locals.data = { data: user };\n req.responseStatus = 201;\n res.locals.status = 201;\n return next();\n }\n\n Object.keys(defaultExcludedUserFields).forEach((key) => {\n delete user[key as keyof User];\n });\n\n res.status(201).json({ data: user });\n }\n ),\n /**\n * Marks user account as self-deleted by setting deletedSelfAccountAt timestamp\n */\n deleteMe: catchAsync(\n async (\n req: ArkosRequest,\n res: ArkosResponse,\n next: ArkosNextFunction\n ) => {\n const userId = req.user!.id; // Assuming the authenticated user's ID is available in req.user\n\n const updatedUser = (await userService.updateOne(\n { id: userId },\n {\n deletedSelfAccountAt: new Date().toISOString(),\n },\n req.prismaQueryOptions || {}\n )) as Record<string, any>;\n\n if (interceptors?.afterDeleteMe) {\n req.responseData = { data: updatedUser };\n res.locals.data = { data: updatedUser };\n req.responseStatus = 200;\n res.locals.status = 200;\n return next();\n }\n\n Object.keys(defaultExcludedUserFields).forEach((key) => {\n delete updatedUser[key as keyof User];\n });\n\n res.status(200).json({\n message: \"Account deleted successfully\",\n });\n }\n ),\n\n /**\n * Updates the password of the authenticated user\n */\n updatePassword: catchAsync(\n async (\n req: ArkosRequest,\n res: ArkosResponse,\n next: ArkosNextFunction\n ) => {\n const { currentPassword, newPassword } = req.body;\n\n if (!currentPassword || !newPassword)\n return next(\n new AppError(\"currentPassword and newPassword are required\", 400)\n );\n\n const user = req.user;\n\n if (!user || user?.isActive === false || user?.deletedSelfAccountAt)\n return next(new AppError(\"User not found!\", 404));\n\n // Check if the current password is correct\n const isPasswordCorrect = await authService.isCorrectPassword(\n String(currentPassword),\n String(user.password)\n );\n\n const configs = getArkosConfig();\n const initAuthConfigs = configs?.authentication;\n\n if (!isPasswordCorrect)\n return next(new AppError(\"Current password is incorrect.\", 400));\n\n // Check password strength (optional but recommended)\n if (\n !authService.isPasswordStrong(String(newPassword)) &&\n !configs?.validation\n ) {\n return next(\n new AppError(\n initAuthConfigs?.passwordValidation?.message ||\n \"The new password must contain at least one uppercase letter, one lowercase letter, and one number\",\n 400\n )\n );\n }\n\n // Update the password\n await userService.updateOne(\n { id: user.id },\n {\n password: await authService.hashPassword(newPassword),\n passwordChangedAt: new Date(Date.now()),\n }\n );\n\n if (interceptors?.afterUpdatePassword) {\n req.additionalData = {\n user,\n };\n req.responseData = {\n status: \"success\",\n message: \"Password updated successfully!\",\n };\n res.locals.data = {\n status: \"success\",\n message: \"Password updated successfully!\",\n };\n req.responseStatus = 200;\n res.locals.status = 200;\n return next();\n }\n\n res.status(200).json({\n status: \"success\",\n message: \"Password updated successfully!\",\n });\n }\n ),\n\n findManyAuthAction: catchAsync(\n async (_: ArkosRequest, res: ArkosResponse) => {\n const arkosConfig = getArkosConfig();\n const authActions = authActionService.getAll()?.map((authAction) => {\n if (arkosConfig?.authentication?.mode === \"dynamic\")\n delete (authAction as any)?.roles;\n return authAction;\n });\n\n res.json({\n total: authActions.length,\n results: authActions.length,\n data: authActions,\n });\n }\n ),\n\n findOneAuthAction: catchAsync(\n async (req: ArkosRequest, res: ArkosResponse) => {\n const arkosConfig = getArkosConfig();\n const resourceName = req.params?.resourceName;\n\n if (!resourceName)\n throw new AppError(`Please provide a resoureName`, 400);\n\n const authActions = authActionService\n .getByResource(req.params?.resourceName)\n ?.map((authAction) => {\n if (arkosConfig?.authentication?.mode === \"dynamic\")\n delete (authAction as any)?.roles;\n return authAction;\n });\n\n if (!authActions)\n throw new AppError(\n `No auth action with resource name ${resourceName}`,\n 404\n );\n\n res.json({\n total: authActions.length,\n results: authActions.length,\n data: authActions,\n });\n }\n ),\n };\n};\n"]}
@@ -1 +1,82 @@
1
- "use strict";var __importDefault=this&&this.__importDefault||function(s){return s&&s.__esModule?s:{default:s}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.getAuthRouter=getAuthRouter;const express_1=require("express"),auth_controller_1=require("./auth.controller"),auth_service_1=__importDefault(require("./auth.service")),express_rate_limit_1=__importDefault(require("express-rate-limit")),dynamic_loader_1=require("../../utils/dynamic-loader"),base_middlewares_1=require("../base/base.middlewares"),deepmerge_helper_1=__importDefault(require("../../utils/helpers/deepmerge.helper")),routers_helpers_1=require("../../utils/helpers/routers.helpers"),base_router_helpers_1=require("../base/utils/helpers/base.router.helpers"),router=(0,express_1.Router)();async function getAuthRouter(s){const{interceptors:e,dtos:n,schemas:u,prismaQueryOptions:o,router:l}=(0,dynamic_loader_1.getModuleComponents)("auth")||{},r=l?.config||{},t=await(0,auth_controller_1.authControllerFactory)(e);if(r?.disable===!0)return router;const a=d=>{const i=s?.validation;if(i?.resolver==="class-validator")return n?.[d];if(i?.resolver==="zod")return u?.[d]};return(0,base_router_helpers_1.isEndpointDisabled)(r,"getMe")||router.get("/users/me",auth_service_1.default.authenticate,(0,base_middlewares_1.addPrismaQueryOptionsToRequest)(o,"getMe"),...(0,routers_helpers_1.processMiddleware)(e?.beforeGetMe),t.getMe,...(0,routers_helpers_1.processMiddleware)(e?.afterGetMe),base_middlewares_1.sendResponse,...(0,routers_helpers_1.processMiddleware)(e?.onGetMeError,{type:"error"})),(0,base_router_helpers_1.isEndpointDisabled)(r,"updateMe")||router.patch("/users/me",auth_service_1.default.authenticate,(0,base_middlewares_1.handleRequestBodyValidationAndTransformation)(a("updateMe")),(0,base_middlewares_1.addPrismaQueryOptionsToRequest)(o,"updateMe"),...(0,routers_helpers_1.processMiddleware)(e?.beforeUpdateMe),t.updateMe,...(0,routers_helpers_1.processMiddleware)(e?.afterUpdateMe),base_middlewares_1.sendResponse,...(0,routers_helpers_1.processMiddleware)(e?.onUpdateMeError,{type:"error"})),(0,base_router_helpers_1.isEndpointDisabled)(r,"deleteMe")||router.delete("/users/me",auth_service_1.default.authenticate,(0,base_middlewares_1.addPrismaQueryOptionsToRequest)(o,"deleteMe"),...(0,routers_helpers_1.processMiddleware)(e?.beforeDeleteMe),t.deleteMe,...(0,routers_helpers_1.processMiddleware)(e?.afterDeleteMe),base_middlewares_1.sendResponse,...(0,routers_helpers_1.processMiddleware)(e?.onDeleteMeError,{type:"error"})),(!(0,base_router_helpers_1.isEndpointDisabled)(r,"login")||!(0,base_router_helpers_1.isEndpointDisabled)(r,"logout")||!(0,base_router_helpers_1.isEndpointDisabled)(r,"signup")||!(0,base_router_helpers_1.isEndpointDisabled)(r,"updatePassword"))&&router.use("/auth",(0,express_rate_limit_1.default)((0,deepmerge_helper_1.default)({windowMs:5e3,limit:10,standardHeaders:"draft-7",legacyHeaders:!1,handler:(d,i)=>{i.status(429).json({message:"Too many requests, please try again later"})}},s?.authentication?.requestRateLimitOptions||{}))),(0,base_router_helpers_1.isEndpointDisabled)(r,"login")||router.post("/auth/login",(0,base_middlewares_1.handleRequestBodyValidationAndTransformation)(a("login")),(0,base_middlewares_1.addPrismaQueryOptionsToRequest)(o,"login"),...(0,routers_helpers_1.processMiddleware)(e?.beforeLogin),t.login,...(0,routers_helpers_1.processMiddleware)(e?.afterLogin),base_middlewares_1.sendResponse,...(0,routers_helpers_1.processMiddleware)(e?.onLoginError,{type:"error"})),(0,base_router_helpers_1.isEndpointDisabled)(r,"logout")||router.delete("/auth/logout",auth_service_1.default.authenticate,...(0,routers_helpers_1.processMiddleware)(e?.beforeLogout),t.logout,...(0,routers_helpers_1.processMiddleware)(e?.afterLogout),base_middlewares_1.sendResponse,...(0,routers_helpers_1.processMiddleware)(e?.onLogoutError,{type:"error"})),(0,base_router_helpers_1.isEndpointDisabled)(r,"signup")||router.post("/auth/signup",(0,base_middlewares_1.handleRequestBodyValidationAndTransformation)(a("signup")),(0,base_middlewares_1.addPrismaQueryOptionsToRequest)(o,"signup"),...(0,routers_helpers_1.processMiddleware)(e?.beforeSignup),t.signup,...(0,routers_helpers_1.processMiddleware)(e?.afterSignup),base_middlewares_1.sendResponse,...(0,routers_helpers_1.processMiddleware)(e?.onSignupError,{type:"error"})),(0,base_router_helpers_1.isEndpointDisabled)(r,"updatePassword")||router.post("/auth/update-password",auth_service_1.default.authenticate,(0,base_middlewares_1.handleRequestBodyValidationAndTransformation)(a("updatePassword")),(0,base_middlewares_1.addPrismaQueryOptionsToRequest)(o,"updatePassword"),...(0,routers_helpers_1.processMiddleware)(e?.beforeUpdatePassword),t.updatePassword,...(0,routers_helpers_1.processMiddleware)(e?.afterUpdatePassword),base_middlewares_1.sendResponse,...(0,routers_helpers_1.processMiddleware)(e?.onUpdatePasswordError,{type:"error"})),(0,base_router_helpers_1.isEndpointDisabled)(r,"findManyAuthAction")||router.get("/auth-actions",auth_service_1.default.authenticate,auth_service_1.default.handleAccessControl("View","auth-action"),...(0,routers_helpers_1.processMiddleware)(e?.beforeFindManyAuthAction),t.findManyAuthAction,...(0,routers_helpers_1.processMiddleware)(e?.afterFindManyAuthAction),base_middlewares_1.sendResponse,...(0,routers_helpers_1.processMiddleware)(e?.onFindManyAuthActionError,{type:"error"})),(0,base_router_helpers_1.isEndpointDisabled)(r,"findOneAuthAction")||router.get("/auth-actions/:resourceName",auth_service_1.default.authenticate,auth_service_1.default.handleAccessControl("View","auth-action"),...(0,routers_helpers_1.processMiddleware)(e?.beforeFindOneAuthAction),t.findOneAuthAction,...(0,routers_helpers_1.processMiddleware)(e?.afterFindOneAuthAction),base_middlewares_1.sendResponse,...(0,routers_helpers_1.processMiddleware)(e?.onFindOneAuthActionError,{type:"error"})),router}
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.getAuthRouter = getAuthRouter;
7
+ const express_1 = require("express");
8
+ const auth_controller_1 = require("./auth.controller");
9
+ const auth_service_1 = __importDefault(require("./auth.service"));
10
+ const express_rate_limit_1 = __importDefault(require("express-rate-limit"));
11
+ const dynamic_loader_1 = require("../../utils/dynamic-loader");
12
+ const base_middlewares_1 = require("../base/base.middlewares");
13
+ const deepmerge_helper_1 = __importDefault(require("../../utils/helpers/deepmerge.helper"));
14
+ const routers_helpers_1 = require("../../utils/helpers/routers.helpers");
15
+ const base_router_helpers_1 = require("../base/utils/helpers/base.router.helpers");
16
+ const router = (0, express_1.Router)();
17
+ async function getAuthRouter(arkosConfigs) {
18
+ const { interceptors, dtos, schemas, prismaQueryOptions, router: customRouterModule, } = (0, dynamic_loader_1.getModuleComponents)("auth") || {};
19
+ const routerConfig = customRouterModule?.config || {};
20
+ const authController = await (0, auth_controller_1.authControllerFactory)(interceptors);
21
+ if (routerConfig?.disable === true)
22
+ return router;
23
+ const getValidationSchemaOrDto = (key) => {
24
+ const validationConfigs = arkosConfigs?.validation;
25
+ if (validationConfigs?.resolver === "class-validator") {
26
+ return dtos?.[key];
27
+ }
28
+ else if (validationConfigs?.resolver === "zod") {
29
+ return schemas?.[key];
30
+ }
31
+ return undefined;
32
+ };
33
+ if (!(0, base_router_helpers_1.isEndpointDisabled)(routerConfig, "getMe")) {
34
+ router.get("/users/me", auth_service_1.default.authenticate, (0, base_middlewares_1.addPrismaQueryOptionsToRequest)(prismaQueryOptions, "getMe"), ...(0, routers_helpers_1.processMiddleware)(interceptors?.beforeGetMe), authController.getMe, ...(0, routers_helpers_1.processMiddleware)(interceptors?.afterGetMe), base_middlewares_1.sendResponse, ...(0, routers_helpers_1.processMiddleware)(interceptors?.onGetMeError, { type: "error" }));
35
+ }
36
+ if (!(0, base_router_helpers_1.isEndpointDisabled)(routerConfig, "updateMe")) {
37
+ router.patch("/users/me", auth_service_1.default.authenticate, (0, base_middlewares_1.handleRequestBodyValidationAndTransformation)(getValidationSchemaOrDto("updateMe")), (0, base_middlewares_1.addPrismaQueryOptionsToRequest)(prismaQueryOptions, "updateMe"), ...(0, routers_helpers_1.processMiddleware)(interceptors?.beforeUpdateMe), authController.updateMe, ...(0, routers_helpers_1.processMiddleware)(interceptors?.afterUpdateMe), base_middlewares_1.sendResponse, ...(0, routers_helpers_1.processMiddleware)(interceptors?.onUpdateMeError, { type: "error" }));
38
+ }
39
+ if (!(0, base_router_helpers_1.isEndpointDisabled)(routerConfig, "deleteMe")) {
40
+ router.delete("/users/me", auth_service_1.default.authenticate, (0, base_middlewares_1.addPrismaQueryOptionsToRequest)(prismaQueryOptions, "deleteMe"), ...(0, routers_helpers_1.processMiddleware)(interceptors?.beforeDeleteMe), authController.deleteMe, ...(0, routers_helpers_1.processMiddleware)(interceptors?.afterDeleteMe), base_middlewares_1.sendResponse, ...(0, routers_helpers_1.processMiddleware)(interceptors?.onDeleteMeError, { type: "error" }));
41
+ }
42
+ if (!(0, base_router_helpers_1.isEndpointDisabled)(routerConfig, "login") ||
43
+ !(0, base_router_helpers_1.isEndpointDisabled)(routerConfig, "logout") ||
44
+ !(0, base_router_helpers_1.isEndpointDisabled)(routerConfig, "signup") ||
45
+ !(0, base_router_helpers_1.isEndpointDisabled)(routerConfig, "updatePassword")) {
46
+ router.use("/auth", (0, express_rate_limit_1.default)((0, deepmerge_helper_1.default)({
47
+ windowMs: 5000,
48
+ limit: 10,
49
+ standardHeaders: "draft-7",
50
+ legacyHeaders: false,
51
+ handler: (_, res) => {
52
+ res.status(429).json({
53
+ message: "Too many requests, please try again later",
54
+ });
55
+ },
56
+ }, arkosConfigs?.authentication?.requestRateLimitOptions || {})));
57
+ }
58
+ if (!(0, base_router_helpers_1.isEndpointDisabled)(routerConfig, "login")) {
59
+ router.post("/auth/login", (0, base_middlewares_1.handleRequestBodyValidationAndTransformation)(getValidationSchemaOrDto("login")), (0, base_middlewares_1.addPrismaQueryOptionsToRequest)(prismaQueryOptions, "login"), ...(0, routers_helpers_1.processMiddleware)(interceptors?.beforeLogin), authController.login, ...(0, routers_helpers_1.processMiddleware)(interceptors?.afterLogin), base_middlewares_1.sendResponse, ...(0, routers_helpers_1.processMiddleware)(interceptors?.onLoginError, { type: "error" }));
60
+ }
61
+ if (!(0, base_router_helpers_1.isEndpointDisabled)(routerConfig, "logout")) {
62
+ router.delete("/auth/logout", auth_service_1.default.authenticate, ...(0, routers_helpers_1.processMiddleware)(interceptors?.beforeLogout), authController.logout, ...(0, routers_helpers_1.processMiddleware)(interceptors?.afterLogout), base_middlewares_1.sendResponse, ...(0, routers_helpers_1.processMiddleware)(interceptors?.onLogoutError, { type: "error" }));
63
+ }
64
+ if (!(0, base_router_helpers_1.isEndpointDisabled)(routerConfig, "signup")) {
65
+ router.post("/auth/signup", (0, base_middlewares_1.handleRequestBodyValidationAndTransformation)(getValidationSchemaOrDto("signup")), (0, base_middlewares_1.addPrismaQueryOptionsToRequest)(prismaQueryOptions, "signup"), ...(0, routers_helpers_1.processMiddleware)(interceptors?.beforeSignup), authController.signup, ...(0, routers_helpers_1.processMiddleware)(interceptors?.afterSignup), base_middlewares_1.sendResponse, ...(0, routers_helpers_1.processMiddleware)(interceptors?.onSignupError, { type: "error" }));
66
+ }
67
+ if (!(0, base_router_helpers_1.isEndpointDisabled)(routerConfig, "updatePassword")) {
68
+ router.post("/auth/update-password", auth_service_1.default.authenticate, (0, base_middlewares_1.handleRequestBodyValidationAndTransformation)(getValidationSchemaOrDto("updatePassword")), (0, base_middlewares_1.addPrismaQueryOptionsToRequest)(prismaQueryOptions, "updatePassword"), ...(0, routers_helpers_1.processMiddleware)(interceptors?.beforeUpdatePassword), authController.updatePassword, ...(0, routers_helpers_1.processMiddleware)(interceptors?.afterUpdatePassword), base_middlewares_1.sendResponse, ...(0, routers_helpers_1.processMiddleware)(interceptors?.onUpdatePasswordError, {
69
+ type: "error",
70
+ }));
71
+ }
72
+ if (!(0, base_router_helpers_1.isEndpointDisabled)(routerConfig, "findManyAuthAction"))
73
+ router.get("/auth-actions", auth_service_1.default.authenticate, auth_service_1.default.handleAccessControl("View", "auth-action"), ...(0, routers_helpers_1.processMiddleware)(interceptors?.beforeFindManyAuthAction), authController.findManyAuthAction, ...(0, routers_helpers_1.processMiddleware)(interceptors?.afterFindManyAuthAction), base_middlewares_1.sendResponse, ...(0, routers_helpers_1.processMiddleware)(interceptors?.onFindManyAuthActionError, {
74
+ type: "error",
75
+ }));
76
+ if (!(0, base_router_helpers_1.isEndpointDisabled)(routerConfig, "findOneAuthAction"))
77
+ router.get("/auth-actions/:resourceName", auth_service_1.default.authenticate, auth_service_1.default.handleAccessControl("View", "auth-action"), ...(0, routers_helpers_1.processMiddleware)(interceptors?.beforeFindOneAuthAction), authController.findOneAuthAction, ...(0, routers_helpers_1.processMiddleware)(interceptors?.afterFindOneAuthAction), base_middlewares_1.sendResponse, ...(0, routers_helpers_1.processMiddleware)(interceptors?.onFindOneAuthActionError, {
78
+ type: "error",
79
+ }));
80
+ return router;
81
+ }
82
+ //# sourceMappingURL=auth.router.js.map