arkos 1.0.18-beta → 1.0.20-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 (144) hide show
  1. package/dist/cjs/app.js +1 -1
  2. package/dist/cjs/app.js.map +1 -1
  3. package/dist/cjs/exports/middlewares/index.js +7 -0
  4. package/dist/cjs/exports/middlewares/index.js.map +1 -0
  5. package/dist/cjs/exports/utils/index.js.map +1 -1
  6. package/dist/cjs/modules/auth/auth.controller.js +38 -37
  7. package/dist/cjs/modules/auth/auth.controller.js.map +1 -1
  8. package/dist/cjs/modules/auth/auth.router.js +4 -5
  9. package/dist/cjs/modules/auth/auth.router.js.map +1 -1
  10. package/dist/cjs/modules/auth/auth.service.js +27 -24
  11. package/dist/cjs/modules/auth/auth.service.js.map +1 -1
  12. package/dist/cjs/modules/auth/utils/helpers/auth.controller.helpers.js +8 -12
  13. package/dist/cjs/modules/auth/utils/helpers/auth.controller.helpers.js.map +1 -1
  14. package/dist/cjs/modules/auth/utils/helpers/auth.helpers.js +19 -0
  15. package/dist/cjs/modules/auth/utils/helpers/auth.helpers.js.map +1 -0
  16. package/dist/cjs/modules/base/base.controller.js +2 -29
  17. package/dist/cjs/modules/base/base.controller.js.map +1 -1
  18. package/dist/cjs/modules/base/base.middlewares.js +42 -1
  19. package/dist/cjs/modules/base/base.middlewares.js.map +1 -1
  20. package/dist/cjs/modules/base/base.router.js +2 -2
  21. package/dist/cjs/modules/base/base.router.js.map +1 -1
  22. package/dist/cjs/modules/base/utils/helpers/base.helpers.js +183 -0
  23. package/dist/cjs/modules/base/utils/helpers/base.helpers.js.map +1 -0
  24. package/dist/cjs/modules/base/utils/helpers/base.router.helpers.js +2 -3
  25. package/dist/cjs/modules/base/utils/helpers/base.router.helpers.js.map +1 -1
  26. package/dist/cjs/modules/base/utils/helpers/base.service.helpers.js +9 -11
  27. package/dist/cjs/modules/base/utils/helpers/base.service.helpers.js.map +1 -1
  28. package/dist/cjs/modules/error-handler/error-handler.controller.js +2 -0
  29. package/dist/cjs/modules/error-handler/error-handler.controller.js.map +1 -1
  30. package/dist/cjs/modules/error-handler/utils/catch-async.js +1 -1
  31. package/dist/cjs/modules/error-handler/utils/catch-async.js.map +1 -1
  32. package/dist/cjs/modules/file-uploader/file-uploader.service.js +4 -4
  33. package/dist/cjs/modules/file-uploader/file-uploader.service.js.map +1 -1
  34. package/dist/cjs/modules/file-uploader/utils/helpers/file-uploader.helpers.js +7 -5
  35. package/dist/cjs/modules/file-uploader/utils/helpers/file-uploader.helpers.js.map +1 -1
  36. package/dist/cjs/server.js +1 -1
  37. package/dist/cjs/server.js.map +1 -1
  38. package/dist/cjs/types/arkos-config.js.map +1 -1
  39. package/dist/cjs/types/auth.js.map +1 -1
  40. package/dist/cjs/types/index.js.map +1 -1
  41. package/dist/cjs/types/prisma-model-router-config.js +3 -0
  42. package/dist/cjs/types/prisma-model-router-config.js.map +1 -0
  43. package/dist/cjs/utils/features/api.features.js +3 -2
  44. package/dist/cjs/utils/features/api.features.js.map +1 -1
  45. package/dist/cjs/utils/helpers/api.features.helpers.js +4 -3
  46. package/dist/cjs/utils/helpers/api.features.helpers.js.map +1 -1
  47. package/dist/cjs/utils/helpers/base.controller.helpers.js +77 -35
  48. package/dist/cjs/utils/helpers/base.controller.helpers.js.map +1 -1
  49. package/dist/cjs/utils/helpers/change-case.helpers.js +3 -3
  50. package/dist/cjs/utils/helpers/change-case.helpers.js.map +1 -1
  51. package/dist/cjs/utils/helpers/fs.helpers.js +14 -45
  52. package/dist/cjs/utils/helpers/fs.helpers.js.map +1 -1
  53. package/dist/cjs/utils/helpers/models.helpers.js +35 -30
  54. package/dist/cjs/utils/helpers/models.helpers.js.map +1 -1
  55. package/dist/cjs/utils/helpers/prisma.helpers.js +5 -3
  56. package/dist/cjs/utils/helpers/prisma.helpers.js.map +1 -1
  57. package/dist/cjs/utils/scripts/export-prisma-types.js +3 -3
  58. package/dist/cjs/utils/scripts/export-prisma-types.js.map +1 -1
  59. package/dist/cjs/utils/scripts/generate-insomnia-collection.js +228 -0
  60. package/dist/cjs/utils/scripts/generate-insomnia-collection.js.map +1 -0
  61. package/dist/cjs/utils/scripts/generate-zod-schemas.js +4 -3
  62. package/dist/cjs/utils/scripts/generate-zod-schemas.js.map +1 -1
  63. package/dist/cjs/utils/scripts/index.js +12 -0
  64. package/dist/cjs/utils/scripts/index.js.map +1 -0
  65. package/dist/es2020/app.js +1 -1
  66. package/dist/es2020/app.js.map +1 -1
  67. package/dist/es2020/exports/middlewares/index.js +2 -0
  68. package/dist/es2020/exports/middlewares/index.js.map +1 -0
  69. package/dist/es2020/exports/utils/index.js.map +1 -1
  70. package/dist/es2020/modules/auth/auth.controller.js +39 -38
  71. package/dist/es2020/modules/auth/auth.controller.js.map +1 -1
  72. package/dist/es2020/modules/auth/auth.router.js +1 -2
  73. package/dist/es2020/modules/auth/auth.router.js.map +1 -1
  74. package/dist/es2020/modules/auth/auth.service.js +27 -24
  75. package/dist/es2020/modules/auth/auth.service.js.map +1 -1
  76. package/dist/es2020/modules/auth/utils/helpers/auth.controller.helpers.js +8 -12
  77. package/dist/es2020/modules/auth/utils/helpers/auth.controller.helpers.js.map +1 -1
  78. package/dist/es2020/modules/auth/utils/helpers/auth.helpers.js +12 -0
  79. package/dist/es2020/modules/auth/utils/helpers/auth.helpers.js.map +1 -0
  80. package/dist/es2020/modules/base/base.controller.js +2 -29
  81. package/dist/es2020/modules/base/base.controller.js.map +1 -1
  82. package/dist/es2020/modules/base/base.middlewares.js +38 -1
  83. package/dist/es2020/modules/base/base.middlewares.js.map +1 -1
  84. package/dist/es2020/modules/base/base.router.js +2 -2
  85. package/dist/es2020/modules/base/base.router.js.map +1 -1
  86. package/dist/es2020/modules/base/utils/helpers/base.helpers.js +177 -0
  87. package/dist/es2020/modules/base/utils/helpers/base.helpers.js.map +1 -0
  88. package/dist/es2020/modules/base/utils/helpers/base.router.helpers.js +1 -2
  89. package/dist/es2020/modules/base/utils/helpers/base.router.helpers.js.map +1 -1
  90. package/dist/es2020/modules/base/utils/helpers/base.service.helpers.js +9 -11
  91. package/dist/es2020/modules/base/utils/helpers/base.service.helpers.js.map +1 -1
  92. package/dist/es2020/modules/error-handler/error-handler.controller.js +2 -0
  93. package/dist/es2020/modules/error-handler/error-handler.controller.js.map +1 -1
  94. package/dist/es2020/modules/error-handler/utils/catch-async.js +1 -1
  95. package/dist/es2020/modules/error-handler/utils/catch-async.js.map +1 -1
  96. package/dist/es2020/modules/file-uploader/file-uploader.service.js +4 -4
  97. package/dist/es2020/modules/file-uploader/file-uploader.service.js.map +1 -1
  98. package/dist/es2020/modules/file-uploader/utils/helpers/file-uploader.helpers.js +7 -5
  99. package/dist/es2020/modules/file-uploader/utils/helpers/file-uploader.helpers.js.map +1 -1
  100. package/dist/es2020/server.js +1 -1
  101. package/dist/es2020/server.js.map +1 -1
  102. package/dist/es2020/types/arkos-config.js.map +1 -1
  103. package/dist/es2020/types/auth.js.map +1 -1
  104. package/dist/es2020/types/index.js.map +1 -1
  105. package/dist/es2020/types/prisma-model-router-config.js +2 -0
  106. package/dist/es2020/types/prisma-model-router-config.js.map +1 -0
  107. package/dist/es2020/utils/features/api.features.js +3 -2
  108. package/dist/es2020/utils/features/api.features.js.map +1 -1
  109. package/dist/es2020/utils/helpers/api.features.helpers.js +4 -3
  110. package/dist/es2020/utils/helpers/api.features.helpers.js.map +1 -1
  111. package/dist/es2020/utils/helpers/base.controller.helpers.js +75 -31
  112. package/dist/es2020/utils/helpers/base.controller.helpers.js.map +1 -1
  113. package/dist/es2020/utils/helpers/change-case.helpers.js +3 -3
  114. package/dist/es2020/utils/helpers/change-case.helpers.js.map +1 -1
  115. package/dist/es2020/utils/helpers/fs.helpers.js +13 -44
  116. package/dist/es2020/utils/helpers/fs.helpers.js.map +1 -1
  117. package/dist/es2020/utils/helpers/models.helpers.js +36 -31
  118. package/dist/es2020/utils/helpers/models.helpers.js.map +1 -1
  119. package/dist/es2020/utils/helpers/prisma.helpers.js +6 -4
  120. package/dist/es2020/utils/helpers/prisma.helpers.js.map +1 -1
  121. package/dist/es2020/utils/scripts/export-prisma-types.js +3 -3
  122. package/dist/es2020/utils/scripts/export-prisma-types.js.map +1 -1
  123. package/dist/es2020/utils/scripts/generate-insomnia-collection.js +189 -0
  124. package/dist/es2020/utils/scripts/generate-insomnia-collection.js.map +1 -0
  125. package/dist/es2020/utils/scripts/generate-zod-schemas.js +4 -3
  126. package/dist/es2020/utils/scripts/generate-zod-schemas.js.map +1 -1
  127. package/dist/es2020/utils/scripts/index.js +10 -0
  128. package/dist/es2020/utils/scripts/index.js.map +1 -0
  129. package/dist/types/exports/middlewares/index.d.ts +1 -0
  130. package/dist/types/exports/utils/index.d.ts +1 -0
  131. package/dist/types/modules/auth/auth.service.d.ts +3 -3
  132. package/dist/types/modules/auth/utils/helpers/auth.helpers.d.ts +2 -0
  133. package/dist/types/modules/base/base.middlewares.d.ts +6 -1
  134. package/dist/types/modules/base/utils/helpers/base.helpers.d.ts +5 -0
  135. package/dist/types/modules/base/utils/helpers/base.service.helpers.d.ts +1 -1
  136. package/dist/types/types/arkos-config.d.ts +5 -0
  137. package/dist/types/types/auth.d.ts +9 -8
  138. package/dist/types/types/index.d.ts +2 -1
  139. package/dist/types/types/prisma-model-router-config.d.ts +18 -0
  140. package/dist/types/utils/helpers/base.controller.helpers.d.ts +4 -6
  141. package/dist/types/utils/helpers/fs.helpers.d.ts +2 -2
  142. package/dist/types/utils/scripts/generate-insomnia-collection.d.ts +1 -0
  143. package/dist/types/utils/scripts/index.d.ts +2 -0
  144. package/package.json +55 -34
package/dist/cjs/app.js CHANGED
@@ -1 +1 @@
1
- "use strict";var __createBinding=this&&this.__createBinding||(Object.create?function(e,t,i,r){r===void 0&&(r=i);var l=Object.getOwnPropertyDescriptor(t,i);(!l||("get"in l?!t.__esModule:l.writable||l.configurable))&&(l={enumerable:!0,get:function(){return t[i]}}),Object.defineProperty(e,r,l)}:function(e,t,i,r){r===void 0&&(r=i),e[r]=t[i]}),__setModuleDefault=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),__importStar=this&&this.__importStar||function(){var e=function(t){return e=Object.getOwnPropertyNames||function(i){var r=[];for(var l in i)Object.prototype.hasOwnProperty.call(i,l)&&(r[r.length]=l);return r},e(t)};return function(t){if(t&&t.__esModule)return t;var i={};if(t!=null)for(var r=e(t),l=0;l<r.length;l++)r[l]!=="default"&&__createBinding(i,t,r[l]);return __setModuleDefault(i,t),i}}(),__awaiter=this&&this.__awaiter||function(e,t,i,r){function l(u){return u instanceof i?u:new i(function(o){o(u)})}return new(i||(i=Promise))(function(u,o){function d(s){try{a(r.next(s))}catch(n){o(n)}}function p(s){try{a(r.throw(s))}catch(n){o(n)}}function a(s){s.done?u(s.value):l(s.value).then(d,p)}a((r=r.apply(e,t||[])).next())})},__importDefault=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.app=void 0,exports.bootstrap=bootstrap;const express_1=__importDefault(require("express")),cors_1=__importDefault(require("cors")),cookie_parser_1=__importDefault(require("cookie-parser")),auth_router_1=require("./modules/auth/auth.router"),base_router_1=require("./modules/base/base.router"),error_handler_controller_1=__importDefault(require("./modules/error-handler/error-handler.controller")),express_rate_limit_1=require("express-rate-limit"),path_1=__importDefault(require("path")),dotenv=__importStar(require("dotenv")),compression_1=__importDefault(require("compression")),base_middlewares_1=require("./modules/base/base.middlewares"),prisma_helpers_1=require("./utils/helpers/prisma.helpers"),file_uploader_router_1=require("./modules/file-uploader/file-uploader.router"),query_parser_helpers_1=require("./utils/helpers/query-parser.helpers"),deepmerge_helper_1=__importDefault(require("./utils/helpers/deepmerge.helper")),ENV=process.env.NODE_ENV;let envPath=".env";ENV==="production"?envPath=path_1.default.resolve(process.cwd(),".env.production"):ENV==="staging"?envPath=path_1.default.resolve(process.cwd(),".env.staging"):ENV==="development"?envPath=path_1.default.resolve(process.cwd(),".env.development"):ENV==="local"?envPath=path_1.default.resolve(process.cwd(),".env.local"):ENV==="test"?envPath=path_1.default.resolve(process.cwd(),".env.test"):ENV==="qa"&&(envPath=path_1.default.resolve(process.cwd(),".env.qa")),dotenv.config({path:envPath}),exports.app=(0,express_1.default)();function bootstrap(e){return __awaiter(this,void 0,void 0,function*(){var t,i,r;yield(0,prisma_helpers_1.loadPrismaModule)(),e.configureApp&&(yield e.configureApp(exports.app));const l=e?.middlewares,u=l?.disable||[],o=l?.replace||{};u.includes("compression")||exports.app.use(o.compression||(0,compression_1.default)(e?.compressionOptions)),u.includes("global-rate-limit")||exports.app.use(o.globalRateLimit||(0,express_rate_limit_1.rateLimit)((0,deepmerge_helper_1.default)({windowMs:60*1e3,limit:1e3,standardHeaders:"draft-7",legacyHeaders:!1},e?.globalRequestRateLimitOptions||{}))),u.includes("cors")||exports.app.use(o.cors||(0,cors_1.default)(!((t=e?.cors)===null||t===void 0)&&t.customHandler?e.cors.customHandler:(0,deepmerge_helper_1.default)({origin:(s,n)=>{var v;const c=(v=e?.cors)===null||v===void 0?void 0:v.allowedOrigins;c==="*"?n(null,!0):Array.isArray(c)?n(null,!s||c.includes(s)):typeof c=="string"?n(null,!s||c===s):n(null,!1)},methods:["GET","POST","PUT","DELETE","PATCH","OPTIONS"],allowedHeaders:["Content-Type","Authorization","Connection"],credentials:!0},((i=e?.cors)===null||i===void 0?void 0:i.options)||{}))),u.includes("express-json")||exports.app.use(o.expressJson||express_1.default.json(e?.jsonBodyParserOptions)),u.includes("cookie-parser")||exports.app.use(o.cookieParser||(0,cookie_parser_1.default)(...e?.cookieParserParameters||[])),u.includes("query-parser")||exports.app.use(o.queryParser||(0,query_parser_helpers_1.queryParser)((0,deepmerge_helper_1.default)({parseNull:!0,parseUndefined:!0,parseBoolean:!0},e?.queryParserOptions||{}))),u.includes("database-connection")||exports.app.use(o.databaseConnection||prisma_helpers_1.checkDatabaseConnection),u.includes("request-logger")||exports.app.use(o.requestLogger||base_middlewares_1.handleRequestLogs),!((r=e?.middlewares)===null||r===void 0)&&r.additional&&e.middlewares.additional.forEach(s=>{exports.app.use(s)});const d=e?.routers,p=d?.disable||[],a=d?.replace||{};if(p.includes("welcome-endpoint")||exports.app.get("/api",a.welcomeEndpoint||((s,n)=>{n.status(200).json({message:e.welcomeMessage})})),!p.includes("file-uploader")){const s=a.fileUploader?yield a.fileUploader(e):yield(0,file_uploader_router_1.getFileUploaderRouter)(e);exports.app.use(s)}if(!p.includes("auth-router")&&e.authentication){const s=a.authRouter?yield a.authRouter(e):yield(0,auth_router_1.getAuthRouter)(e);exports.app.use("/api",s)}if(!p.includes("prisma-models-router")){const s=a.prismaModelsRouter?yield a.prismaModelsRouter(e):yield(0,base_router_1.getPrismaModelsRouter)(e);exports.app.use("/api",s)}return exports.app.use("/api",(0,base_router_1.getAvailableResourcesAndRoutesRouter)()),d?.additional&&d.additional.forEach(s=>{exports.app.use(s)}),u.includes("global-error-handler")||exports.app.use(o.globalErrorHandler||error_handler_controller_1.default),exports.app})}
1
+ "use strict";var __createBinding=this&&this.__createBinding||(Object.create?function(e,t,i,r){r===void 0&&(r=i);var o=Object.getOwnPropertyDescriptor(t,i);(!o||("get"in o?!t.__esModule:o.writable||o.configurable))&&(o={enumerable:!0,get:function(){return t[i]}}),Object.defineProperty(e,r,o)}:function(e,t,i,r){r===void 0&&(r=i),e[r]=t[i]}),__setModuleDefault=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),__importStar=this&&this.__importStar||function(){var e=function(t){return e=Object.getOwnPropertyNames||function(i){var r=[];for(var o in i)Object.prototype.hasOwnProperty.call(i,o)&&(r[r.length]=o);return r},e(t)};return function(t){if(t&&t.__esModule)return t;var i={};if(t!=null)for(var r=e(t),o=0;o<r.length;o++)r[o]!=="default"&&__createBinding(i,t,r[o]);return __setModuleDefault(i,t),i}}(),__awaiter=this&&this.__awaiter||function(e,t,i,r){function o(a){return a instanceof i?a:new i(function(c){c(a)})}return new(i||(i=Promise))(function(a,c){function w(s){try{_(r.next(s))}catch(f){c(f)}}function y(s){try{_(r.throw(s))}catch(f){c(f)}}function _(s){s.done?a(s.value):o(s.value).then(w,y)}_((r=r.apply(e,t||[])).next())})},__importDefault=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.app=void 0,exports.bootstrap=bootstrap;const express_1=__importDefault(require("express")),cors_1=__importDefault(require("cors")),cookie_parser_1=__importDefault(require("cookie-parser")),auth_router_1=require("./modules/auth/auth.router"),base_router_1=require("./modules/base/base.router"),error_handler_controller_1=__importDefault(require("./modules/error-handler/error-handler.controller")),express_rate_limit_1=require("express-rate-limit"),path_1=__importDefault(require("path")),dotenv=__importStar(require("dotenv")),compression_1=__importDefault(require("compression")),base_middlewares_1=require("./modules/base/base.middlewares"),prisma_helpers_1=require("./utils/helpers/prisma.helpers"),file_uploader_router_1=require("./modules/file-uploader/file-uploader.router"),query_parser_helpers_1=require("./utils/helpers/query-parser.helpers"),deepmerge_helper_1=__importDefault(require("./utils/helpers/deepmerge.helper")),ENV=process.env.NODE_ENV;let envPath=".env";ENV==="production"?envPath=path_1.default.resolve(process.cwd(),".env.production"):ENV==="staging"?envPath=path_1.default.resolve(process.cwd(),".env.staging"):ENV==="development"?envPath=path_1.default.resolve(process.cwd(),".env.development"):ENV==="local"?envPath=path_1.default.resolve(process.cwd(),".env.local"):ENV==="test"?envPath=path_1.default.resolve(process.cwd(),".env.test"):ENV==="qa"&&(envPath=path_1.default.resolve(process.cwd(),".env.qa")),dotenv.config({path:envPath}),exports.app=(0,express_1.default)();function bootstrap(e){return __awaiter(this,void 0,void 0,function*(){var t,i,r,o,a,c,w,y,_,s,f,x,q,O,R,P;yield(0,prisma_helpers_1.loadPrismaModule)(),e.configureApp&&(yield e.configureApp(exports.app));const m=e?.middlewares,l=m?.disable||[],p=m?.replace||{};!((t=l?.includes)===null||t===void 0)&&t.call(l,"compression")||exports.app.use(p.compression||(0,compression_1.default)(e?.compressionOptions)),!((i=l?.includes)===null||i===void 0)&&i.call(l,"global-rate-limit")||exports.app.use(p.globalRateLimit||(0,express_rate_limit_1.rateLimit)((0,deepmerge_helper_1.default)({windowMs:60*1e3,limit:1e3,standardHeaders:"draft-7",legacyHeaders:!1},e?.globalRequestRateLimitOptions||{}))),!((r=l?.includes)===null||r===void 0)&&r.call(l,"cors")||exports.app.use(p.cors||(0,cors_1.default)(!((o=e?.cors)===null||o===void 0)&&o.customHandler?e.cors.customHandler:(0,deepmerge_helper_1.default)({origin:(u,b)=>{var M,j;const v=(M=e?.cors)===null||M===void 0?void 0:M.allowedOrigins;v==="*"?b(null,!0):Array.isArray(v)?b(null,!u||((j=v?.includes)===null||j===void 0?void 0:j.call(v,u))):typeof v=="string"?b(null,!u||v===u):b(null,!1)},methods:["GET","POST","PUT","DELETE","PATCH","OPTIONS"],allowedHeaders:["Content-Type","Authorization","Connection"],credentials:!0},((a=e?.cors)===null||a===void 0?void 0:a.options)||{}))),!((c=l?.includes)===null||c===void 0)&&c.call(l,"express-json")||exports.app.use(p.expressJson||express_1.default.json(e?.jsonBodyParserOptions)),!((w=l?.includes)===null||w===void 0)&&w.call(l,"cookie-parser")||exports.app.use(p.cookieParser||(0,cookie_parser_1.default)(...e?.cookieParserParameters||[])),!((y=l?.includes)===null||y===void 0)&&y.call(l,"query-parser")||exports.app.use(p.queryParser||(0,query_parser_helpers_1.queryParser)((0,deepmerge_helper_1.default)({parseNull:!0,parseUndefined:!0,parseBoolean:!0},e?.queryParserOptions||{}))),!((_=l?.includes)===null||_===void 0)&&_.call(l,"database-connection")||exports.app.use(p.databaseConnection||prisma_helpers_1.checkDatabaseConnection),!((s=l?.includes)===null||s===void 0)&&s.call(l,"request-logger")||exports.app.use(p.requestLogger||base_middlewares_1.handleRequestLogs),!((f=e?.middlewares)===null||f===void 0)&&f.additional&&e.middlewares.additional.forEach(u=>{exports.app.use(u)});const n=e?.routers,d=n?.disable||[],h=n?.replace||{};if(!((x=d?.includes)===null||x===void 0)&&x.call(d,"welcome-endpoint")||exports.app.get("/api",h.welcomeEndpoint||((u,b)=>{b.status(200).json({message:e.welcomeMessage})})),!(!((q=d?.includes)===null||q===void 0)&&q.call(d,"file-uploader"))){const u=h.fileUploader?yield h.fileUploader(e):yield(0,file_uploader_router_1.getFileUploaderRouter)(e);exports.app.use(u)}if(!(!((O=d?.includes)===null||O===void 0)&&O.call(d,"auth-router"))&&e.authentication){const u=h.authRouter?yield h.authRouter(e):yield(0,auth_router_1.getAuthRouter)(e);exports.app.use("/api",u)}if(!(!((R=d?.includes)===null||R===void 0)&&R.call(d,"prisma-models-router"))){const u=h.prismaModelsRouter?yield h.prismaModelsRouter(e):yield(0,base_router_1.getPrismaModelsRouter)(e);exports.app.use("/api",u)}return exports.app.use("/api",(0,base_router_1.getAvailableResourcesAndRoutesRouter)()),n?.additional&&n.additional.forEach(u=>{exports.app.use(u)}),!((P=l?.includes)===null||P===void 0)&&P.call(l,"global-error-handler")||exports.app.use(p.globalErrorHandler||error_handler_controller_1.default),exports.app})}
@@ -1 +1 @@
1
- {"version":3,"file":"app.js","sourceRoot":"","sources":["../../src/app.ts"],"names":[],"mappings":"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","sourcesContent":["import express from \"express\";\nimport cors from \"cors\";\nimport cookieParser from \"cookie-parser\";\nimport { getAuthRouter } from \"./modules/auth/auth.router\";\nimport {\n getPrismaModelsRouter,\n getAvailableResourcesAndRoutesRouter,\n} from \"./modules/base/base.router\";\nimport errorHandler from \"./modules/error-handler/error-handler.controller\";\nimport { rateLimit } from \"express-rate-limit\";\nimport path from \"path\";\nimport * as dotenv from \"dotenv\";\nimport compression from \"compression\";\nimport { handleRequestLogs } from \"./modules/base/base.middlewares\";\nimport {\n checkDatabaseConnection,\n loadPrismaModule,\n} from \"./utils/helpers/prisma.helpers\";\nimport { getFileUploaderRouter } from \"./modules/file-uploader/file-uploader.router\";\nimport { ArkosConfig } from \"./types/arkos-config\";\nimport { queryParser } from \"./utils/helpers/query-parser.helpers\";\nimport deepmerge from \"./utils/helpers/deepmerge.helper\";\n\nconst ENV = process.env.NODE_ENV;\nlet envPath = \".env\";\n\n// Default to `.env.local` if available in any environment\nif (ENV === \"production\") {\n envPath = path.resolve(process.cwd(), \".env.production\");\n} else if (ENV === \"staging\") {\n envPath = path.resolve(process.cwd(), \".env.staging\");\n} else if (ENV === \"development\") {\n envPath = path.resolve(process.cwd(), \".env.development\");\n} else if (ENV === \"local\") {\n // For local development, .env.local can be used\n envPath = path.resolve(process.cwd(), \".env.local\");\n}\n\n// Optionally, add support for `.env.test`, `.env.qa`, or other environments if required\nelse if (ENV === \"test\") {\n envPath = path.resolve(process.cwd(), \".env.test\");\n} else if (ENV === \"qa\") {\n envPath = path.resolve(process.cwd(), \".env.qa\");\n}\n\ndotenv.config({ path: envPath });\n\nexport const app: express.Express = express();\n\nexport async function bootstrap(\n arkosConfig: ArkosConfig\n): Promise<express.Express> {\n await loadPrismaModule();\n\n if (arkosConfig.configureApp) await arkosConfig.configureApp(app);\n\n const middlewaresConfig = arkosConfig?.middlewares;\n const disabledMiddlewares = middlewaresConfig?.disable || [];\n const replacedMiddlewares = middlewaresConfig?.replace || {};\n\n // Compression middleware\n if (!disabledMiddlewares.includes(\"compression\"))\n app.use(\n replacedMiddlewares.compression ||\n compression(arkosConfig?.compressionOptions)\n );\n\n // Global rate limit middleware\n if (!disabledMiddlewares.includes(\"global-rate-limit\"))\n app.use(\n replacedMiddlewares.globalRateLimit ||\n rateLimit(\n deepmerge(\n {\n windowMs: 60 * 1000,\n limit: 1000,\n standardHeaders: \"draft-7\",\n legacyHeaders: false,\n },\n arkosConfig?.globalRequestRateLimitOptions || {}\n )\n )\n );\n\n // CORS middleware\n if (!disabledMiddlewares.includes(\"cors\"))\n app.use(\n replacedMiddlewares.cors ||\n cors(\n arkosConfig?.cors?.customHandler\n ? arkosConfig.cors.customHandler\n : deepmerge(\n {\n origin: (\n origin: string,\n cb: (err: Error | null, allow?: boolean) => void\n ) => {\n const allowed = arkosConfig?.cors?.allowedOrigins;\n\n if (allowed === \"*\") {\n cb(null, true);\n } else if (Array.isArray(allowed)) {\n cb(null, !origin || allowed.includes(origin));\n } else if (typeof allowed === \"string\") {\n cb(null, !origin || allowed === origin);\n } else {\n cb(null, false);\n }\n },\n methods: [\"GET\", \"POST\", \"PUT\", \"DELETE\", \"PATCH\", \"OPTIONS\"],\n allowedHeaders: [\n \"Content-Type\",\n \"Authorization\",\n \"Connection\",\n ],\n credentials: true,\n },\n arkosConfig?.cors?.options || {}\n )\n )\n );\n\n // JSON body parser middleware\n if (!disabledMiddlewares.includes(\"express-json\"))\n app.use(\n replacedMiddlewares.expressJson ||\n express.json(arkosConfig?.jsonBodyParserOptions)\n );\n\n // Cookie parser middleware\n if (!disabledMiddlewares.includes(\"cookie-parser\"))\n app.use(\n replacedMiddlewares.cookieParser ||\n cookieParser(...[...(arkosConfig?.cookieParserParameters || [])])\n );\n\n // Query parser middleware\n if (!disabledMiddlewares.includes(\"query-parser\"))\n app.use(\n replacedMiddlewares.queryParser ||\n queryParser(\n deepmerge(\n {\n parseNull: true,\n parseUndefined: true,\n parseBoolean: true,\n },\n arkosConfig?.queryParserOptions || {}\n )\n )\n );\n\n // Database connection check middleware\n if (!disabledMiddlewares.includes(\"database-connection\"))\n app.use(replacedMiddlewares.databaseConnection || checkDatabaseConnection);\n\n // Request logger middleware\n if (!disabledMiddlewares.includes(\"request-logger\"))\n app.use(replacedMiddlewares.requestLogger || handleRequestLogs);\n\n // Additional custom middlewares\n if (arkosConfig?.middlewares?.additional)\n arkosConfig.middlewares.additional.forEach((middleware) => {\n app.use(middleware);\n });\n\n // Configure routers\n const routersConfig = arkosConfig?.routers;\n const disabledRouters = routersConfig?.disable || [];\n const replacedRouters = routersConfig?.replace || {};\n\n // Welcome endpoint\n if (!disabledRouters.includes(\"welcome-endpoint\"))\n app.get(\n \"/api\",\n replacedRouters.welcomeEndpoint ||\n ((req, res) => {\n res.status(200).json({ message: arkosConfig.welcomeMessage });\n })\n );\n\n // File uploader router\n if (!disabledRouters.includes(\"file-uploader\")) {\n const fileUploaderRouter = replacedRouters.fileUploader\n ? await replacedRouters.fileUploader(arkosConfig)\n : await getFileUploaderRouter(arkosConfig);\n app.use(fileUploaderRouter);\n }\n\n // Auth router\n if (!disabledRouters.includes(\"auth-router\") && arkosConfig.authentication) {\n const authRouter = replacedRouters.authRouter\n ? await replacedRouters.authRouter(arkosConfig)\n : await getAuthRouter(arkosConfig);\n app.use(\"/api\", authRouter);\n }\n\n // Prisma models router\n if (!disabledRouters.includes(\"prisma-models-router\")) {\n const modelsRouter = replacedRouters.prismaModelsRouter\n ? await replacedRouters.prismaModelsRouter(arkosConfig)\n : await getPrismaModelsRouter(arkosConfig);\n app.use(\"/api\", modelsRouter);\n }\n\n app.use(\"/api\", getAvailableResourcesAndRoutesRouter());\n\n // Additional custom routers\n if (routersConfig?.additional) {\n routersConfig.additional.forEach((router) => {\n app.use(router);\n });\n }\n\n // Global error handler middleware (must be last)\n if (!disabledMiddlewares.includes(\"global-error-handler\"))\n app.use(replacedMiddlewares.globalErrorHandler || errorHandler);\n\n return app;\n}\n"]}
1
+ {"version":3,"file":"app.js","sourceRoot":"","sources":["../../src/app.ts"],"names":[],"mappings":"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","sourcesContent":["import express from \"express\";\nimport cors from \"cors\";\nimport cookieParser from \"cookie-parser\";\nimport { getAuthRouter } from \"./modules/auth/auth.router\";\nimport {\n getPrismaModelsRouter,\n getAvailableResourcesAndRoutesRouter,\n} from \"./modules/base/base.router\";\nimport errorHandler from \"./modules/error-handler/error-handler.controller\";\nimport { rateLimit } from \"express-rate-limit\";\nimport path from \"path\";\nimport * as dotenv from \"dotenv\";\nimport compression from \"compression\";\nimport { handleRequestLogs } from \"./modules/base/base.middlewares\";\nimport {\n checkDatabaseConnection,\n loadPrismaModule,\n} from \"./utils/helpers/prisma.helpers\";\nimport { getFileUploaderRouter } from \"./modules/file-uploader/file-uploader.router\";\nimport { ArkosConfig } from \"./types/arkos-config\";\nimport { queryParser } from \"./utils/helpers/query-parser.helpers\";\nimport deepmerge from \"./utils/helpers/deepmerge.helper\";\n\nconst ENV = process.env.NODE_ENV;\nlet envPath = \".env\";\n\n// Default to `.env.local` if available in any environment\nif (ENV === \"production\") {\n envPath = path.resolve(process.cwd(), \".env.production\");\n} else if (ENV === \"staging\") {\n envPath = path.resolve(process.cwd(), \".env.staging\");\n} else if (ENV === \"development\") {\n envPath = path.resolve(process.cwd(), \".env.development\");\n} else if (ENV === \"local\") {\n // For local development, .env.local can be used\n envPath = path.resolve(process.cwd(), \".env.local\");\n}\n\n// Optionally, add support for `.env.test`, `.env.qa`, or other environments if required\nelse if (ENV === \"test\") {\n envPath = path.resolve(process.cwd(), \".env.test\");\n} else if (ENV === \"qa\") {\n envPath = path.resolve(process.cwd(), \".env.qa\");\n}\n\ndotenv.config({ path: envPath });\n\nexport const app: express.Express = express();\n\nexport async function bootstrap(\n arkosConfig: ArkosConfig\n): Promise<express.Express> {\n await loadPrismaModule();\n\n if (arkosConfig.configureApp) await arkosConfig.configureApp(app);\n\n const middlewaresConfig = arkosConfig?.middlewares;\n const disabledMiddlewares = middlewaresConfig?.disable || [];\n const replacedMiddlewares = middlewaresConfig?.replace || {};\n\n // Compression middleware\n if (!disabledMiddlewares?.includes?.(\"compression\"))\n app.use(\n replacedMiddlewares.compression ||\n compression(arkosConfig?.compressionOptions)\n );\n\n // Global rate limit middleware\n if (!disabledMiddlewares?.includes?.(\"global-rate-limit\"))\n app.use(\n replacedMiddlewares.globalRateLimit ||\n rateLimit(\n deepmerge(\n {\n windowMs: 60 * 1000,\n limit: 1000,\n standardHeaders: \"draft-7\",\n legacyHeaders: false,\n },\n arkosConfig?.globalRequestRateLimitOptions || {}\n )\n )\n );\n\n // CORS middleware\n if (!disabledMiddlewares?.includes?.(\"cors\"))\n app.use(\n replacedMiddlewares.cors ||\n cors(\n arkosConfig?.cors?.customHandler\n ? arkosConfig.cors.customHandler\n : deepmerge(\n {\n origin: (\n origin: string,\n cb: (err: Error | null, allow?: boolean) => void\n ) => {\n const allowed = arkosConfig?.cors?.allowedOrigins;\n\n if (allowed === \"*\") {\n cb(null, true);\n } else if (Array.isArray(allowed)) {\n cb(null, !origin || allowed?.includes?.(origin));\n } else if (typeof allowed === \"string\") {\n cb(null, !origin || allowed === origin);\n } else {\n cb(null, false);\n }\n },\n methods: [\"GET\", \"POST\", \"PUT\", \"DELETE\", \"PATCH\", \"OPTIONS\"],\n allowedHeaders: [\n \"Content-Type\",\n \"Authorization\",\n \"Connection\",\n ],\n credentials: true,\n },\n arkosConfig?.cors?.options || {}\n )\n )\n );\n\n // JSON body parser middleware\n if (!disabledMiddlewares?.includes?.(\"express-json\"))\n app.use(\n replacedMiddlewares.expressJson ||\n express.json(arkosConfig?.jsonBodyParserOptions)\n );\n\n // Cookie parser middleware\n if (!disabledMiddlewares?.includes?.(\"cookie-parser\"))\n app.use(\n replacedMiddlewares.cookieParser ||\n cookieParser(...[...(arkosConfig?.cookieParserParameters || [])])\n );\n\n // Query parser middleware\n if (!disabledMiddlewares?.includes?.(\"query-parser\"))\n app.use(\n replacedMiddlewares.queryParser ||\n queryParser(\n deepmerge(\n {\n parseNull: true,\n parseUndefined: true,\n parseBoolean: true,\n },\n arkosConfig?.queryParserOptions || {}\n )\n )\n );\n\n // Database connection check middleware\n if (!disabledMiddlewares?.includes?.(\"database-connection\"))\n app.use(replacedMiddlewares.databaseConnection || checkDatabaseConnection);\n\n // Request logger middleware\n if (!disabledMiddlewares?.includes?.(\"request-logger\"))\n app.use(replacedMiddlewares.requestLogger || handleRequestLogs);\n\n // Additional custom middlewares\n if (arkosConfig?.middlewares?.additional)\n arkosConfig.middlewares.additional.forEach((middleware) => {\n app.use(middleware);\n });\n\n // Configure routers\n const routersConfig = arkosConfig?.routers;\n const disabledRouters = routersConfig?.disable || [];\n const replacedRouters = routersConfig?.replace || {};\n\n // Welcome endpoint\n if (!disabledRouters?.includes?.(\"welcome-endpoint\"))\n app.get(\n \"/api\",\n replacedRouters.welcomeEndpoint ||\n ((req, res) => {\n res.status(200).json({ message: arkosConfig.welcomeMessage });\n })\n );\n\n // File uploader router\n if (!disabledRouters?.includes?.(\"file-uploader\")) {\n const fileUploaderRouter = replacedRouters.fileUploader\n ? await replacedRouters.fileUploader(arkosConfig)\n : await getFileUploaderRouter(arkosConfig);\n app.use(fileUploaderRouter);\n }\n\n // Auth router\n if (\n !disabledRouters?.includes?.(\"auth-router\") &&\n arkosConfig.authentication\n ) {\n const authRouter = replacedRouters.authRouter\n ? await replacedRouters.authRouter(arkosConfig)\n : await getAuthRouter(arkosConfig);\n app.use(\"/api\", authRouter);\n }\n\n // Prisma models router\n if (!disabledRouters?.includes?.(\"prisma-models-router\")) {\n const modelsRouter = replacedRouters.prismaModelsRouter\n ? await replacedRouters.prismaModelsRouter(arkosConfig)\n : await getPrismaModelsRouter(arkosConfig);\n app.use(\"/api\", modelsRouter);\n }\n\n app.use(\"/api\", getAvailableResourcesAndRoutesRouter());\n\n // Additional custom routers\n if (routersConfig?.additional) {\n routersConfig.additional.forEach((router) => {\n app.use(router);\n });\n }\n\n // Global error handler middleware (must be last)\n if (!disabledMiddlewares?.includes?.(\"global-error-handler\"))\n app.use(replacedMiddlewares.globalErrorHandler || errorHandler);\n\n return app;\n}\n"]}
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.handleRequestBodyValidationAndTransformation = exports.addPrismaQueryOptionsToRequestQuery = void 0;
4
+ var base_middlewares_1 = require("../../modules/base/base.middlewares");
5
+ Object.defineProperty(exports, "addPrismaQueryOptionsToRequestQuery", { enumerable: true, get: function () { return base_middlewares_1.addPrismaQueryOptionsToRequestQuery; } });
6
+ Object.defineProperty(exports, "handleRequestBodyValidationAndTransformation", { enumerable: true, get: function () { return base_middlewares_1.handleRequestBodyValidationAndTransformation; } });
7
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/exports/middlewares/index.ts"],"names":[],"mappings":";;;AAAA,wEAG6C;AAF3C,uIAAA,mCAAmC,OAAA;AACnC,gJAAA,4CAA4C,OAAA","sourcesContent":["export {\n addPrismaQueryOptionsToRequestQuery,\n handleRequestBodyValidationAndTransformation,\n} from \"../../modules/base/base.middlewares\";\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/exports/utils/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,0EAAwD","sourcesContent":["export * from \"../../utils/helpers/change-case.helpers\";\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/exports/utils/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,0EAAwD","sourcesContent":["export * from \"../../utils/helpers/change-case.helpers\";\n\nexport { MsDuration } from \"../../modules/auth/utils/helpers/auth.controller.helpers\";\n"]}
@@ -37,8 +37,8 @@ const authControllerFactory = (...args_1) => __awaiter(void 0, [...args_1], void
37
37
  getMe: (0, catch_async_1.default)((req, res, next) => __awaiter(void 0, void 0, void 0, function* () {
38
38
  const user = yield baseServices["user"].findOne({ id: req.user.id }, stringifiedQueryOptions);
39
39
  Object.keys(exports.defaultExcludedUserFields).forEach((key) => {
40
- if (req.user)
41
- delete req.user[key];
40
+ if (user)
41
+ delete user[key];
42
42
  });
43
43
  if (middlewares === null || middlewares === void 0 ? void 0 : middlewares.afterGetMe) {
44
44
  req.responseData = { data: user };
@@ -52,15 +52,15 @@ const authControllerFactory = (...args_1) => __awaiter(void 0, [...args_1], void
52
52
  throw new app_error_1.default("In order to update password use the update-password endpoint.", 400);
53
53
  const user = yield baseServices["user"].updateOne({ id: req.user.id }, req.body, stringifiedQueryOptions);
54
54
  Object.keys(exports.defaultExcludedUserFields).forEach((key) => {
55
- if (req.user)
56
- delete req.user[key];
55
+ if (user)
56
+ delete user[key];
57
57
  });
58
58
  if (middlewares === null || middlewares === void 0 ? void 0 : middlewares.afterGetMe) {
59
59
  req.responseData = user;
60
60
  req.responseStatus = 200;
61
61
  return next();
62
62
  }
63
- res.status(200).json({ data: req.user });
63
+ res.status(200).json({ data: user });
64
64
  })),
65
65
  logout: (0, catch_async_1.default)((req, res, next) => __awaiter(void 0, void 0, void 0, function* () {
66
66
  res.cookie("arkos_access_token", "no-token", {
@@ -75,18 +75,17 @@ const authControllerFactory = (...args_1) => __awaiter(void 0, [...args_1], void
75
75
  res.status(204).json();
76
76
  })),
77
77
  login: (0, catch_async_1.default)((req, res, next) => __awaiter(void 0, void 0, void 0, function* () {
78
- var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;
78
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s;
79
79
  const authConfigs = (_a = (0, server_1.getArkosConfig)()) === null || _a === void 0 ? void 0 : _a.authentication;
80
80
  const usernameField = (0, auth_controller_helpers_1.determineUsernameField)(req);
81
- const topLevelField = usernameField.split(".")[0];
82
- const usernameValue = req.body[topLevelField];
81
+ const lastField = usernameField.split(".")[usernameField.split(".").length - 1];
82
+ const usernameValue = req.body[lastField];
83
83
  const { password } = req.body;
84
- if (!usernameValue || !password) {
85
- return next(new app_error_1.default(`Please provide ${topLevelField} and password`, 400));
86
- }
84
+ if (!usernameValue || !password)
85
+ return next(new app_error_1.default(`Please provide both ${lastField} and password`, 400));
87
86
  const prisma = (0, prisma_helpers_1.getPrismaInstance)();
88
87
  let whereClause;
89
- if (usernameField.includes(".")) {
88
+ if ((_b = usernameField === null || usernameField === void 0 ? void 0 : usernameField.includes) === null || _b === void 0 ? void 0 : _b.call(usernameField, ".")) {
90
89
  const valueToFind = (0, auth_controller_helpers_1.getNestedValue)(req.body, usernameField);
91
90
  if (valueToFind === undefined) {
92
91
  return next(new app_error_1.default(`Invalid ${usernameField} provided`, 400));
@@ -101,46 +100,46 @@ const authControllerFactory = (...args_1) => __awaiter(void 0, [...args_1], void
101
100
  });
102
101
  if (!user ||
103
102
  !(yield auth_service_1.default.isCorrectPassword(password, user.password))) {
104
- return next(new app_error_1.default(`Incorrect ${topLevelField.toLowerCase()} or password`, 401));
103
+ return next(new app_error_1.default(`Incorrect ${lastField} or password`, 401));
105
104
  }
106
105
  const token = auth_service_1.default.signJwtToken(user.id);
107
106
  const cookieOptions = {
108
107
  expires: new Date(Date.now() +
109
- Number((0, auth_controller_helpers_1.toMs)(((_b = authConfigs === null || authConfigs === void 0 ? void 0 : authConfigs.jwt) === null || _b === void 0 ? void 0 : _b.expiresIn) ||
110
- arkos_env_1.default.JWT_EXPIRES_IN)) *
111
- 24 *
112
- 60 *
113
- 60 *
114
- 1000),
115
- httpOnly: ((_d = (_c = authConfigs === null || authConfigs === void 0 ? void 0 : authConfigs.jwt) === null || _c === void 0 ? void 0 : _c.cookie) === null || _d === void 0 ? void 0 : _d.httpOnly) ||
108
+ Number((0, auth_controller_helpers_1.toMs)(((_c = authConfigs === null || authConfigs === void 0 ? void 0 : authConfigs.jwt) === null || _c === void 0 ? void 0 : _c.expiresIn) ||
109
+ process.env.JWT_EXPIRES_IN ||
110
+ arkos_env_1.default.JWT_EXPIRES_IN))),
111
+ httpOnly: ((_e = (_d = authConfigs === null || authConfigs === void 0 ? void 0 : authConfigs.jwt) === null || _d === void 0 ? void 0 : _d.cookie) === null || _e === void 0 ? void 0 : _e.httpOnly) ||
116
112
  process.env.JWT_COOKIE_HTTP_ONLY === "true" ||
117
113
  true,
118
- secure: ((_f = (_e = authConfigs === null || authConfigs === void 0 ? void 0 : authConfigs.jwt) === null || _e === void 0 ? void 0 : _e.cookie) === null || _f === void 0 ? void 0 : _f.secure) ||
114
+ secure: ((_g = (_f = authConfigs === null || authConfigs === void 0 ? void 0 : authConfigs.jwt) === null || _f === void 0 ? void 0 : _f.cookie) === null || _g === void 0 ? void 0 : _g.secure) ||
119
115
  process.env.JWT_COOKIE_SECURE === "true" ||
120
116
  req.secure ||
121
117
  req.headers["x-forwarded-proto"] === "https",
122
- sameSite: ((_h = (_g = authConfigs === null || authConfigs === void 0 ? void 0 : authConfigs.jwt) === null || _g === void 0 ? void 0 : _g.cookie) === null || _h === void 0 ? void 0 : _h.sameSite) ||
118
+ sameSite: ((_j = (_h = authConfigs === null || authConfigs === void 0 ? void 0 : authConfigs.jwt) === null || _h === void 0 ? void 0 : _h.cookie) === null || _j === void 0 ? void 0 : _j.sameSite) ||
123
119
  process.env.JWT_COOKIE_SAME_SITE ||
124
120
  process.env.NODE_ENV === "production"
125
121
  ? "none"
126
122
  : "lax",
127
123
  };
128
- if (middlewares === null || middlewares === void 0 ? void 0 : middlewares.afterLogin) {
124
+ if (((_k = authConfigs === null || authConfigs === void 0 ? void 0 : authConfigs.login) === null || _k === void 0 ? void 0 : _k.sendAccessTokenThrough) === "response-only" ||
125
+ ((_l = authConfigs === null || authConfigs === void 0 ? void 0 : authConfigs.login) === null || _l === void 0 ? void 0 : _l.sendAccessTokenThrough) === "both") {
129
126
  req.responseData = { accessToken: token };
127
+ }
128
+ else if (((_m = authConfigs === null || authConfigs === void 0 ? void 0 : authConfigs.login) === null || _m === void 0 ? void 0 : _m.sendAccessTokenThrough) === "cookie-only" ||
129
+ ((_o = authConfigs === null || authConfigs === void 0 ? void 0 : authConfigs.login) === null || _o === void 0 ? void 0 : _o.sendAccessTokenThrough) === "both")
130
+ res.cookie("arkos_access_token", token, cookieOptions);
131
+ if (middlewares === null || middlewares === void 0 ? void 0 : middlewares.afterLogin) {
132
+ req.additionalData = { user };
130
133
  req.responseStatus = 200;
131
134
  return next();
132
135
  }
133
- if (((_j = authConfigs === null || authConfigs === void 0 ? void 0 : authConfigs.login) === null || _j === void 0 ? void 0 : _j.sendAccessTokenThrough) === "response-only") {
134
- res.status(200).json({ accessToken: token });
136
+ if (((_p = authConfigs === null || authConfigs === void 0 ? void 0 : authConfigs.login) === null || _p === void 0 ? void 0 : _p.sendAccessTokenThrough) === "response-only" ||
137
+ ((_q = authConfigs === null || authConfigs === void 0 ? void 0 : authConfigs.login) === null || _q === void 0 ? void 0 : _q.sendAccessTokenThrough) === "both") {
138
+ res.status(200).json(req.responseData);
135
139
  }
136
- else if (((_k = authConfigs === null || authConfigs === void 0 ? void 0 : authConfigs.login) === null || _k === void 0 ? void 0 : _k.sendAccessTokenThrough) === "cookie-only") {
137
- res.cookie("arkos_access_token", token, cookieOptions);
140
+ else if (((_r = authConfigs === null || authConfigs === void 0 ? void 0 : authConfigs.login) === null || _r === void 0 ? void 0 : _r.sendAccessTokenThrough) === "cookie-only" ||
141
+ ((_s = authConfigs === null || authConfigs === void 0 ? void 0 : authConfigs.login) === null || _s === void 0 ? void 0 : _s.sendAccessTokenThrough) === "both")
138
142
  res.status(200).send();
139
- }
140
- else {
141
- res.cookie("arkos_access_token", token, cookieOptions);
142
- res.status(200).json({ accessToken: token });
143
- }
144
143
  })),
145
144
  signup: (0, catch_async_1.default)((req, res, next) => __awaiter(void 0, void 0, void 0, function* () {
146
145
  const userService = baseServices["user"];
@@ -156,7 +155,7 @@ const authControllerFactory = (...args_1) => __awaiter(void 0, [...args_1], void
156
155
  res.status(201).json({ data: user });
157
156
  })),
158
157
  updatePassword: (0, catch_async_1.default)((req, res, next) => __awaiter(void 0, void 0, void 0, function* () {
159
- var _a, _b;
158
+ var _a;
160
159
  const { currentPassword, newPassword } = req.body;
161
160
  if (!currentPassword || !newPassword)
162
161
  return next(new app_error_1.default("currentPassword and newPassword are required", 400));
@@ -164,12 +163,14 @@ const authControllerFactory = (...args_1) => __awaiter(void 0, [...args_1], void
164
163
  if (!user || (user === null || user === void 0 ? void 0 : user.isActive) === false || (user === null || user === void 0 ? void 0 : user.deletedSelfAccountAt))
165
164
  return next(new app_error_1.default("User not found!", 404));
166
165
  const isPasswordCorrect = yield auth_service_1.default.isCorrectPassword(String(currentPassword), String(user.password));
166
+ const configs = (0, server_1.getArkosConfig)();
167
+ const initAuthConfigs = configs === null || configs === void 0 ? void 0 : configs.authentication;
167
168
  if (!isPasswordCorrect)
168
169
  return next(new app_error_1.default("Current password is incorrect.", 400));
169
- if (!auth_service_1.default.isPasswordStrong(String(newPassword))) {
170
- const initAuthConfigs = (_a = (0, server_1.getArkosConfig)()) === null || _a === void 0 ? void 0 : _a.authentication;
171
- return next(new app_error_1.default(((_b = initAuthConfigs === null || initAuthConfigs === void 0 ? void 0 : initAuthConfigs.passwordValidation) === null || _b === void 0 ? void 0 : _b.message) ||
172
- "Password must contain at least one uppercase letter, one lowercase letter, and one number", 400));
170
+ if (!auth_service_1.default.isPasswordStrong(String(newPassword)) &&
171
+ !(configs === null || configs === void 0 ? void 0 : configs.validation)) {
172
+ return next(new app_error_1.default(((_a = initAuthConfigs === null || initAuthConfigs === void 0 ? void 0 : initAuthConfigs.passwordValidation) === null || _a === void 0 ? void 0 : _a.message) ||
173
+ "The new password must contain at least one uppercase letter, one lowercase letter, and one number", 400));
173
174
  }
174
175
  const prisma = (0, prisma_helpers_1.getPrismaInstance)();
175
176
  yield prisma.user.update({
@@ -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 { getBaseServices } from \"../base/base.service\";\nimport { User } from \"../../types\";\nimport { getPrismaInstance } from \"../../utils/helpers/prisma.helpers\";\nimport { importPrismaModelModules } from \"../../utils/helpers/models.helpers\";\nimport deepmerge from \"../../utils/helpers/deepmerge.helper\";\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\";\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 middlewares\n *\n * @param middlewares - Optional middleware functions to execute after controller actions\n * @returns An object containing all authentication controller methods\n */\nexport const authControllerFactory = async (middlewares: any = {}) => {\n const baseServices = getBaseServices();\n let prismaQueryOptions: Record<string, any> = {};\n\n const userModules = await importPrismaModelModules(\"user\");\n if (userModules) prismaQueryOptions = userModules?.prismaQueryOptions || {};\n\n const stringifiedQueryOptions = JSON.stringify(\n deepmerge(\n prismaQueryOptions?.queryOptions || {},\n prismaQueryOptions?.findOne || {}\n ) || {}\n );\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 baseServices[\"user\"].findOne(\n { id: req.user!.id },\n stringifiedQueryOptions\n );\n\n Object.keys(defaultExcludedUserFields).forEach((key) => {\n if (req.user) delete req.user[key as keyof User];\n });\n\n if (middlewares?.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\n const user = await baseServices[\"user\"].updateOne(\n { id: req.user!.id },\n req.body,\n stringifiedQueryOptions\n );\n\n Object.keys(defaultExcludedUserFields).forEach((key) => {\n if (req.user) delete req.user[key as keyof User];\n });\n\n if (middlewares?.afterGetMe) {\n req.responseData = user;\n req.responseStatus = 200;\n return next();\n }\n\n res.status(200).json({ data: req.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 (middlewares?.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 * 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 topLevelField = usernameField.split(\".\")[0];\n const usernameValue = req.body[topLevelField];\n const { password } = req.body;\n\n if (!usernameValue || !password) {\n return next(\n new AppError(`Please provide ${topLevelField} and password`, 400)\n );\n }\n\n const prisma = getPrismaInstance();\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 (prisma as any).user.findFirst({\n where: whereClause,\n });\n\n if (\n !user ||\n !(await authService.isCorrectPassword(password, user.password))\n ) {\n return next(\n new AppError(\n `Incorrect ${topLevelField.toLowerCase()} or password`,\n 401\n )\n );\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 (arkosEnv.JWT_EXPIRES_IN as MsDuration)\n )\n ) *\n 24 *\n 60 *\n 60 *\n 1000\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 ||\n process.env.NODE_ENV === \"production\"\n ? \"none\"\n : \"lax\",\n };\n\n if (middlewares?.afterLogin) {\n req.responseData = { accessToken: token };\n req.responseStatus = 200;\n return next();\n }\n\n if (authConfigs?.login?.sendAccessTokenThrough === \"response-only\") {\n res.status(200).json({ accessToken: token });\n } else if (\n authConfigs?.login?.sendAccessTokenThrough === \"cookie-only\"\n ) {\n res.cookie(\"arkos_access_token\", token, cookieOptions);\n res.status(200).send();\n } else {\n res.cookie(\"arkos_access_token\", token, cookieOptions);\n res.status(200).json({ accessToken: token });\n }\n }\n ),\n\n /**\n * Creates a new user account\n */\n signup: catchAsync(\n async (\n req: ArkosRequest,\n res: ArkosResponse,\n next: ArkosNextFunction\n ) => {\n const userService = baseServices[\"user\"];\n\n const user = await userService.createOne(\n req.body,\n stringifiedQueryOptions\n );\n\n if (middlewares?.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 /**\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 if (!isPasswordCorrect)\n return next(new AppError(\"Current password is incorrect.\", 400));\n\n // Check password strength (optional but recommended)\n if (!authService.isPasswordStrong(String(newPassword))) {\n const initAuthConfigs = getArkosConfig()?.authentication;\n\n return next(\n new AppError(\n initAuthConfigs?.passwordValidation?.message ||\n \"Password must contain at least one uppercase letter, one lowercase letter, and one number\",\n 400\n )\n );\n }\n\n const prisma = getPrismaInstance();\n\n // Update the password\n await (prisma as any).user.update({\n where: { id: user.id },\n data: {\n password: await authService.hashPassword(newPassword),\n passwordChangedAt: new Date(),\n },\n });\n\n if (middlewares?.afterUpdatePassword) {\n (req as any).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};\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 { getBaseServices } from \"../base/base.service\";\nimport { User } from \"../../types\";\nimport { getPrismaInstance } from \"../../utils/helpers/prisma.helpers\";\nimport {\n getModelModules,\n importPrismaModelModules,\n} from \"../../utils/helpers/models.helpers\";\nimport deepmerge from \"../../utils/helpers/deepmerge.helper\";\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\";\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 middlewares\n *\n * @param middlewares - Optional middleware functions to execute after controller actions\n * @returns An object containing all authentication controller methods\n */\nexport const authControllerFactory = async (middlewares: any = {}) => {\n const baseServices = getBaseServices();\n let prismaQueryOptions: Record<string, any> = {};\n\n const userModules = await importPrismaModelModules(\"user\");\n if (userModules) prismaQueryOptions = userModules?.prismaQueryOptions || {};\n\n const stringifiedQueryOptions = JSON.stringify(\n deepmerge(\n prismaQueryOptions?.queryOptions || {},\n prismaQueryOptions?.findOne || {}\n ) || {}\n );\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 baseServices[\"user\"].findOne(\n { id: req.user!.id },\n stringifiedQueryOptions\n );\n\n Object.keys(defaultExcludedUserFields).forEach((key) => {\n if (user) delete user[key as keyof User];\n });\n\n if (middlewares?.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\n const user = await baseServices[\"user\"].updateOne(\n { id: req.user!.id },\n req.body,\n stringifiedQueryOptions\n );\n\n Object.keys(defaultExcludedUserFields).forEach((key) => {\n if (user) delete user[key as keyof User];\n });\n\n if (middlewares?.afterGetMe) {\n req.responseData = 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 (middlewares?.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 * 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 const prisma = getPrismaInstance();\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 (prisma as any).user.findFirst({\n where: whereClause,\n // select: {\n // id: true,\n // password: true,\n // },\n });\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 ||\n process.env.NODE_ENV === \"production\"\n ? \"none\"\n : \"lax\",\n };\n\n if (\n authConfigs?.login?.sendAccessTokenThrough === \"response-only\" ||\n authConfigs?.login?.sendAccessTokenThrough === \"both\"\n ) {\n req.responseData = { accessToken: token };\n } else if (\n authConfigs?.login?.sendAccessTokenThrough === \"cookie-only\" ||\n authConfigs?.login?.sendAccessTokenThrough === \"both\"\n )\n res.cookie(\"arkos_access_token\", token, cookieOptions);\n\n if (middlewares?.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 ) {\n res.status(200).json(req.responseData);\n } else if (\n authConfigs?.login?.sendAccessTokenThrough === \"cookie-only\" ||\n authConfigs?.login?.sendAccessTokenThrough === \"both\"\n )\n res.status(200).send();\n }\n ),\n\n /**\n * Creates a new user account\n */\n signup: catchAsync(\n async (\n req: ArkosRequest,\n res: ArkosResponse,\n next: ArkosNextFunction\n ) => {\n const userService = baseServices[\"user\"];\n\n const user = await userService.createOne(\n req.body,\n stringifiedQueryOptions\n );\n\n if (middlewares?.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 /**\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 // const modules = getModelModules(\"auth\");\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 const prisma = getPrismaInstance();\n\n // Update the password\n await (prisma as any).user.update({\n where: { id: user.id },\n data: {\n password: await authService.hashPassword(newPassword),\n passwordChangedAt: new Date(),\n },\n });\n\n if (middlewares?.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};\n"]}
@@ -20,7 +20,6 @@ const express_rate_limit_1 = __importDefault(require("express-rate-limit"));
20
20
  const models_helpers_1 = require("../../utils/helpers/models.helpers");
21
21
  const base_middlewares_1 = require("../base/base.middlewares");
22
22
  const deepmerge_helper_1 = __importDefault(require("../../utils/helpers/deepmerge.helper"));
23
- const base_controller_helpers_1 = require("../../utils/helpers/base.controller.helpers");
24
23
  const router = (0, express_1.Router)();
25
24
  function getAuthRouter(arkosConfigs) {
26
25
  return __awaiter(this, void 0, void 0, function* () {
@@ -33,7 +32,7 @@ function getAuthRouter(arkosConfigs) {
33
32
  : (_b = middlewares === null || middlewares === void 0 ? void 0 : middlewares.afterGetMe) !== null && _b !== void 0 ? _b : base_middlewares_1.sendResponse, (middlewares === null || middlewares === void 0 ? void 0 : middlewares.beforeGetMe) && (middlewares === null || middlewares === void 0 ? void 0 : middlewares.afterGetMe)
34
33
  ? middlewares === null || middlewares === void 0 ? void 0 : middlewares.afterGetMe
35
34
  : base_middlewares_1.sendResponse, base_middlewares_1.sendResponse)
36
- .patch("/users/me", auth_service_1.default.authenticate, (0, base_controller_helpers_1.handleRequestBodyValidationAndTransformation)("auth", "updateMe"), (_c = middlewares === null || middlewares === void 0 ? void 0 : middlewares.beforeGetMe) !== null && _c !== void 0 ? _c : authController.getMe, (middlewares === null || middlewares === void 0 ? void 0 : middlewares.beforeGetMe)
35
+ .patch("/users/me", auth_service_1.default.authenticate, (0, base_middlewares_1.handleRequestBodyValidationAndTransformation)("auth", "updateMe"), (_c = middlewares === null || middlewares === void 0 ? void 0 : middlewares.beforeGetMe) !== null && _c !== void 0 ? _c : authController.getMe, (middlewares === null || middlewares === void 0 ? void 0 : middlewares.beforeGetMe)
37
36
  ? authController.getMe
38
37
  : (_d = middlewares === null || middlewares === void 0 ? void 0 : middlewares.afterGetMe) !== null && _d !== void 0 ? _d : base_middlewares_1.sendResponse, (middlewares === null || middlewares === void 0 ? void 0 : middlewares.beforeGetMe) && (middlewares === null || middlewares === void 0 ? void 0 : middlewares.afterGetMe)
39
38
  ? middlewares === null || middlewares === void 0 ? void 0 : middlewares.afterGetMe
@@ -49,7 +48,7 @@ function getAuthRouter(arkosConfigs) {
49
48
  standardHeaders: "draft-7",
50
49
  legacyHeaders: false,
51
50
  }, ((_g = arkosConfigs === null || arkosConfigs === void 0 ? void 0 : arkosConfigs.authentication) === null || _g === void 0 ? void 0 : _g.requestRateLimitOptions) || {})));
52
- router.post("/auth/login", (0, base_controller_helpers_1.handleRequestBodyValidationAndTransformation)("auth", "login"), (_h = middlewares === null || middlewares === void 0 ? void 0 : middlewares.beforeLogin) !== null && _h !== void 0 ? _h : authController.login, (middlewares === null || middlewares === void 0 ? void 0 : middlewares.beforeLogin)
51
+ router.post("/auth/login", (0, base_middlewares_1.handleRequestBodyValidationAndTransformation)("auth", "login"), (_h = middlewares === null || middlewares === void 0 ? void 0 : middlewares.beforeLogin) !== null && _h !== void 0 ? _h : authController.login, (middlewares === null || middlewares === void 0 ? void 0 : middlewares.beforeLogin)
53
52
  ? authController.login
54
53
  : (_j = middlewares === null || middlewares === void 0 ? void 0 : middlewares.afterLogin) !== null && _j !== void 0 ? _j : base_middlewares_1.sendResponse, (middlewares === null || middlewares === void 0 ? void 0 : middlewares.beforeLogin) && (middlewares === null || middlewares === void 0 ? void 0 : middlewares.afterLogin)
55
54
  ? middlewares === null || middlewares === void 0 ? void 0 : middlewares.afterLogin
@@ -59,12 +58,12 @@ function getAuthRouter(arkosConfigs) {
59
58
  : (_l = middlewares === null || middlewares === void 0 ? void 0 : middlewares.afterLogout) !== null && _l !== void 0 ? _l : base_middlewares_1.sendResponse, (middlewares === null || middlewares === void 0 ? void 0 : middlewares.beforeLogout) && (middlewares === null || middlewares === void 0 ? void 0 : middlewares.afterLogout)
60
59
  ? middlewares === null || middlewares === void 0 ? void 0 : middlewares.afterLogout
61
60
  : base_middlewares_1.sendResponse, base_middlewares_1.sendResponse);
62
- router.post("/auth/signup", (0, base_controller_helpers_1.handleRequestBodyValidationAndTransformation)("auth", "signup"), (_m = middlewares === null || middlewares === void 0 ? void 0 : middlewares.beforeSignup) !== null && _m !== void 0 ? _m : authController.signup, (middlewares === null || middlewares === void 0 ? void 0 : middlewares.beforeSignup)
61
+ router.post("/auth/signup", (0, base_middlewares_1.handleRequestBodyValidationAndTransformation)("auth", "signup"), (_m = middlewares === null || middlewares === void 0 ? void 0 : middlewares.beforeSignup) !== null && _m !== void 0 ? _m : authController.signup, (middlewares === null || middlewares === void 0 ? void 0 : middlewares.beforeSignup)
63
62
  ? authController.signup
64
63
  : (_o = middlewares === null || middlewares === void 0 ? void 0 : middlewares.afterSignup) !== null && _o !== void 0 ? _o : base_middlewares_1.sendResponse, (middlewares === null || middlewares === void 0 ? void 0 : middlewares.beforeSignup) && (middlewares === null || middlewares === void 0 ? void 0 : middlewares.afterSignup)
65
64
  ? middlewares === null || middlewares === void 0 ? void 0 : middlewares.afterSignup
66
65
  : base_middlewares_1.sendResponse, base_middlewares_1.sendResponse);
67
- router.post("/auth/update-password", auth_service_1.default.authenticate, (0, base_controller_helpers_1.handleRequestBodyValidationAndTransformation)("auth", "updatePassword"), (_p = middlewares === null || middlewares === void 0 ? void 0 : middlewares.beforeUpdatePassword) !== null && _p !== void 0 ? _p : authController.updatePassword, (middlewares === null || middlewares === void 0 ? void 0 : middlewares.beforeUpdatePassword)
66
+ router.post("/auth/update-password", auth_service_1.default.authenticate, (0, base_middlewares_1.handleRequestBodyValidationAndTransformation)("auth", "updatePassword"), (_p = middlewares === null || middlewares === void 0 ? void 0 : middlewares.beforeUpdatePassword) !== null && _p !== void 0 ? _p : authController.updatePassword, (middlewares === null || middlewares === void 0 ? void 0 : middlewares.beforeUpdatePassword)
68
67
  ? authController.updatePassword
69
68
  : (_q = middlewares === null || middlewares === void 0 ? void 0 : middlewares.afterUpdatePassword) !== null && _q !== void 0 ? _q : base_middlewares_1.sendResponse, (middlewares === null || middlewares === void 0 ? void 0 : middlewares.beforeUpdatePassword) && (middlewares === null || middlewares === void 0 ? void 0 : middlewares.afterUpdatePassword)
70
69
  ? middlewares === null || middlewares === void 0 ? void 0 : middlewares.afterUpdatePassword
@@ -1 +1 @@
1
- {"version":3,"file":"auth.router.js","sourceRoot":"","sources":["../../../../src/modules/auth/auth.router.ts"],"names":[],"mappings":"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","sourcesContent":["import { Router } from \"express\";\nimport { authControllerFactory } from \"./auth.controller\";\nimport authService from \"./auth.service\";\nimport rateLimit from \"express-rate-limit\";\nimport { importPrismaModelModules } from \"../../utils/helpers/models.helpers\";\nimport { sendResponse } from \"../base/base.middlewares\";\nimport { ArkosConfig } from \"../../types/arkos-config\";\nimport deepmerge from \"../../utils/helpers/deepmerge.helper\";\nimport { handleRequestBodyValidationAndTransformation } from \"../../utils/helpers/base.controller.helpers\";\n\nconst router: Router = Router();\n\nexport async function getAuthRouter(arkosConfigs: ArkosConfig) {\n const { middlewares } = await importPrismaModelModules(\"auth\");\n const authController = await authControllerFactory(middlewares);\n\n router\n .get(\n \"/users/me\",\n authService.authenticate,\n middlewares?.beforeGetMe ?? authController.getMe,\n middlewares?.beforeGetMe\n ? authController.getMe\n : middlewares?.afterGetMe ?? sendResponse,\n middlewares?.beforeGetMe && middlewares?.afterGetMe\n ? middlewares?.afterGetMe\n : sendResponse,\n sendResponse\n )\n .patch(\n \"/users/me\",\n authService.authenticate,\n handleRequestBodyValidationAndTransformation(\"auth\", \"updateMe\"),\n middlewares?.beforeGetMe ?? authController.getMe,\n middlewares?.beforeGetMe\n ? authController.getMe\n : middlewares?.afterGetMe ?? sendResponse,\n middlewares?.beforeGetMe && middlewares?.afterGetMe\n ? middlewares?.afterGetMe\n : sendResponse,\n sendResponse\n )\n .delete(\n \"/users/me\",\n authService.authenticate,\n middlewares?.beforeGetMe ?? authController.getMe,\n middlewares?.beforeGetMe\n ? authController.getMe\n : middlewares?.afterGetMe ?? sendResponse,\n middlewares?.beforeGetMe && middlewares?.afterGetMe\n ? middlewares?.afterGetMe\n : sendResponse,\n sendResponse\n );\n\n router.use(\n rateLimit(\n deepmerge(\n {\n windowMs: 5000,\n limit: 10,\n standardHeaders: \"draft-7\",\n legacyHeaders: false,\n },\n arkosConfigs?.authentication?.requestRateLimitOptions || {}\n )\n )\n );\n\n router.post(\n \"/auth/login\",\n handleRequestBodyValidationAndTransformation(\"auth\", \"login\"),\n middlewares?.beforeLogin ?? authController.login,\n middlewares?.beforeLogin\n ? authController.login\n : middlewares?.afterLogin ?? sendResponse,\n middlewares?.beforeLogin && middlewares?.afterLogin\n ? middlewares?.afterLogin\n : sendResponse,\n sendResponse\n );\n\n router.delete(\n \"/auth/logout\",\n authService.authenticate,\n middlewares?.beforeLogout ?? authController.logout,\n middlewares?.beforeLogout\n ? authController.logout\n : middlewares?.afterLogout ?? sendResponse,\n middlewares?.beforeLogout && middlewares?.afterLogout\n ? middlewares?.afterLogout\n : sendResponse,\n sendResponse\n );\n\n router.post(\n \"/auth/signup\",\n handleRequestBodyValidationAndTransformation(\"auth\", \"signup\"),\n middlewares?.beforeSignup ?? authController.signup,\n middlewares?.beforeSignup\n ? authController.signup\n : middlewares?.afterSignup ?? sendResponse,\n middlewares?.beforeSignup && middlewares?.afterSignup\n ? middlewares?.afterSignup\n : sendResponse,\n sendResponse\n );\n\n router.post(\n \"/auth/update-password\",\n authService.authenticate,\n handleRequestBodyValidationAndTransformation(\"auth\", \"updatePassword\"),\n middlewares?.beforeUpdatePassword ?? authController.updatePassword,\n middlewares?.beforeUpdatePassword\n ? authController.updatePassword\n : middlewares?.afterUpdatePassword ?? sendResponse,\n middlewares?.beforeUpdatePassword && middlewares?.afterUpdatePassword\n ? middlewares?.afterUpdatePassword\n : sendResponse,\n sendResponse\n );\n\n return router;\n}\n"]}
1
+ {"version":3,"file":"auth.router.js","sourceRoot":"","sources":["../../../../src/modules/auth/auth.router.ts"],"names":[],"mappings":";;;;;;;;;;;;;;AAcA,sCA+GC;AA7HD,qCAAiC;AACjC,uDAA0D;AAC1D,kEAAyC;AACzC,4EAA2C;AAC3C,uEAA8E;AAC9E,+DAGkC;AAElC,4FAA6D;AAE7D,MAAM,MAAM,GAAW,IAAA,gBAAM,GAAE,CAAC;AAEhC,SAAsB,aAAa,CAAC,YAAyB;;;QAC3D,MAAM,EAAE,WAAW,EAAE,GAAG,MAAM,IAAA,yCAAwB,EAAC,MAAM,CAAC,CAAC;QAC/D,MAAM,cAAc,GAAG,MAAM,IAAA,uCAAqB,EAAC,WAAW,CAAC,CAAC;QAEhE,MAAM;aACH,GAAG,CACF,WAAW,EACX,sBAAW,CAAC,YAAY,EACxB,MAAA,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,WAAW,mCAAI,cAAc,CAAC,KAAK,EAChD,CAAA,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,WAAW;YACtB,CAAC,CAAC,cAAc,CAAC,KAAK;YACtB,CAAC,CAAC,MAAA,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,UAAU,mCAAI,+BAAY,EAC3C,CAAA,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,WAAW,MAAI,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,UAAU,CAAA;YACjD,CAAC,CAAC,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,UAAU;YACzB,CAAC,CAAC,+BAAY,EAChB,+BAAY,CACb;aACA,KAAK,CACJ,WAAW,EACX,sBAAW,CAAC,YAAY,EACxB,IAAA,+DAA4C,EAAC,MAAM,EAAE,UAAU,CAAC,EAChE,MAAA,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,WAAW,mCAAI,cAAc,CAAC,KAAK,EAChD,CAAA,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,WAAW;YACtB,CAAC,CAAC,cAAc,CAAC,KAAK;YACtB,CAAC,CAAC,MAAA,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,UAAU,mCAAI,+BAAY,EAC3C,CAAA,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,WAAW,MAAI,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,UAAU,CAAA;YACjD,CAAC,CAAC,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,UAAU;YACzB,CAAC,CAAC,+BAAY,EAChB,+BAAY,CACb;aACA,MAAM,CACL,WAAW,EACX,sBAAW,CAAC,YAAY,EACxB,MAAA,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,WAAW,mCAAI,cAAc,CAAC,KAAK,EAChD,CAAA,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,WAAW;YACtB,CAAC,CAAC,cAAc,CAAC,KAAK;YACtB,CAAC,CAAC,MAAA,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,UAAU,mCAAI,+BAAY,EAC3C,CAAA,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,WAAW,MAAI,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,UAAU,CAAA;YACjD,CAAC,CAAC,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,UAAU;YACzB,CAAC,CAAC,+BAAY,EAChB,+BAAY,CACb,CAAC;QAEJ,MAAM,CAAC,GAAG,CACR,IAAA,4BAAS,EACP,IAAA,0BAAS,EACP;YACE,QAAQ,EAAE,IAAI;YACd,KAAK,EAAE,EAAE;YACT,eAAe,EAAE,SAAS;YAC1B,aAAa,EAAE,KAAK;SACrB,EACD,CAAA,MAAA,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,cAAc,0CAAE,uBAAuB,KAAI,EAAE,CAC5D,CACF,CACF,CAAC;QAEF,MAAM,CAAC,IAAI,CACT,aAAa,EACb,IAAA,+DAA4C,EAAC,MAAM,EAAE,OAAO,CAAC,EAC7D,MAAA,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,WAAW,mCAAI,cAAc,CAAC,KAAK,EAChD,CAAA,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,WAAW;YACtB,CAAC,CAAC,cAAc,CAAC,KAAK;YACtB,CAAC,CAAC,MAAA,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,UAAU,mCAAI,+BAAY,EAC3C,CAAA,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,WAAW,MAAI,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,UAAU,CAAA;YACjD,CAAC,CAAC,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,UAAU;YACzB,CAAC,CAAC,+BAAY,EAChB,+BAAY,CACb,CAAC;QAEF,MAAM,CAAC,MAAM,CACX,cAAc,EACd,sBAAW,CAAC,YAAY,EACxB,MAAA,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,YAAY,mCAAI,cAAc,CAAC,MAAM,EAClD,CAAA,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,YAAY;YACvB,CAAC,CAAC,cAAc,CAAC,MAAM;YACvB,CAAC,CAAC,MAAA,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,WAAW,mCAAI,+BAAY,EAC5C,CAAA,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,YAAY,MAAI,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,WAAW,CAAA;YACnD,CAAC,CAAC,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,WAAW;YAC1B,CAAC,CAAC,+BAAY,EAChB,+BAAY,CACb,CAAC;QAEF,MAAM,CAAC,IAAI,CACT,cAAc,EACd,IAAA,+DAA4C,EAAC,MAAM,EAAE,QAAQ,CAAC,EAC9D,MAAA,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,YAAY,mCAAI,cAAc,CAAC,MAAM,EAClD,CAAA,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,YAAY;YACvB,CAAC,CAAC,cAAc,CAAC,MAAM;YACvB,CAAC,CAAC,MAAA,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,WAAW,mCAAI,+BAAY,EAC5C,CAAA,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,YAAY,MAAI,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,WAAW,CAAA;YACnD,CAAC,CAAC,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,WAAW;YAC1B,CAAC,CAAC,+BAAY,EAChB,+BAAY,CACb,CAAC;QAEF,MAAM,CAAC,IAAI,CACT,uBAAuB,EACvB,sBAAW,CAAC,YAAY,EACxB,IAAA,+DAA4C,EAAC,MAAM,EAAE,gBAAgB,CAAC,EACtE,MAAA,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,oBAAoB,mCAAI,cAAc,CAAC,cAAc,EAClE,CAAA,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,oBAAoB;YAC/B,CAAC,CAAC,cAAc,CAAC,cAAc;YAC/B,CAAC,CAAC,MAAA,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,mBAAmB,mCAAI,+BAAY,EACpD,CAAA,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,oBAAoB,MAAI,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,mBAAmB,CAAA;YACnE,CAAC,CAAC,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,mBAAmB;YAClC,CAAC,CAAC,+BAAY,EAChB,+BAAY,CACb,CAAC;QAEF,OAAO,MAAM,CAAC;IAChB,CAAC;CAAA","sourcesContent":["import { Router } from \"express\";\nimport { authControllerFactory } from \"./auth.controller\";\nimport authService from \"./auth.service\";\nimport rateLimit from \"express-rate-limit\";\nimport { importPrismaModelModules } from \"../../utils/helpers/models.helpers\";\nimport {\n handleRequestBodyValidationAndTransformation,\n sendResponse,\n} from \"../base/base.middlewares\";\nimport { ArkosConfig } from \"../../types/arkos-config\";\nimport deepmerge from \"../../utils/helpers/deepmerge.helper\";\n\nconst router: Router = Router();\n\nexport async function getAuthRouter(arkosConfigs: ArkosConfig) {\n const { middlewares } = await importPrismaModelModules(\"auth\");\n const authController = await authControllerFactory(middlewares);\n\n router\n .get(\n \"/users/me\",\n authService.authenticate,\n middlewares?.beforeGetMe ?? authController.getMe,\n middlewares?.beforeGetMe\n ? authController.getMe\n : middlewares?.afterGetMe ?? sendResponse,\n middlewares?.beforeGetMe && middlewares?.afterGetMe\n ? middlewares?.afterGetMe\n : sendResponse,\n sendResponse\n )\n .patch(\n \"/users/me\",\n authService.authenticate,\n handleRequestBodyValidationAndTransformation(\"auth\", \"updateMe\"),\n middlewares?.beforeGetMe ?? authController.getMe,\n middlewares?.beforeGetMe\n ? authController.getMe\n : middlewares?.afterGetMe ?? sendResponse,\n middlewares?.beforeGetMe && middlewares?.afterGetMe\n ? middlewares?.afterGetMe\n : sendResponse,\n sendResponse\n )\n .delete(\n \"/users/me\",\n authService.authenticate,\n middlewares?.beforeGetMe ?? authController.getMe,\n middlewares?.beforeGetMe\n ? authController.getMe\n : middlewares?.afterGetMe ?? sendResponse,\n middlewares?.beforeGetMe && middlewares?.afterGetMe\n ? middlewares?.afterGetMe\n : sendResponse,\n sendResponse\n );\n\n router.use(\n rateLimit(\n deepmerge(\n {\n windowMs: 5000,\n limit: 10,\n standardHeaders: \"draft-7\",\n legacyHeaders: false,\n },\n arkosConfigs?.authentication?.requestRateLimitOptions || {}\n )\n )\n );\n\n router.post(\n \"/auth/login\",\n handleRequestBodyValidationAndTransformation(\"auth\", \"login\"),\n middlewares?.beforeLogin ?? authController.login,\n middlewares?.beforeLogin\n ? authController.login\n : middlewares?.afterLogin ?? sendResponse,\n middlewares?.beforeLogin && middlewares?.afterLogin\n ? middlewares?.afterLogin\n : sendResponse,\n sendResponse\n );\n\n router.delete(\n \"/auth/logout\",\n authService.authenticate,\n middlewares?.beforeLogout ?? authController.logout,\n middlewares?.beforeLogout\n ? authController.logout\n : middlewares?.afterLogout ?? sendResponse,\n middlewares?.beforeLogout && middlewares?.afterLogout\n ? middlewares?.afterLogout\n : sendResponse,\n sendResponse\n );\n\n router.post(\n \"/auth/signup\",\n handleRequestBodyValidationAndTransformation(\"auth\", \"signup\"),\n middlewares?.beforeSignup ?? authController.signup,\n middlewares?.beforeSignup\n ? authController.signup\n : middlewares?.afterSignup ?? sendResponse,\n middlewares?.beforeSignup && middlewares?.afterSignup\n ? middlewares?.afterSignup\n : sendResponse,\n sendResponse\n );\n\n router.post(\n \"/auth/update-password\",\n authService.authenticate,\n handleRequestBodyValidationAndTransformation(\"auth\", \"updatePassword\"),\n middlewares?.beforeUpdatePassword ?? authController.updatePassword,\n middlewares?.beforeUpdatePassword\n ? authController.updatePassword\n : middlewares?.afterUpdatePassword ?? sendResponse,\n middlewares?.beforeUpdatePassword && middlewares?.afterUpdatePassword\n ? middlewares?.afterUpdatePassword\n : sendResponse,\n sendResponse\n );\n\n return router;\n}\n"]}
@@ -38,8 +38,8 @@ class AuthService {
38
38
  var _a, _b, _c;
39
39
  const { authentication: configs } = (0, server_1.getArkosConfig)();
40
40
  if (process.env.NODE_ENV === "production" &&
41
- !process.env.JWT_SECRET &&
42
- !((_a = configs === null || configs === void 0 ? void 0 : configs.jwt) === null || _a === void 0 ? void 0 : _a.secret))
41
+ (!process.env.JWT_SECRET ||
42
+ !((_a = configs === null || configs === void 0 ? void 0 : configs.jwt) === null || _a === void 0 ? void 0 : _a.secret)))
43
43
  throw new app_error_1.default("Missing JWT secret on production!", 500);
44
44
  secret =
45
45
  secret ||
@@ -101,9 +101,9 @@ class AuthService {
101
101
  });
102
102
  });
103
103
  }
104
- handleActionAccessControl(authConfigs, action, modelName) {
104
+ handleActionAccessControl(authConfigs, action, resourceName) {
105
105
  return (0, catch_async_1.default)((req, res, next) => __awaiter(this, void 0, void 0, function* () {
106
- var _a, _b, _c, _d;
106
+ var _a, _b, _c, _d, _e;
107
107
  if (req.user) {
108
108
  const user = req.user;
109
109
  const prisma = (0, prisma_helpers_1.getPrismaInstance)();
@@ -113,14 +113,21 @@ class AuthService {
113
113
  return;
114
114
  }
115
115
  if (((_a = configs === null || configs === void 0 ? void 0 : configs.authentication) === null || _a === void 0 ? void 0 : _a.mode) === "dynamic") {
116
- const permissions = yield prisma.authPermission.count({
116
+ const matchingRole = yield prisma.userRole.findFirst({
117
117
  where: {
118
- resource: (0, change_case_helpers_1.kebabCase)((0, pluralize_1.singular)(modelName)),
119
- action,
120
- roleId: { in: user.roles.map((role) => role.roleId) },
118
+ userId: req.user.id,
119
+ role: {
120
+ permissions: {
121
+ some: {
122
+ resource: (0, change_case_helpers_1.kebabCase)((0, pluralize_1.singular)(resourceName)),
123
+ action: action,
124
+ },
125
+ },
126
+ },
121
127
  },
128
+ select: { id: true },
122
129
  });
123
- if (!permissions)
130
+ if (!matchingRole)
124
131
  return next(new app_error_1.default("You do not have permission to perfom this action", 403));
125
132
  }
126
133
  else if (((_b = configs === null || configs === void 0 ? void 0 : configs.authentication) === null || _b === void 0 ? void 0 : _b.mode) === "static") {
@@ -131,9 +138,9 @@ class AuthService {
131
138
  authorizedRoles = accessControl;
132
139
  else if (accessControl[action])
133
140
  authorizedRoles = accessControl[action];
134
- if (!authorizedRoles.includes((_c = req.user) === null || _c === void 0 ? void 0 : _c.role) ||
135
- (((_d = req.user) === null || _d === void 0 ? void 0 : _d.roles).length > 0 &&
136
- !(authorizedRoles === null || authorizedRoles === void 0 ? void 0 : authorizedRoles.some((role) => { var _a; return ((_a = req.user) === null || _a === void 0 ? void 0 : _a.roles).includes(role); }))))
141
+ if (!((_c = authorizedRoles === null || authorizedRoles === void 0 ? void 0 : authorizedRoles.includes) === null || _c === void 0 ? void 0 : _c.call(authorizedRoles, (_d = req.user) === null || _d === void 0 ? void 0 : _d.role)) ||
142
+ (((_e = req.user) === null || _e === void 0 ? void 0 : _e.roles).length > 0 &&
143
+ !(authorizedRoles === null || authorizedRoles === void 0 ? void 0 : authorizedRoles.some((role) => { var _a, _b, _c; return (_c = (_b = (_a = req.user) === null || _a === void 0 ? void 0 : _a.roles) === null || _b === void 0 ? void 0 : _b.includes) === null || _c === void 0 ? void 0 : _c.call(_b, role); }))))
137
144
  return next(new app_error_1.default("You do not have permission to perfom this action", 403));
138
145
  }
139
146
  }
@@ -143,7 +150,7 @@ class AuthService {
143
150
  }
144
151
  getAuthenticatedUser(req) {
145
152
  return __awaiter(this, void 0, void 0, function* () {
146
- var _a, _b, _c, _d, _e;
153
+ var _a, _b, _c, _d, _e, _f, _g;
147
154
  const arkosConfig = (0, server_1.getArkosConfig)();
148
155
  if (!(arkosConfig === null || arkosConfig === void 0 ? void 0 : arkosConfig.authentication))
149
156
  return null;
@@ -169,22 +176,18 @@ class AuthService {
169
176
  throw new app_error_1.default("Your auth token is invalid, please login again.", 401);
170
177
  const user = yield prisma.user.findUnique({
171
178
  where: { id: String(decoded.id) },
172
- include: {
173
- roles: {
174
- include: {
175
- role: {
176
- include: {
177
- permissions: true,
178
- },
179
- },
180
- },
181
- },
179
+ select: {
180
+ id: true,
181
+ passwordChangedAt: true,
182
+ isActive: true,
183
+ deletedSelfAccountAt: true,
184
+ isSuperUser: true,
182
185
  },
183
186
  });
184
187
  if (!user)
185
188
  throw new app_error_1.default("The user belonging to this token does no longer exists", 401);
186
189
  if (this.userChangedPasswordAfter(user, decoded.iat) &&
187
- !req.path.includes("logout"))
190
+ !((_g = (_f = req.path) === null || _f === void 0 ? void 0 : _f.includes) === null || _g === void 0 ? void 0 : _g.call(_f, "logout")))
188
191
  throw new app_error_1.default("User recently changed password! Please log in again.", 401);
189
192
  return user;
190
193
  });