arkos 2.0.0-next.16 → 2.0.0-next.18
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.
- package/README.md +33 -31
- package/cli.js +1 -8
- package/dist/esm/app.js +5 -12
- package/dist/esm/app.js.map +1 -1
- package/dist/esm/components/arkos-gateway/arkos-gateway.js +337 -0
- package/dist/esm/components/arkos-gateway/arkos-gateway.js.map +1 -0
- package/dist/esm/components/arkos-gateway/socket-extensions.js +161 -0
- package/dist/esm/components/arkos-gateway/socket-extensions.js.map +1 -0
- package/dist/esm/components/arkos-gateway/types.js +3 -0
- package/dist/esm/components/arkos-gateway/types.js.map +1 -0
- package/dist/esm/components/arkos-gateway/utils/helpers.js +105 -0
- package/dist/esm/components/arkos-gateway/utils/helpers.js.map +1 -0
- package/dist/esm/components/arkos-gateway/utils/memory-gateway-store.js +47 -0
- package/dist/esm/components/arkos-gateway/utils/memory-gateway-store.js.map +1 -0
- package/dist/esm/components/arkos-gateway/utils/multi-tier-arkos-gateway-store.js +39 -0
- package/dist/esm/components/arkos-gateway/utils/multi-tier-arkos-gateway-store.js.map +1 -0
- package/dist/esm/components/arkos-gateway/utils/rate-limiter.js +13 -0
- package/dist/esm/components/arkos-gateway/utils/rate-limiter.js.map +1 -0
- package/dist/esm/components/arkos-policy/index.js.map +1 -1
- package/dist/esm/components/arkos-route-hook/index.js +2 -1
- package/dist/esm/components/arkos-route-hook/index.js.map +1 -1
- package/dist/esm/components/arkos-route-hook/reader.js.map +1 -1
- package/dist/esm/components/arkos-route-hook/types.js.map +1 -1
- package/dist/esm/exports/index.js +2 -2
- package/dist/esm/exports/index.js.map +1 -1
- package/dist/esm/exports/services/index.js +2 -2
- package/dist/esm/exports/services/index.js.map +1 -1
- package/dist/esm/exports/websockets.js +5 -0
- package/dist/esm/exports/websockets.js.map +1 -0
- package/dist/esm/generated.js.map +1 -1
- package/dist/esm/modules/auth/auth.controller.js +2 -2
- package/dist/esm/modules/auth/auth.controller.js.map +1 -1
- package/dist/esm/modules/auth/auth.service.js +83 -204
- package/dist/esm/modules/auth/auth.service.js.map +1 -1
- package/dist/esm/modules/auth/utils/auth-error-objects.js +2 -2
- package/dist/esm/modules/auth/utils/auth-error-objects.js.map +1 -1
- package/dist/esm/modules/auth/utils/auth-hooks-manager.js +148 -0
- package/dist/esm/modules/auth/utils/auth-hooks-manager.js.map +1 -0
- package/dist/esm/modules/auth/utils/docs-links.js +6 -0
- package/dist/esm/modules/auth/utils/docs-links.js.map +1 -0
- package/dist/esm/modules/auth/utils/services/auth-action.service.js +6 -4
- package/dist/esm/modules/auth/utils/services/auth-action.service.js.map +1 -1
- package/dist/esm/modules/base/base.controller.js +11 -5
- package/dist/esm/modules/base/base.controller.js.map +1 -1
- package/dist/esm/modules/base/base.middlewares.js +12 -21
- package/dist/esm/modules/base/base.middlewares.js.map +1 -1
- package/dist/esm/modules/base/base.service.js +16 -128
- package/dist/esm/modules/base/base.service.js.map +1 -1
- package/dist/esm/modules/base/types/base.service.types.js.map +1 -1
- package/dist/esm/modules/email/email.service.js +14 -7
- package/dist/esm/modules/email/email.service.js.map +1 -1
- package/dist/esm/modules/error-handler/error-handler.controller.js +6 -66
- package/dist/esm/modules/error-handler/error-handler.controller.js.map +1 -1
- package/dist/esm/modules/error-handler/utils/catch-async.js.map +1 -1
- package/dist/esm/modules/error-handler/utils/get-handled-error.js +68 -0
- package/dist/esm/modules/error-handler/utils/get-handled-error.js.map +1 -0
- package/dist/esm/modules/file-upload/file-upload.router.js +9 -2
- package/dist/esm/modules/file-upload/file-upload.router.js.map +1 -1
- package/dist/esm/modules/file-upload/file-upload.service.js +1 -1
- package/dist/esm/modules/file-upload/file-upload.service.js.map +1 -1
- package/dist/esm/modules/swagger/swagger.router.js +11 -10
- package/dist/esm/modules/swagger/swagger.router.js.map +1 -1
- package/dist/esm/modules/swagger/utils/get-open-api-login-html.js +3 -1
- package/dist/esm/modules/swagger/utils/get-open-api-login-html.js.map +1 -1
- package/dist/esm/modules/swagger/utils/helpers/class-validator-to-json-schema.js.map +1 -1
- package/dist/esm/modules/swagger/utils/helpers/openapi-schema-converter.js +4 -2
- package/dist/esm/modules/swagger/utils/helpers/openapi-schema-converter.js.map +1 -1
- package/dist/esm/server.js +1 -1
- package/dist/esm/server.js.map +1 -1
- package/dist/esm/types/arkos.js.map +1 -1
- package/dist/esm/types/index.js.map +1 -1
- package/dist/esm/types/new-arkos-config.js.map +1 -1
- package/dist/esm/types/upload.js +2 -0
- package/dist/esm/types/upload.js.map +1 -0
- package/dist/esm/types/validation/validation-manager.js +50 -0
- package/dist/esm/types/validation/validation-manager.js.map +1 -0
- package/dist/esm/types/validation/validator.js +2 -0
- package/dist/esm/types/validation/validator.js.map +1 -0
- package/dist/esm/utils/arkos-router/arkos-router-openapi-manager.js +9 -33
- package/dist/esm/utils/arkos-router/arkos-router-openapi-manager.js.map +1 -1
- package/dist/esm/utils/arkos-router/index.js +15 -3
- package/dist/esm/utils/arkos-router/index.js.map +1 -1
- package/dist/esm/utils/arkos-router/types/index.js.map +1 -1
- package/dist/esm/utils/arkos-router/types/upload-config.js.map +1 -1
- package/dist/esm/utils/arkos-router/utils/helpers/apply-arkos-router-proxy.js +45 -9
- package/dist/esm/utils/arkos-router/utils/helpers/apply-arkos-router-proxy.js.map +1 -1
- package/dist/esm/utils/arkos-router/utils/helpers/upload-manager.js +26 -6
- package/dist/esm/utils/arkos-router/utils/helpers/upload-manager.js.map +1 -1
- package/dist/esm/utils/cli/build.js +11 -2
- package/dist/esm/utils/cli/build.js.map +1 -1
- package/dist/esm/utils/cli/dev.js +4 -6
- package/dist/esm/utils/cli/dev.js.map +1 -1
- package/dist/esm/utils/cli/generate.js +0 -90
- package/dist/esm/utils/cli/generate.js.map +1 -1
- package/dist/esm/utils/cli/index.js +10 -74
- package/dist/esm/utils/cli/index.js.map +1 -1
- package/dist/esm/utils/cli/start.js +20 -11
- package/dist/esm/utils/cli/start.js.map +1 -1
- package/dist/esm/utils/cli/utils/cli.helpers.js +1 -1
- package/dist/esm/utils/cli/utils/template-generator/templates/class-validator-dto-generator.js +53 -17
- package/dist/esm/utils/cli/utils/template-generator/templates/class-validator-dto-generator.js.map +1 -1
- package/dist/esm/utils/cli/utils/template-generator/templates/generate-multiple-components.js +3 -54
- package/dist/esm/utils/cli/utils/template-generator/templates/generate-multiple-components.js.map +1 -1
- package/dist/esm/utils/cli/utils/template-generator/templates/router-template.js +11 -4
- package/dist/esm/utils/cli/utils/template-generator/templates/router-template.js.map +1 -1
- package/dist/esm/utils/cli/utils/template-generator/templates/service-template.js +2 -2
- package/dist/esm/utils/cli/utils/template-generator/templates/service-template.js.map +1 -1
- package/dist/esm/utils/cli/utils/template-generator/templates/zod-schema-generator.js +18 -18
- package/dist/esm/utils/cli/utils/template-generator/templates/zod-schema-generator.js.map +1 -1
- package/dist/esm/utils/cli/utils/template-generators.js +27 -24
- package/dist/esm/utils/cli/utils/template-generators.js.map +1 -1
- package/dist/esm/utils/docs-links.js +2 -0
- package/dist/esm/utils/docs-links.js.map +1 -0
- package/dist/esm/utils/features/api.features.js.map +1 -1
- package/dist/esm/utils/helpers/arkos-config.helpers.js.map +1 -1
- package/dist/esm/utils/helpers/exit-error.js +1 -1
- package/dist/esm/utils/helpers/exit-error.js.map +1 -1
- package/dist/esm/utils/initialize-app.js +3 -3
- package/dist/esm/utils/initialize-app.js.map +1 -1
- package/dist/esm/utils/prisma/prisma-json-schema-generator.js +19 -18
- package/dist/esm/utils/prisma/prisma-json-schema-generator.js.map +1 -1
- package/dist/esm/utils/remove-dir.js +1 -1
- package/dist/esm/utils/remove-dir.js.map +1 -1
- package/dist/esm/utils/setup-app.js.map +1 -1
- package/dist/types/app.d.ts +4 -0
- package/dist/types/components/arkos-gateway/arkos-gateway.d.ts +121 -0
- package/dist/types/components/arkos-gateway/socket-extensions.d.ts +79 -0
- package/dist/types/components/arkos-gateway/types.d.ts +364 -0
- package/dist/types/components/arkos-gateway/utils/helpers.d.ts +9 -0
- package/dist/types/components/arkos-gateway/utils/memory-gateway-store.d.ts +14 -0
- package/dist/types/components/arkos-gateway/utils/multi-tier-arkos-gateway-store.d.ts +20 -0
- package/dist/types/components/arkos-gateway/utils/rate-limiter.d.ts +11 -0
- package/dist/types/components/arkos-route-hook/index.d.ts +11 -5
- package/dist/types/components/arkos-route-hook/reader.d.ts +2 -2
- package/dist/types/components/arkos-route-hook/types.d.ts +5 -1
- package/dist/types/exports/index.d.ts +3 -2
- package/dist/types/exports/services/index.d.ts +3 -3
- package/dist/types/exports/websockets.d.ts +5 -0
- package/dist/types/modules/auth/auth.service.d.ts +12 -36
- package/dist/types/modules/auth/utils/auth-hooks-manager.d.ts +63 -0
- package/dist/types/modules/auth/utils/docs-links.d.ts +3 -0
- package/dist/types/modules/auth/utils/services/auth-action.service.d.ts +2 -2
- package/dist/types/modules/base/base.controller.d.ts +2 -2
- package/dist/types/modules/base/base.service.d.ts +5 -15
- package/dist/types/modules/base/types/base.service.types.d.ts +11 -0
- package/dist/types/modules/error-handler/utils/catch-async.d.ts +2 -2
- package/dist/types/modules/error-handler/utils/get-handled-error.d.ts +1 -0
- package/dist/types/modules/swagger/utils/helpers/openapi-schema-converter.d.ts +6 -1
- package/dist/types/types/arkos.d.ts +2 -15
- package/dist/types/types/index.d.ts +6 -5
- package/dist/types/types/new-arkos-config.d.ts +1 -1
- package/dist/types/types/upload.d.ts +10 -0
- package/dist/types/types/validation/validation-manager.d.ts +27 -0
- package/dist/types/types/validation/validator.d.ts +2 -0
- package/dist/types/utils/arkos-router/index.d.ts +7 -0
- package/dist/types/utils/arkos-router/types/index.d.ts +35 -21
- package/dist/types/utils/arkos-router/types/upload-config.d.ts +2 -1
- package/dist/types/utils/arkos-router/utils/helpers/apply-arkos-router-proxy.d.ts +6 -7
- package/dist/types/utils/arkos-router/utils/helpers/upload-manager.d.ts +1 -0
- package/dist/types/utils/cli/build.d.ts +1 -1
- package/dist/types/utils/cli/generate.d.ts +11 -10
- package/dist/types/utils/cli/start.d.ts +2 -0
- package/dist/types/utils/cli/utils/template-generator/templates/class-validator-dto-generator.d.ts +7 -0
- package/dist/types/utils/docs-links.d.ts +1 -0
- package/dist/types/utils/features/api.features.d.ts +1 -2
- package/dist/types/utils/helpers/arkos-config.helpers.d.ts +5 -0
- package/package.json +61 -30
- package/dist/cjs/app.js +0 -121
- package/dist/cjs/app.js.map +0 -1
- package/dist/cjs/components/arkos-loadable-registry/index.js +0 -28
- package/dist/cjs/components/arkos-loadable-registry/index.js.map +0 -1
- package/dist/cjs/components/arkos-loadable-translator/index.js +0 -144
- package/dist/cjs/components/arkos-loadable-translator/index.js.map +0 -1
- package/dist/cjs/components/arkos-policy/index.js +0 -38
- package/dist/cjs/components/arkos-policy/index.js.map +0 -1
- package/dist/cjs/components/arkos-policy/types.js +0 -3
- package/dist/cjs/components/arkos-policy/types.js.map +0 -1
- package/dist/cjs/components/arkos-route-hook/index.js +0 -50
- package/dist/cjs/components/arkos-route-hook/index.js.map +0 -1
- package/dist/cjs/components/arkos-route-hook/reader.js +0 -47
- package/dist/cjs/components/arkos-route-hook/reader.js.map +0 -1
- package/dist/cjs/components/arkos-route-hook/types.js +0 -3
- package/dist/cjs/components/arkos-route-hook/types.js.map +0 -1
- package/dist/cjs/components/arkos-service-hook/index.js +0 -35
- package/dist/cjs/components/arkos-service-hook/index.js.map +0 -1
- package/dist/cjs/components/arkos-service-hook/reader.js +0 -30
- package/dist/cjs/components/arkos-service-hook/reader.js.map +0 -1
- package/dist/cjs/components/arkos-service-hook/types.js +0 -3
- package/dist/cjs/components/arkos-service-hook/types.js.map +0 -1
- package/dist/cjs/exports/auth/index.js +0 -6
- package/dist/cjs/exports/auth/index.js.map +0 -1
- package/dist/cjs/exports/config.js +0 -6
- package/dist/cjs/exports/config.js.map +0 -1
- package/dist/cjs/exports/controllers/index.js +0 -42
- package/dist/cjs/exports/controllers/index.js.map +0 -1
- package/dist/cjs/exports/error-handler/index.js +0 -26
- package/dist/cjs/exports/error-handler/index.js.map +0 -1
- package/dist/cjs/exports/index.js +0 -23
- package/dist/cjs/exports/index.js.map +0 -1
- package/dist/cjs/exports/middlewares/index.js +0 -7
- package/dist/cjs/exports/middlewares/index.js.map +0 -1
- package/dist/cjs/exports/prisma/index.js +0 -13
- package/dist/cjs/exports/prisma/index.js.map +0 -1
- package/dist/cjs/exports/services/index.js +0 -53
- package/dist/cjs/exports/services/index.js.map +0 -1
- package/dist/cjs/exports/utils/index.js +0 -26
- package/dist/cjs/exports/utils/index.js.map +0 -1
- package/dist/cjs/exports/validation/index.js +0 -11
- package/dist/cjs/exports/validation/index.js.map +0 -1
- package/dist/cjs/generated.js +0 -7
- package/dist/cjs/generated.js.map +0 -1
- package/dist/cjs/modules/auth/auth.controller.js +0 -254
- package/dist/cjs/modules/auth/auth.controller.js.map +0 -1
- package/dist/cjs/modules/auth/auth.router.js +0 -130
- package/dist/cjs/modules/auth/auth.router.js.map +0 -1
- package/dist/cjs/modules/auth/auth.service.js +0 -433
- package/dist/cjs/modules/auth/auth.service.js.map +0 -1
- package/dist/cjs/modules/auth/utils/auth-error-objects.js +0 -10
- package/dist/cjs/modules/auth/utils/auth-error-objects.js.map +0 -1
- package/dist/cjs/modules/auth/utils/auth-openapi-generator.js +0 -372
- package/dist/cjs/modules/auth/utils/auth-openapi-generator.js.map +0 -1
- package/dist/cjs/modules/auth/utils/auth-prisma-json-schema-generator.js +0 -101
- package/dist/cjs/modules/auth/utils/auth-prisma-json-schema-generator.js.map +0 -1
- package/dist/cjs/modules/auth/utils/helpers/auth.controller.helpers.js +0 -83
- package/dist/cjs/modules/auth/utils/helpers/auth.controller.helpers.js.map +0 -1
- package/dist/cjs/modules/auth/utils/services/auth-action.service.js +0 -154
- package/dist/cjs/modules/auth/utils/services/auth-action.service.js.map +0 -1
- package/dist/cjs/modules/base/base.controller.js +0 -287
- package/dist/cjs/modules/base/base.controller.js.map +0 -1
- package/dist/cjs/modules/base/base.middlewares.js +0 -238
- package/dist/cjs/modules/base/base.middlewares.js.map +0 -1
- package/dist/cjs/modules/base/base.router.js +0 -126
- package/dist/cjs/modules/base/base.router.js.map +0 -1
- package/dist/cjs/modules/base/base.service.js +0 -436
- package/dist/cjs/modules/base/base.service.js.map +0 -1
- package/dist/cjs/modules/base/types/base.service.types.js +0 -3
- package/dist/cjs/modules/base/types/base.service.types.js.map +0 -1
- package/dist/cjs/modules/base/utils/error-prettifier.js +0 -188
- package/dist/cjs/modules/base/utils/error-prettifier.js.map +0 -1
- package/dist/cjs/modules/base/utils/helpers/base.middlewares.helpers.js +0 -49
- package/dist/cjs/modules/base/utils/helpers/base.middlewares.helpers.js.map +0 -1
- package/dist/cjs/modules/base/utils/helpers/base.service.helpers.js +0 -243
- package/dist/cjs/modules/base/utils/helpers/base.service.helpers.js.map +0 -1
- package/dist/cjs/modules/base/utils/model-openapi-generator.js +0 -443
- package/dist/cjs/modules/base/utils/model-openapi-generator.js.map +0 -1
- package/dist/cjs/modules/base/utils/router-validator.js +0 -13
- package/dist/cjs/modules/base/utils/router-validator.js.map +0 -1
- package/dist/cjs/modules/base/utils/service-hooks-manager.js +0 -19
- package/dist/cjs/modules/base/utils/service-hooks-manager.js.map +0 -1
- package/dist/cjs/modules/debugger/debugger.service.js +0 -59
- package/dist/cjs/modules/debugger/debugger.service.js.map +0 -1
- package/dist/cjs/modules/email/email.service.js +0 -106
- package/dist/cjs/modules/email/email.service.js.map +0 -1
- package/dist/cjs/modules/error-handler/error-handler.controller.js +0 -166
- package/dist/cjs/modules/error-handler/error-handler.controller.js.map +0 -1
- package/dist/cjs/modules/error-handler/utils/app-error.js +0 -27
- package/dist/cjs/modules/error-handler/utils/app-error.js.map +0 -1
- package/dist/cjs/modules/error-handler/utils/catch-async.js +0 -21
- package/dist/cjs/modules/error-handler/utils/catch-async.js.map +0 -1
- package/dist/cjs/modules/error-handler/utils/error-handler.helpers.js +0 -104
- package/dist/cjs/modules/error-handler/utils/error-handler.helpers.js.map +0 -1
- package/dist/cjs/modules/error-handler/utils/errors.js +0 -158
- package/dist/cjs/modules/error-handler/utils/errors.js.map +0 -1
- package/dist/cjs/modules/error-handler/utils/multer-error-handler.js +0 -39
- package/dist/cjs/modules/error-handler/utils/multer-error-handler.js.map +0 -1
- package/dist/cjs/modules/file-upload/file-upload.controller.js +0 -252
- package/dist/cjs/modules/file-upload/file-upload.controller.js.map +0 -1
- package/dist/cjs/modules/file-upload/file-upload.router.js +0 -96
- package/dist/cjs/modules/file-upload/file-upload.router.js.map +0 -1
- package/dist/cjs/modules/file-upload/file-upload.service.js +0 -343
- package/dist/cjs/modules/file-upload/file-upload.service.js.map +0 -1
- package/dist/cjs/modules/file-upload/utils/file-upload-json-schema-generator.js +0 -351
- package/dist/cjs/modules/file-upload/utils/file-upload-json-schema-generator.js.map +0 -1
- package/dist/cjs/modules/file-upload/utils/helpers/file-extensions.js +0 -134
- package/dist/cjs/modules/file-upload/utils/helpers/file-extensions.js.map +0 -1
- package/dist/cjs/modules/file-upload/utils/helpers/file-upload.helpers.js +0 -100
- package/dist/cjs/modules/file-upload/utils/helpers/file-upload.helpers.js.map +0 -1
- package/dist/cjs/modules/swagger/swagger.router.js +0 -81
- package/dist/cjs/modules/swagger/swagger.router.js.map +0 -1
- package/dist/cjs/modules/swagger/utils/get-open-api-login-html.js +0 -306
- package/dist/cjs/modules/swagger/utils/get-open-api-login-html.js.map +0 -1
- package/dist/cjs/modules/swagger/utils/helpers/class-validator-to-json-schema.js +0 -53
- package/dist/cjs/modules/swagger/utils/helpers/class-validator-to-json-schema.js.map +0 -1
- package/dist/cjs/modules/swagger/utils/helpers/get-swagger-default-configs.js +0 -72
- package/dist/cjs/modules/swagger/utils/helpers/get-swagger-default-configs.js.map +0 -1
- package/dist/cjs/modules/swagger/utils/helpers/openapi-schema-converter.js +0 -331
- package/dist/cjs/modules/swagger/utils/helpers/openapi-schema-converter.js.map +0 -1
- package/dist/cjs/package.json +0 -3
- package/dist/cjs/server.js +0 -60
- package/dist/cjs/server.js.map +0 -1
- package/dist/cjs/types/arkos-config/utils.js +0 -3
- package/dist/cjs/types/arkos-config/utils.js.map +0 -1
- package/dist/cjs/types/arkos-prisma-input.js +0 -3
- package/dist/cjs/types/arkos-prisma-input.js.map +0 -1
- package/dist/cjs/types/arkos.js +0 -3
- package/dist/cjs/types/arkos.js.map +0 -1
- package/dist/cjs/types/auth.js +0 -3
- package/dist/cjs/types/auth.js.map +0 -1
- package/dist/cjs/types/index.js +0 -3
- package/dist/cjs/types/index.js.map +0 -1
- package/dist/cjs/types/new-arkos-config.js +0 -3
- package/dist/cjs/types/new-arkos-config.js.map +0 -1
- package/dist/cjs/types/router-config.js +0 -3
- package/dist/cjs/types/router-config.js.map +0 -1
- package/dist/cjs/utils/arkos-env.js +0 -9
- package/dist/cjs/utils/arkos-env.js.map +0 -1
- package/dist/cjs/utils/arkos-router/arkos-router-openapi-manager.js +0 -184
- package/dist/cjs/utils/arkos-router/arkos-router-openapi-manager.js.map +0 -1
- package/dist/cjs/utils/arkos-router/index.js +0 -153
- package/dist/cjs/utils/arkos-router/index.js.map +0 -1
- package/dist/cjs/utils/arkos-router/route-config-registry.js +0 -16
- package/dist/cjs/utils/arkos-router/route-config-registry.js.map +0 -1
- package/dist/cjs/utils/arkos-router/route-config-validator.js +0 -56
- package/dist/cjs/utils/arkos-router/route-config-validator.js.map +0 -1
- package/dist/cjs/utils/arkos-router/types/body-parser-config.js +0 -3
- package/dist/cjs/utils/arkos-router/types/body-parser-config.js.map +0 -1
- package/dist/cjs/utils/arkos-router/types/index.js +0 -3
- package/dist/cjs/utils/arkos-router/types/index.js.map +0 -1
- package/dist/cjs/utils/arkos-router/types/openapi-config.js +0 -3
- package/dist/cjs/utils/arkos-router/types/openapi-config.js.map +0 -1
- package/dist/cjs/utils/arkos-router/types/upload-config.js +0 -3
- package/dist/cjs/utils/arkos-router/types/upload-config.js.map +0 -1
- package/dist/cjs/utils/arkos-router/utils/helpers/apply-arkos-router-proxy.js +0 -158
- package/dist/cjs/utils/arkos-router/utils/helpers/apply-arkos-router-proxy.js.map +0 -1
- package/dist/cjs/utils/arkos-router/utils/helpers/index.js +0 -179
- package/dist/cjs/utils/arkos-router/utils/helpers/index.js.map +0 -1
- package/dist/cjs/utils/arkos-router/utils/helpers/upload-manager.js +0 -540
- package/dist/cjs/utils/arkos-router/utils/helpers/upload-manager.js.map +0 -1
- package/dist/cjs/utils/bundler.js +0 -163
- package/dist/cjs/utils/bundler.js.map +0 -1
- package/dist/cjs/utils/cli/build.js +0 -199
- package/dist/cjs/utils/cli/build.js.map +0 -1
- package/dist/cjs/utils/cli/dev.js +0 -133
- package/dist/cjs/utils/cli/dev.js.map +0 -1
- package/dist/cjs/utils/cli/export-auth-action.js +0 -80
- package/dist/cjs/utils/cli/export-auth-action.js.map +0 -1
- package/dist/cjs/utils/cli/generate.js +0 -333
- package/dist/cjs/utils/cli/generate.js.map +0 -1
- package/dist/cjs/utils/cli/index.js +0 -259
- package/dist/cjs/utils/cli/index.js.map +0 -1
- package/dist/cjs/utils/cli/prisma-generate.js +0 -112
- package/dist/cjs/utils/cli/prisma-generate.js.map +0 -1
- package/dist/cjs/utils/cli/start.js +0 -74
- package/dist/cjs/utils/cli/start.js.map +0 -1
- package/dist/cjs/utils/cli/utils/cli.helpers.js +0 -24
- package/dist/cjs/utils/cli/utils/cli.helpers.js.map +0 -1
- package/dist/cjs/utils/cli/utils/runtime-cli-commander.js +0 -118
- package/dist/cjs/utils/cli/utils/runtime-cli-commander.js.map +0 -1
- package/dist/cjs/utils/cli/utils/smart-fs-watcher.js +0 -73
- package/dist/cjs/utils/cli/utils/smart-fs-watcher.js.map +0 -1
- package/dist/cjs/utils/cli/utils/template-generator/templates/class-validator-dto-generator.js +0 -810
- package/dist/cjs/utils/cli/utils/template-generator/templates/class-validator-dto-generator.js.map +0 -1
- package/dist/cjs/utils/cli/utils/template-generator/templates/generate-controller-template.js +0 -64
- package/dist/cjs/utils/cli/utils/template-generator/templates/generate-controller-template.js.map +0 -1
- package/dist/cjs/utils/cli/utils/template-generator/templates/generate-multiple-components.js +0 -242
- package/dist/cjs/utils/cli/utils/template-generator/templates/generate-multiple-components.js.map +0 -1
- package/dist/cjs/utils/cli/utils/template-generator/templates/policy-template.js +0 -51
- package/dist/cjs/utils/cli/utils/template-generator/templates/policy-template.js.map +0 -1
- package/dist/cjs/utils/cli/utils/template-generator/templates/router-template.js +0 -23
- package/dist/cjs/utils/cli/utils/template-generator/templates/router-template.js.map +0 -1
- package/dist/cjs/utils/cli/utils/template-generator/templates/service-template.js +0 -50
- package/dist/cjs/utils/cli/utils/template-generator/templates/service-template.js.map +0 -1
- package/dist/cjs/utils/cli/utils/template-generator/templates/zod-schema-generator.js +0 -545
- package/dist/cjs/utils/cli/utils/template-generator/templates/zod-schema-generator.js.map +0 -1
- package/dist/cjs/utils/cli/utils/template-generators.js +0 -62
- package/dist/cjs/utils/cli/utils/template-generators.js.map +0 -1
- package/dist/cjs/utils/cli/utils/watermark-stamper.js +0 -26
- package/dist/cjs/utils/cli/utils/watermark-stamper.js.map +0 -1
- package/dist/cjs/utils/define-config.js +0 -60
- package/dist/cjs/utils/define-config.js.map +0 -1
- package/dist/cjs/utils/dotenv.helpers.js +0 -46
- package/dist/cjs/utils/dotenv.helpers.js.map +0 -1
- package/dist/cjs/utils/dynamic-loader.js +0 -22
- package/dist/cjs/utils/dynamic-loader.js.map +0 -1
- package/dist/cjs/utils/expand-env.js +0 -72
- package/dist/cjs/utils/expand-env.js.map +0 -1
- package/dist/cjs/utils/features/api.features.js +0 -216
- package/dist/cjs/utils/features/api.features.js.map +0 -1
- package/dist/cjs/utils/features/port-and-host-allocator.js +0 -129
- package/dist/cjs/utils/features/port-and-host-allocator.js.map +0 -1
- package/dist/cjs/utils/helpers/api.features.helpers.js +0 -347
- package/dist/cjs/utils/helpers/api.features.helpers.js.map +0 -1
- package/dist/cjs/utils/helpers/arkos-config.helpers.js +0 -106
- package/dist/cjs/utils/helpers/arkos-config.helpers.js.map +0 -1
- package/dist/cjs/utils/helpers/change-case.helpers.js +0 -177
- package/dist/cjs/utils/helpers/change-case.helpers.js.map +0 -1
- package/dist/cjs/utils/helpers/deepmerge.helper.js +0 -115
- package/dist/cjs/utils/helpers/deepmerge.helper.js.map +0 -1
- package/dist/cjs/utils/helpers/exit-error.js +0 -13
- package/dist/cjs/utils/helpers/exit-error.js.map +0 -1
- package/dist/cjs/utils/helpers/fs.helpers.js +0 -52
- package/dist/cjs/utils/helpers/fs.helpers.js.map +0 -1
- package/dist/cjs/utils/helpers/global.helpers.js +0 -106
- package/dist/cjs/utils/helpers/global.helpers.js.map +0 -1
- package/dist/cjs/utils/helpers/prisma.helpers.js +0 -56
- package/dist/cjs/utils/helpers/prisma.helpers.js.map +0 -1
- package/dist/cjs/utils/helpers/query-parser.helpers.js +0 -69
- package/dist/cjs/utils/helpers/query-parser.helpers.js.map +0 -1
- package/dist/cjs/utils/helpers/routers.helpers.js +0 -36
- package/dist/cjs/utils/helpers/routers.helpers.js.map +0 -1
- package/dist/cjs/utils/helpers/text.helpers.js +0 -28
- package/dist/cjs/utils/helpers/text.helpers.js.map +0 -1
- package/dist/cjs/utils/helpers/url-helpers.js +0 -14
- package/dist/cjs/utils/helpers/url-helpers.js.map +0 -1
- package/dist/cjs/utils/initialize-app.js +0 -80
- package/dist/cjs/utils/initialize-app.js.map +0 -1
- package/dist/cjs/utils/prisma/prisma-json-schema-generator.js +0 -366
- package/dist/cjs/utils/prisma/prisma-json-schema-generator.js.map +0 -1
- package/dist/cjs/utils/prisma/prisma-schema-parser.js +0 -380
- package/dist/cjs/utils/prisma/prisma-schema-parser.js.map +0 -1
- package/dist/cjs/utils/prisma/types.js +0 -3
- package/dist/cjs/utils/prisma/types.js.map +0 -1
- package/dist/cjs/utils/remove-dir.js +0 -14
- package/dist/cjs/utils/remove-dir.js.map +0 -1
- package/dist/cjs/utils/setup-app.js +0 -136
- package/dist/cjs/utils/setup-app.js.map +0 -1
- package/dist/cjs/utils/sheu.js +0 -131
- package/dist/cjs/utils/sheu.js.map +0 -1
- package/dist/cjs/utils/validate-dto.js +0 -19
- package/dist/cjs/utils/validate-dto.js.map +0 -1
- package/dist/cjs/utils/validate-schema.js +0 -75
- package/dist/cjs/utils/validate-schema.js.map +0 -1
- package/dist/esm/components/arkos-service-hook/index.js +0 -32
- package/dist/esm/components/arkos-service-hook/index.js.map +0 -1
- package/dist/esm/components/arkos-service-hook/reader.js +0 -24
- package/dist/esm/components/arkos-service-hook/reader.js.map +0 -1
- package/dist/esm/components/arkos-service-hook/types.js +0 -2
- package/dist/esm/components/arkos-service-hook/types.js.map +0 -1
- package/dist/esm/modules/base/utils/service-hooks-manager.js +0 -17
- package/dist/esm/modules/base/utils/service-hooks-manager.js.map +0 -1
- package/dist/types/components/arkos-service-hook/index.d.ts +0 -41
- package/dist/types/components/arkos-service-hook/reader.d.ts +0 -35
- package/dist/types/components/arkos-service-hook/types.d.ts +0 -240
- package/dist/types/modules/base/utils/service-hooks-manager.d.ts +0 -10
|
@@ -4,8 +4,8 @@ import ArkosRouter from "../utils/arkos-router/index.js";
|
|
|
4
4
|
import { loadEnvironmentVariables } from "../utils/dotenv.helpers.js";
|
|
5
5
|
import { arkos } from "../app.js";
|
|
6
6
|
import { ArkosRouteHook } from "../components/arkos-route-hook/index.js";
|
|
7
|
-
import { ArkosServiceHook } from "../components/arkos-service-hook/index.js";
|
|
8
7
|
import { ArkosPolicy } from "../components/arkos-policy/index.js";
|
|
9
|
-
|
|
8
|
+
import { isProduction } from "../utils/helpers/arkos-config.helpers.js";
|
|
9
|
+
export { BaseController, loadEnvironmentVariables, getArkosConfig, ArkosRouteHook, ArkosRouter, ArkosPolicy, isProduction, };
|
|
10
10
|
export default arkos;
|
|
11
11
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/exports/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,mCAAmC,CAAC;AACnE,OAAO,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAC3C,OAAO,WAAW,MAAM,uBAAuB,CAAC;AAUhD,OAAO,EAAE,wBAAwB,EAAE,MAAM,yBAAyB,CAAC;AACnE,OAAO,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAC;AAC/B,OAAO,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/exports/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,mCAAmC,CAAC;AACnE,OAAO,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAC3C,OAAO,WAAW,MAAM,uBAAuB,CAAC;AAUhD,OAAO,EAAE,wBAAwB,EAAE,MAAM,yBAAyB,CAAC;AACnE,OAAO,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAC;AAC/B,OAAO,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAEhE,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAIzD,OAAO,EAAE,YAAY,EAAE,MAAM,uCAAuC,CAAC;AAErE,OAAO,EAOL,cAAc,EAId,wBAAwB,EACxB,cAAc,EACd,cAAc,EACd,WAAW,EAGX,WAAW,EAGX,YAAY,GACb,CAAC;AAEF,eAAe,KAAK,CAAC","sourcesContent":["import { RouterConfig, RouteHook } from \"../types/router-config\";\nimport { BaseController } from \"./../modules/base/base.controller\";\nimport { getArkosConfig } from \"../server\";\nimport ArkosRouter from \"../utils/arkos-router\";\nimport { IArkosRouter } from \"../utils/arkos-router/types\";\nimport { ArkosRouteConfig } from \"../utils/arkos-router/types\";\nimport {\n ArkosRequest,\n ArkosResponse,\n ArkosNextFunction,\n ArkosRequestHandler,\n} from \"../types\";\nimport { ArkosConfig } from \"../types/new-arkos-config\";\nimport { loadEnvironmentVariables } from \"../utils/dotenv.helpers\";\nimport { arkos } from \"../app\";\nimport { ArkosRouteHook } from \"../components/arkos-route-hook\";\nimport { ArkosRouteHookInstance } from \"../components/arkos-route-hook/types\";\nimport { ArkosPolicy } from \"../components/arkos-policy\";\nimport { IArkosPolicy } from \"../components/arkos-policy/types\";\nimport type { ArkosLoadable } from \"../types/arkos\";\nimport { ArkosFile } from \"../types/upload\";\nimport { isProduction } from \"../utils/helpers/arkos-config.helpers\";\n\nexport {\n ArkosLoadable,\n ArkosRequest,\n ArkosResponse,\n ArkosNextFunction,\n ArkosRequestHandler,\n IArkosRouter,\n BaseController,\n ArkosConfig,\n RouterConfig,\n RouteHook,\n loadEnvironmentVariables,\n getArkosConfig,\n ArkosRouteHook,\n ArkosRouter,\n ArkosRouteConfig,\n ArkosRouteHookInstance,\n ArkosPolicy,\n IArkosPolicy,\n ArkosFile,\n isProduction,\n};\n\nexport default arkos;\n"]}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { getFileUploadServices, FileUploadService, } from "../../modules/file-upload/file-upload.service.js";
|
|
2
2
|
import authService, { AuthService } from "../../modules/auth/auth.service.js";
|
|
3
3
|
import emailService, { EmailService } from "../../modules/email/email.service.js";
|
|
4
|
-
import {
|
|
4
|
+
import { ArkosPrismaService } from "../../modules/base/base.service.js";
|
|
5
5
|
import authActionService from "../../modules/auth/utils/services/auth-action.service.js";
|
|
6
6
|
export { authService, AuthService, authActionService };
|
|
7
|
-
export {
|
|
7
|
+
export { ArkosPrismaService, };
|
|
8
8
|
export { emailService, EmailService };
|
|
9
9
|
export { getFileUploadServices, FileUploadService };
|
|
10
10
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/exports/services/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,qBAAqB,EACrB,iBAAiB,GAClB,MAAM,+CAA+C,CAAC;AAEvD,OAAO,WAAW,EAAE,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AAC3E,OAAO,YAAY,EAAE,EAAE,YAAY,EAAE,MAAM,mCAAmC,CAAC;AAC/E,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/exports/services/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,qBAAqB,EACrB,iBAAiB,GAClB,MAAM,+CAA+C,CAAC;AAEvD,OAAO,WAAW,EAAE,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AAC3E,OAAO,YAAY,EAAE,EAAE,YAAY,EAAE,MAAM,mCAAmC,CAAC;AAC/E,OAAO,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;AACrE,OAAO,iBAAiB,MAAM,uDAAuD,CAAC;AAMtF,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,iBAAiB,EAAE,CAAC;AAKvD,OAAO,EACL,kBAAkB,GAEnB,CAAC;AAKF,OAAO,EAAE,YAAY,EAAE,YAAY,EAAgB,CAAC;AAKpD,OAAO,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,CAAC","sourcesContent":["import {\n getFileUploadServices,\n FileUploadService,\n} from \"../../modules/file-upload/file-upload.service\";\nimport { EmailOptions } from \"../../modules/email/email.service\";\nimport authService, { AuthService } from \"../../modules/auth/auth.service\";\nimport emailService, { EmailService } from \"../../modules/email/email.service\";\nimport { ArkosPrismaService } from \"../../modules/base/base.service\";\nimport authActionService from \"../../modules/auth/utils/services/auth-action.service\";\nimport { ServiceHookContext } from \"../../modules/base/types/base.service.types\";\n\n/**\n * Authentication service.\n */\nexport { authService, AuthService, authActionService };\n\n/**\n * Base service.\n */\nexport {\n ArkosPrismaService,\n ServiceHookContext,\n};\n\n/**\n * Email service.\n */\nexport { emailService, EmailService, EmailOptions };\n\n/**\n * File upload services.\n */\nexport { getFileUploadServices, FileUploadService };\n"]}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import ArkosGateway from "../components/arkos-gateway/arkos-gateway.js";
|
|
2
|
+
export { IArkosGateway } from "../components/arkos-gateway/arkos-gateway.js";
|
|
3
|
+
export { ArkosGatewayController } from "../components/arkos-gateway/types.js";
|
|
4
|
+
export { ArkosGateway };
|
|
5
|
+
//# sourceMappingURL=websockets.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"websockets.js","sourceRoot":"","sources":["../../../src/exports/websockets.ts"],"names":[],"mappings":"AAAA,OAAO,YAAY,MAAM,2CAA2C,CAAC;AAErE,OAAO,EAAE,aAAa,EAAE,MAAM,2CAA2C,CAAC;AAC1E,OAAO,EAAE,sBAAsB,EAAE,MAAM,mCAAmC,CAAC;AAa3E,OAAO,EAAE,YAAY,EAAE,CAAC","sourcesContent":["import ArkosGateway from \"../components/arkos-gateway/arkos-gateway\";\n\nexport { IArkosGateway } from \"../components/arkos-gateway/arkos-gateway\";\nexport { ArkosGatewayController } from \"../components/arkos-gateway/types\";\nexport type {\n ArkosSocket,\n ArkosGatewayConfig,\n ArkosGatewayEventConfig,\n ArkosGatewayHandler,\n ArkosGatewayPipe,\n ArkosGatewayConnectionHandler,\n ArkosGatewayErrorHandler,\n ArkosGatewayAckFn,\n ArkosBroadcastOperator,\n} from \"../components/arkos-gateway/types\";\n\nexport { ArkosGateway };\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generated.js","sourceRoot":"","sources":["../../src/generated.ts"],"names":[],"mappings":"AAyIA,MAAM,OAAO,YAAY;CAExB","sourcesContent":["/**\n * @maintainers THIS FILE IS A STUB — DO NOT PUT REAL LOGIC HERE.\n *\n * This file exists only so the Arkos source compiles during development.\n * It is completely overwritten at build time by `scripts/generate-post-build-types.ts`,\n * which replaces it with re-exports from `@arkosjs/types` — a folder generated\n * in the user's `node_modules` by `npx arkos prisma generate`.\n *\n * This is the single gateway for all Prisma-dependent types and values.\n * DO NOT import from `@prisma/client` or any user-project-specific module\n * anywhere else in the codebase — add it here instead.\n *\n * To add a new generated type or value:\n * 1. Add a stub export here\n * 2. Add the real export to the `npx arkos prisma generate` output in\n * `src/utils/cli/commands/prisma-generate.command.ts`\n * 3. Add it to the overwrite in `scripts/generate-post-build-types.ts`\n */\n\n/**\n * A map of all Prisma models in the user's project.\n * Each key is a kebab-case model name, each value contains the full\n * Prisma delegate, payload, and args types for that model.\n *\n * Stub during Arkos development — replaced with real generated types\n * after `npx arkos prisma generate`.\n *\n * @example\n * ```ts\n * class
|
|
1
|
+
{"version":3,"file":"generated.js","sourceRoot":"","sources":["../../src/generated.ts"],"names":[],"mappings":"AAyIA,MAAM,OAAO,YAAY;CAExB","sourcesContent":["/**\n * @maintainers THIS FILE IS A STUB — DO NOT PUT REAL LOGIC HERE.\n *\n * This file exists only so the Arkos source compiles during development.\n * It is completely overwritten at build time by `scripts/generate-post-build-types.ts`,\n * which replaces it with re-exports from `@arkosjs/types` — a folder generated\n * in the user's `node_modules` by `npx arkos prisma generate`.\n *\n * This is the single gateway for all Prisma-dependent types and values.\n * DO NOT import from `@prisma/client` or any user-project-specific module\n * anywhere else in the codebase — add it here instead.\n *\n * To add a new generated type or value:\n * 1. Add a stub export here\n * 2. Add the real export to the `npx arkos prisma generate` output in\n * `src/utils/cli/commands/prisma-generate.command.ts`\n * 3. Add it to the overwrite in `scripts/generate-post-build-types.ts`\n */\n\n/**\n * A map of all Prisma models in the user's project.\n * Each key is a kebab-case model name, each value contains the full\n * Prisma delegate, payload, and args types for that model.\n *\n * Stub during Arkos development — replaced with real generated types\n * after `npx arkos prisma generate`.\n *\n * @example\n * ```ts\n * class ArkosPrismaService<TModelName extends keyof PrismaModels<any>> {}\n * ```\n */\n\ninterface StubWhereArgs {\n where?: { id?: any; [key: string]: any };\n [key: string]: any;\n}\n\ninterface StubWhereUniqueArgs {\n where: { id?: any; [key: string]: any };\n [key: string]: any;\n}\n\ninterface StubDataArgs {\n data: Record<string, any>;\n [key: string]: any;\n}\n\ninterface StubWhereDataArgs {\n where: { id?: any; [key: string]: any };\n data: Record<string, any>;\n [key: string]: any;\n}\n\ninterface StubPaginationArgs extends StubWhereArgs {\n orderBy?: Record<string, any>;\n select?: Record<string, any>;\n include?: Record<string, any>;\n skip?: number;\n take?: number;\n cursor?: Record<string, any>;\n}\n\ninterface StubCountArgs extends StubWhereArgs {\n select?: Record<string, any>;\n orderBy?: Record<string, any>;\n skip?: number;\n take?: number;\n cursor?: Record<string, any>;\n}\n\n/**\n * Extracts the `where` filter type from a Prisma args type.\n * @example ExtractPrismaFilters<PrismaModels<any>['user']['FindManyArgs']>\n */\nexport type ExtractPrismaFilters<T> = T extends {\n where?: infer W;\n [key: string]: any;\n}\n ? W\n : any;\n\n/**\n * Extracts the `data` type from a Prisma args type.\n * @example ExtractPrismaData<PrismaModels<any>['user']['CreateArgs']>\n */\nexport type ExtractPrismaData<T> = T extends {\n data: infer D;\n [key: string]: any;\n}\n ? D\n : any;\n\n/**\n * Extracts query options from a Prisma args type by omitting the specified keys.\n * @example ExtractPrismaQueryOptions<PrismaModels<any>['user']['CreateArgs'], 'data'>\n */\nexport type ExtractPrismaQueryOptions<T, K extends keyof T = never> = Omit<\n T,\n K\n>;\n\n/**\n * A map of all Prisma models in the user's project.\n * Each key is a kebab-case model name, each value contains the full\n * Prisma delegate, payload, and args types for that model.\n *\n * Stub during Arkos development — replaced with real generated types\n * after `npx arkos prisma generate`.\n *\n * @example\n * ```ts\n * class ArkosPrismaService<TModelName extends keyof PrismaModels<any>> {}\n * ```\n */\nexport type PrismaModels<T extends Record<string, any>> = Record<\n string,\n {\n Delegate: Record<string, (...args: any[]) => any>;\n GetPayload: Record<string, any>;\n FindManyArgs: StubPaginationArgs;\n FindFirstArgs: StubPaginationArgs;\n CreateArgs: StubDataArgs;\n CreateManyArgs: StubDataArgs;\n UpdateArgs: StubWhereDataArgs;\n UpdateManyArgs: StubWhereDataArgs;\n DeleteArgs: StubWhereUniqueArgs;\n DeleteManyArgs: StubWhereArgs;\n CountArgs: StubCountArgs;\n }\n>;\n\n/**\n * Stub PrismaClient for Arkos development.\n * Replaced with the real `PrismaClient` from `@prisma/client` after\n * `npx arkos prisma generate`.\n */\nexport class PrismaClient {\n [key: string]: any;\n}\n"]}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import catchAsync from "../error-handler/utils/catch-async.js";
|
|
2
2
|
import AppError from "../error-handler/utils/app-error.js";
|
|
3
3
|
import authService from "./auth.service.js";
|
|
4
|
-
import {
|
|
4
|
+
import { ArkosPrismaService } from "../base/base.service.js";
|
|
5
5
|
import { getArkosConfig } from "../../server.js";
|
|
6
6
|
import { createPrismaWhereClause, determineUsernameField, getNestedValue, } from "./utils/helpers/auth.controller.helpers.js";
|
|
7
7
|
import authActionService from "./utils/services/auth-action.service.js";
|
|
@@ -238,7 +238,7 @@ export class AuthController {
|
|
|
238
238
|
}
|
|
239
239
|
getUserService() {
|
|
240
240
|
if (!this.userService)
|
|
241
|
-
this.userService = new
|
|
241
|
+
this.userService = new ArkosPrismaService("user");
|
|
242
242
|
return this.userService;
|
|
243
243
|
}
|
|
244
244
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth.controller.js","sourceRoot":"","sources":["../../../../src/modules/auth/auth.controller.ts"],"names":[],"mappings":"AAAA,OAAO,UAAU,MAAM,oCAAoC,CAAC;AAC5D,OAAO,QAAQ,MAAM,kCAAkC,CAAC;AAExD,OAAO,WAAW,MAAM,gBAAgB,CAAC;AACzC,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAEnD,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EACL,uBAAuB,EACvB,sBAAsB,EACtB,cAAc,GACf,MAAM,yCAAyC,CAAC;AACjD,OAAO,iBAAiB,MAAM,sCAAsC,CAAC;AACrE,OAAO,EAAE,eAAe,EAAE,MAAM,0CAA0C,CAAC;AAK3E,MAAM,CAAC,MAAM,yBAAyB,GAAG;IACvC,QAAQ,EAAE,KAAK;CAChB,CAAC;AAKF,MAAM,OAAO,cAAc;IAA3B;QAWE,UAAK,GAAG,UAAU,CAChB,KAAK,EAAE,GAAiB,EAAE,GAAkB,EAAE,IAAuB,EAAE,EAAE;YACvE,MAAM,IAAI,GAAG,CAAC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC,OAAO,CAC/C,EAAE,EAAE,EAAE,GAAG,CAAC,IAAK,CAAC,EAAE,EAAE,EACpB,GAAG,CAAC,kBAAkB,IAAI,EAAE,CAC7B,CAAwB,CAAC;YAE1B,MAAM,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE;gBACrD,IAAI,IAAI;oBAAE,OAAO,IAAI,CAAC,GAAiB,CAAC,CAAC;YAC3C,CAAC,CAAC,CAAC;YAEH,IAAI,eAAe,CAAC,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,KAAK,EAAE,CAAC;gBACpD,GAAW,CAAC,YAAY,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;gBAC3C,GAAG,CAAC,YAAY,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;gBAClC,GAAG,CAAC,MAAM,CAAC,IAAI,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;gBAChC,GAAW,CAAC,cAAc,GAAG,GAAG,CAAC;gBAClC,GAAG,CAAC,cAAc,GAAG,GAAG,CAAC;gBACzB,GAAG,CAAC,MAAM,CAAC,MAAM,GAAG,GAAG,CAAC;gBACxB,OAAO,IAAI,EAAE,CAAC;YAChB,CAAC;YAED,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;QACvC,CAAC,CACF,CAAC;QAKF,aAAQ,GAAG,UAAU,CACnB,KAAK,EAAE,GAAiB,EAAE,GAAkB,EAAE,IAAuB,EAAE,EAAE;YACvE,IAAI,UAAU,IAAI,GAAG,CAAC,IAAI;gBACxB,MAAM,IAAI,QAAQ,CAChB,+DAA+D,EAC/D,GAAG,EACH,sBAAsB,CACvB,CAAC;YAEJ,MAAM,IAAI,GAAG,CAAC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC,SAAS,CACjD,EAAE,EAAE,EAAE,GAAG,CAAC,IAAK,CAAC,EAAE,EAAE,EACpB,GAAG,CAAC,IAAI,EACR,GAAG,CAAC,kBAAkB,IAAI,EAAE,CAC7B,CAAwB,CAAC;YAE1B,MAAM,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE;gBACrD,IAAI,IAAI;oBAAE,OAAO,IAAI,CAAC,GAAiB,CAAC,CAAC;YAC3C,CAAC,CAAC,CAAC;YAEH,IAAI,eAAe,CAAC,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC,EAAE,KAAK,EAAE,CAAC;gBACvD,GAAW,CAAC,YAAY,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;gBAC3C,GAAG,CAAC,YAAY,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;gBAClC,GAAG,CAAC,MAAM,CAAC,IAAI,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;gBAChC,GAAW,CAAC,cAAc,GAAG,GAAG,CAAC;gBAClC,GAAG,CAAC,cAAc,GAAG,GAAG,CAAC;gBACzB,GAAG,CAAC,MAAM,CAAC,MAAM,GAAG,GAAG,CAAC;gBACxB,OAAO,IAAI,EAAE,CAAC;YAChB,CAAC;YAED,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;QACvC,CAAC,CACF,CAAC;QAKF,WAAM,GAAG,UAAU,CACjB,KAAK,EAAE,GAAiB,EAAE,GAAkB,EAAE,IAAuB,EAAE,EAAE;YACvE,GAAG,CAAC,MAAM,CAAC,oBAAoB,EAAE,UAAU,EAAE;gBAC3C,OAAO,EAAE,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;gBACzC,QAAQ,EAAE,IAAI;aACf,CAAC,CAAC;YAEH,IAAI,eAAe,CAAC,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC;gBACrD,GAAW,CAAC,YAAY,GAAG,IAAI,CAAC;gBACjC,GAAG,CAAC,YAAY,GAAG,IAAI,CAAC;gBACxB,GAAG,CAAC,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC;gBACtB,GAAW,CAAC,cAAc,GAAG,GAAG,CAAC;gBAClC,GAAG,CAAC,cAAc,GAAG,GAAG,CAAC;gBACzB,GAAG,CAAC,MAAM,CAAC,MAAM,GAAG,GAAG,CAAC;gBACxB,OAAO,IAAI,EAAE,CAAC;YAChB,CAAC;YAED,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;QACzB,CAAC,CACF,CAAC;QAKF,UAAK,GAAG,UAAU,CAChB,KAAK,EAAE,GAAiB,EAAE,GAAkB,EAAE,IAAuB,EAAE,EAAE;YACvE,MAAM,WAAW,GAAG,cAAc,EAAE,EAAE,cAAc,CAAC;YAErD,MAAM,aAAa,GAAG,sBAAsB,CAAC,GAAG,CAAC,CAAC;YAElD,MAAM,SAAS,GACb,aAAa,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;YAEhE,MAAM,aAAa,GAAG,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAC1C,MAAM,EAAE,QAAQ,EAAE,GAAG,GAAG,CAAC,IAAI,CAAC;YAE9B,IAAI,CAAC,aAAa,IAAI,CAAC,QAAQ;gBAC7B,OAAO,IAAI,CACT,IAAI,QAAQ,CACV,uBAAuB,SAAS,eAAe,EAC/C,GAAG,EACH,yBAAyB,CAC1B,CACF,CAAC;YAEJ,IAAI,WAAgC,CAAC;YAErC,IAAI,aAAa,EAAE,QAAQ,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC;gBACnC,MAAM,WAAW,GAAG,cAAc,CAAC,GAAG,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC;gBAC5D,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;oBAC9B,OAAO,IAAI,CAAC,IAAI,QAAQ,CAAC,WAAW,aAAa,WAAW,EAAE,GAAG,CAAC,CAAC,CAAC;gBACtE,CAAC;gBACD,WAAW,GAAG,uBAAuB,CAAC,aAAa,EAAE,WAAW,CAAC,CAAC;YACpE,CAAC;iBAAM,CAAC;gBACN,WAAW,GAAG,EAAE,CAAC,aAAa,CAAC,EAAE,aAAa,EAAE,CAAC;YACnD,CAAC;YAED,MAAM,IAAI,GAAG,CAAC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC,OAAO,CAC/C,WAAW,EACX,GAAG,CAAC,kBAAkB,IAAI,EAAE,CAC7B,CAAwB,CAAC;YAE1B,IACE,CAAC,IAAI;gBACL,CAAC,CAAC,MAAM,WAAW,CAAC,iBAAiB,CAAC,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,EAC/D,CAAC;gBACD,OAAO,IAAI,CACT,IAAI,QAAQ,CACV,aAAa,SAAS,cAAc,EACpC,GAAG,EACH,sBAAsB,CACvB,CACF,CAAC;YACJ,CAAC;YAED,MAAM,KAAK,GAAG,WAAW,CAAC,YAAY,CAAC,IAAI,CAAC,EAAG,CAAC,CAAC;YACjD,MAAM,aAAa,GAAG,WAAW,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC;YAE3D,IACE,WAAW,EAAE,KAAK,EAAE,sBAAsB,KAAK,eAAe;gBAC9D,WAAW,EAAE,KAAK,EAAE,sBAAsB,KAAK,MAAM;gBACrD,CAAC,WAAW,EAAE,KAAK,EAAE,sBAAsB,EAC3C,CAAC;gBACD,GAAG,CAAC,YAAY,GAAG,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC;gBAC1C,GAAG,CAAC,MAAM,CAAC,IAAI,GAAG,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC;YAC3C,CAAC;YAED,IACE,WAAW,EAAE,KAAK,EAAE,sBAAsB,KAAK,aAAa;gBAC5D,WAAW,EAAE,KAAK,EAAE,sBAAsB,KAAK,MAAM;gBACrD,CAAC,WAAW,EAAE,KAAK,EAAE,sBAAsB;gBAE3C,GAAG,CAAC,MAAM,CAAC,oBAAoB,EAAE,KAAK,EAAE,aAAa,CAAC,CAAC;YAEzD,GAAG,CAAC,WAAW,GAAG,KAAK,CAAC;YAExB,IAAI,eAAe,CAAC,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,KAAK,EAAE,CAAC;gBACpD,GAAW,CAAC,YAAY,GAAG,GAAG,CAAC,YAAY,CAAC;gBAC7C,GAAG,CAAC,cAAc,GAAG,EAAE,IAAI,EAAE,CAAC;gBAC9B,GAAG,CAAC,MAAM,CAAC,UAAU,GAAG,EAAE,IAAI,EAAE,CAAC;gBAChC,GAAW,CAAC,cAAc,GAAG,GAAG,CAAC;gBAClC,GAAG,CAAC,cAAc,GAAG,GAAG,CAAC;gBACzB,GAAG,CAAC,MAAM,CAAC,MAAM,GAAG,GAAG,CAAC;gBACxB,OAAO,IAAI,EAAE,CAAC;YAChB,CAAC;YAED,IACE,WAAW,EAAE,KAAK,EAAE,sBAAsB,KAAK,eAAe;gBAC9D,WAAW,EAAE,KAAK,EAAE,sBAAsB,KAAK,MAAM;gBACrD,CAAC,WAAW,EAAE,KAAK,EAAE,sBAAsB,EAC3C,CAAC;gBACD,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;YACzC,CAAC;iBAAM,IACL,WAAW,EAAE,KAAK,EAAE,sBAAsB,KAAK,aAAa;gBAC5D,WAAW,EAAE,KAAK,EAAE,sBAAsB,KAAK,MAAM;gBACrD,CAAC,WAAW,EAAE,KAAK,EAAE,sBAAsB;gBAE3C,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;QAC3B,CAAC,CACF,CAAC;QAKF,WAAM,GAAG,UAAU,CACjB,KAAK,EAAE,GAAiB,EAAE,GAAkB,EAAE,IAAuB,EAAE,EAAE;YACvE,MAAM,IAAI,GAAG,CAAC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC,SAAS,CACjD,GAAG,CAAC,IAAI,EACR,GAAG,CAAC,kBAAkB,IAAI,EAAE,CAC7B,CAAwB,CAAC;YAE1B,IAAI,eAAe,CAAC,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC;gBACrD,GAAW,CAAC,YAAY,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;gBAC3C,GAAG,CAAC,YAAY,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;gBAClC,GAAG,CAAC,MAAM,CAAC,IAAI,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;gBAChC,GAAW,CAAC,cAAc,GAAG,GAAG,CAAC;gBAClC,GAAG,CAAC,cAAc,GAAG,GAAG,CAAC;gBACzB,GAAG,CAAC,MAAM,CAAC,MAAM,GAAG,GAAG,CAAC;gBACxB,OAAO,IAAI,EAAE,CAAC;YAChB,CAAC;YAED,MAAM,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE;gBACrD,OAAO,IAAI,CAAC,GAAiB,CAAC,CAAC;YACjC,CAAC,CAAC,CAAC;YAEH,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;QACvC,CAAC,CACF,CAAC;QAKF,aAAQ,GAAG,UAAU,CACnB,KAAK,EAAE,GAAiB,EAAE,GAAkB,EAAE,IAAuB,EAAE,EAAE;YACvE,MAAM,MAAM,GAAG,GAAG,CAAC,IAAK,CAAC,EAAE,CAAC;YAE5B,MAAM,WAAW,GAAG,CAAC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC,SAAS,CACxD,EAAE,EAAE,EAAE,MAAM,EAAE,EACd,EAAE,oBAAoB,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE,EAClD,GAAG,CAAC,kBAAkB,IAAI,EAAE,CAC7B,CAAwB,CAAC;YAE1B,IAAI,eAAe,CAAC,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC,EAAE,KAAK,EAAE,CAAC;gBACvD,GAAW,CAAC,YAAY,GAAG,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC;gBAClD,GAAG,CAAC,YAAY,GAAG,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC;gBACzC,GAAG,CAAC,MAAM,CAAC,IAAI,GAAG,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC;gBACvC,GAAW,CAAC,cAAc,GAAG,GAAG,CAAC;gBAClC,GAAG,CAAC,cAAc,GAAG,GAAG,CAAC;gBACzB,GAAG,CAAC,MAAM,CAAC,MAAM,GAAG,GAAG,CAAC;gBACxB,OAAO,IAAI,EAAE,CAAC;YAChB,CAAC;YAED,MAAM,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE;gBACrD,OAAO,WAAW,CAAC,GAAiB,CAAC,CAAC;YACxC,CAAC,CAAC,CAAC;YAEH,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,8BAA8B,EAAE,CAAC,CAAC;QACpE,CAAC,CACF,CAAC;QAKF,mBAAc,GAAG,UAAU,CACzB,KAAK,EAAE,GAAiB,EAAE,GAAkB,EAAE,IAAuB,EAAE,EAAE;YACvE,MAAM,EAAE,eAAe,EAAE,WAAW,EAAE,GAAG,GAAG,CAAC,IAAI,CAAC;YAElD,IAAI,CAAC,eAAe,IAAI,CAAC,WAAW;gBAClC,OAAO,IAAI,CACT,IAAI,QAAQ,CACV,8CAA8C,EAC9C,GAAG,EACH,2BAA2B,CAC5B,CACF,CAAC;YAEJ,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;YAEtB,IAAI,CAAC,IAAI,IAAI,IAAI,EAAE,QAAQ,KAAK,KAAK,IAAI,IAAI,EAAE,oBAAoB;gBACjE,OAAO,IAAI,CAAC,IAAI,QAAQ,CAAC,iBAAiB,EAAE,GAAG,CAAC,CAAC,CAAC;YAEpD,MAAM,iBAAiB,GAAG,MAAM,WAAW,CAAC,iBAAiB,CAC3D,MAAM,CAAC,eAAe,CAAC,EACvB,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CACtB,CAAC;YAEF,MAAM,OAAO,GAAG,cAAc,EAAE,CAAC;YACjC,MAAM,eAAe,GAAG,OAAO,EAAE,cAAc,CAAC;YAEhD,IAAI,CAAC,iBAAiB;gBACpB,OAAO,IAAI,CACT,IAAI,QAAQ,CACV,+BAA+B,EAC/B,GAAG,EACH,0BAA0B,CAC3B,CACF,CAAC;YAEJ,IACE,CAAC,WAAW,CAAC,gBAAgB,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;gBAClD,CAAC,OAAO,EAAE,UAAU,EACpB,CAAC;gBACD,OAAO,IAAI,CACT,IAAI,QAAQ,CACV,eAAe,EAAE,kBAAkB,EAAE,OAAO;oBAC1C,mGAAmG,EACrG,GAAG,EACH,iCAAiC,CAClC,CACF,CAAC;YACJ,CAAC;YAED,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC,SAAS,CACnC,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,EACf;gBACE,QAAQ,EAAE,MAAM,WAAW,CAAC,YAAY,CAAC,WAAW,CAAC;gBACrD,iBAAiB,EAAE,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,WAAW,EAAE;aACtD,CACF,CAAC;YAEF,MAAM,KAAK,GAAG,WAAW,CAAC,YAAY,CAAC,IAAI,CAAC,EAAG,CAAC,CAAC;YACjD,MAAM,aAAa,GAAG,WAAW,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC;YAC3D,MAAM,WAAW,GAAG,cAAc,EAAE,EAAE,cAAc,CAAC;YAErD,MAAM,YAAY,GAA2B;gBAC3C,MAAM,EAAE,SAAS;gBACjB,OAAO,EAAE,gCAAgC;aAC1C,CAAC;YAEF,IACE,WAAW,EAAE,KAAK,EAAE,sBAAsB,KAAK,eAAe;gBAC9D,WAAW,EAAE,KAAK,EAAE,sBAAsB,KAAK,MAAM;gBACrD,CAAC,WAAW,EAAE,KAAK,EAAE,sBAAsB,EAC3C,CAAC;gBACD,YAAY,CAAC,WAAW,GAAG,KAAK,CAAC;YACnC,CAAC;YAED,IACE,WAAW,EAAE,KAAK,EAAE,sBAAsB,KAAK,aAAa;gBAC5D,WAAW,EAAE,KAAK,EAAE,sBAAsB,KAAK,MAAM;gBACrD,CAAC,WAAW,EAAE,KAAK,EAAE,sBAAsB;gBAE3C,GAAG,CAAC,MAAM,CAAC,oBAAoB,EAAE,KAAK,EAAE,aAAa,CAAC,CAAC;YAEzD,GAAG,CAAC,WAAW,GAAG,KAAK,CAAC;YAExB,IAAI,eAAe,CAAC,QAAQ,CAAC,MAAM,EAAE,gBAAgB,CAAC,EAAE,KAAK,EAAE,CAAC;gBAC7D,GAAW,CAAC,YAAY,GAAG,YAAY,CAAC;gBACzC,GAAG,CAAC,cAAc,GAAG,EAAE,IAAI,EAAE,CAAC;gBAC9B,GAAG,CAAC,YAAY,GAAG,YAAY,CAAC;gBAChC,GAAG,CAAC,MAAM,CAAC,IAAI,GAAG,YAAY,CAAC;gBAC9B,GAAW,CAAC,cAAc,GAAG,GAAG,CAAC;gBAClC,GAAG,CAAC,cAAc,GAAG,GAAG,CAAC;gBACzB,GAAG,CAAC,MAAM,CAAC,MAAM,GAAG,GAAG,CAAC;gBACxB,OAAO,IAAI,EAAE,CAAC;YAChB,CAAC;YAED,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QACrC,CAAC,CACF,CAAC;QAEF,uBAAkB,GAAG,UAAU,CAC7B,KAAK,EAAE,CAAe,EAAE,GAAkB,EAAE,EAAE;YAC5C,MAAM,WAAW,GAAG,cAAc,EAAE,CAAC;YACrC,MAAM,WAAW,GAAG,iBAAiB,CAAC,MAAM,EAAE,EAAE,GAAG,CAAC,CAAC,UAAU,EAAE,EAAE;gBACjE,IAAI,WAAW,EAAE,cAAc,EAAE,IAAI,KAAK,SAAS;oBACjD,OAAQ,UAAkB,EAAE,KAAK,CAAC;gBACpC,OAAO,UAAU,CAAC;YACpB,CAAC,CAAC,CAAC;YAEH,GAAG,CAAC,IAAI,CAAC;gBACP,KAAK,EAAE,WAAW,CAAC,MAAM;gBACzB,OAAO,EAAE,WAAW,CAAC,MAAM;gBAC3B,IAAI,EAAE,WAAW;aAClB,CAAC,CAAC;QACL,CAAC,CACF,CAAC;QAEF,sBAAiB,GAAG,UAAU,CAC5B,KAAK,EAAE,GAAiB,EAAE,GAAkB,EAAE,EAAE;YAC9C,MAAM,WAAW,GAAG,cAAc,EAAE,CAAC;YACrC,MAAM,YAAY,GAAG,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC;YAE9C,IAAI,CAAC,YAAY;gBACf,MAAM,IAAI,QAAQ,CAChB,8BAA8B,EAC9B,GAAG,EACH,sBAAsB,CACvB,CAAC;YAEJ,MAAM,WAAW,GAAG,iBAAiB;iBAClC,aAAa,CAAC,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC;gBACxC,EAAE,GAAG,CAAC,CAAC,UAAU,EAAE,EAAE;gBACnB,IAAI,WAAW,EAAE,cAAc,EAAE,IAAI,KAAK,SAAS;oBACjD,OAAQ,UAAkB,EAAE,KAAK,CAAC;gBACpC,OAAO,UAAU,CAAC;YACpB,CAAC,CAAC,CAAC;YAEL,IAAI,CAAC,WAAW;gBACd,MAAM,IAAI,QAAQ,CAChB,qCAAqC,YAAY,EAAE,EACnD,GAAG,EACH,oBAAoB,CACrB,CAAC;YAEJ,GAAG,CAAC,IAAI,CAAC;gBACP,KAAK,EAAE,WAAW,CAAC,MAAM;gBACzB,OAAO,EAAE,WAAW,CAAC,MAAM;gBAC3B,IAAI,EAAE,WAAW;aAClB,CAAC,CAAC;QACL,CAAC,CACF,CAAC;IACJ,CAAC;IApZS,cAAc;QACpB,IAAI,CAAC,IAAI,CAAC,WAAW;YAAE,IAAI,CAAC,WAAW,GAAG,IAAI,WAAW,CAAC,MAAM,CAAC,CAAC;QAClE,OAAO,IAAI,CAAC,WAAW,CAAC;IAC1B,CAAC;CAiZF;AAED,MAAM,CAAC,MAAM,cAAc,GAAG,IAAI,cAAc,EAAE,CAAC;AAEnD,eAAe,cAAc,CAAC","sourcesContent":["import catchAsync from \"../error-handler/utils/catch-async\";\nimport AppError from \"../error-handler/utils/app-error\";\nimport { ArkosRequest, ArkosResponse, ArkosNextFunction } from \"../../types\";\nimport authService from \"./auth.service\";\nimport { BaseService } from \"../base/base.service\";\nimport { User } from \"../../types\";\nimport { getArkosConfig } from \"../../server\";\nimport {\n createPrismaWhereClause,\n determineUsernameField,\n getNestedValue,\n} from \"./utils/helpers/auth.controller.helpers\";\nimport authActionService from \"./utils/services/auth-action.service\";\nimport { routeHookReader } from \"../../components/arkos-route-hook/reader\";\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 * Authentication controller class handling all auth-related operations\n */\nexport class AuthController {\n private userService?: BaseService<\"user\">;\n\n private getUserService() {\n if (!this.userService) this.userService = new BaseService(\"user\");\n return this.userService;\n }\n\n /**\n * Retrieves the current authenticated user's information\n */\n getMe = catchAsync(\n async (req: ArkosRequest, res: ArkosResponse, next: ArkosNextFunction) => {\n const user = (await this.getUserService().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 (routeHookReader.getHooks(\"auth\", \"getMe\")?.after) {\n (res as any).originalData = { data: user };\n req.responseData = { data: user };\n res.locals.data = { data: user };\n (res as any).originalStatus = 200;\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 (req: ArkosRequest, res: ArkosResponse, next: ArkosNextFunction) => {\n if (\"password\" in req.body)\n throw new AppError(\n \"In order to update password use the update-password endpoint.\",\n 400,\n \"InvalidFieldPassword\"\n );\n\n const user = (await this.getUserService().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 (routeHookReader.getHooks(\"auth\", \"updateMe\")?.after) {\n (res as any).originalData = { data: user };\n req.responseData = { data: user };\n res.locals.data = { data: user };\n (res as any).originalStatus = 200;\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 (req: ArkosRequest, res: ArkosResponse, next: ArkosNextFunction) => {\n res.cookie(\"arkos_access_token\", \"no-token\", {\n expires: new Date(Date.now() + 10 * 1000),\n httpOnly: true,\n });\n\n if (routeHookReader.getHooks(\"auth\", \"logout\")?.after) {\n (res as any).originalData = null;\n req.responseData = null;\n res.locals.data = null;\n (res as any).originalStatus = 204;\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 */\n login = catchAsync(\n async (req: ArkosRequest, res: ArkosResponse, next: ArkosNextFunction) => {\n const authConfigs = getArkosConfig()?.authentication;\n\n const usernameField = determineUsernameField(req);\n\n const lastField =\n usernameField.split(\".\")[usernameField.split(\".\").length - 1];\n\n const usernameValue = req.body[lastField];\n const { password } = req.body;\n\n if (!usernameValue || !password)\n return next(\n new AppError(\n `Please provide both ${lastField} and password`,\n 400,\n `MissingCredentialFields`\n )\n );\n\n let whereClause: Record<string, any>;\n\n if (usernameField?.includes?.(\".\")) {\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 whereClause = { [usernameField]: usernameValue };\n }\n\n const user = (await this.getUserService().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(\n new AppError(\n `Incorrect ${lastField} or password`,\n 401,\n `IncorrectCredentials`\n )\n );\n }\n\n const token = authService.signJwtToken(user.id!);\n const cookieOptions = authService.getJwtCookieOptions(req);\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 (routeHookReader.getHooks(\"auth\", \"login\")?.after) {\n (res as any).originalData = req.responseData;\n req.additionalData = { user };\n res.locals.additional = { user };\n (res as any).originalStatus = 200;\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\n */\n signup = catchAsync(\n async (req: ArkosRequest, res: ArkosResponse, next: ArkosNextFunction) => {\n const user = (await this.getUserService().createOne(\n req.body,\n req.prismaQueryOptions || {}\n )) as Record<string, any>;\n\n if (routeHookReader.getHooks(\"auth\", \"signup\")?.after) {\n (res as any).originalData = { data: user };\n req.responseData = { data: user };\n res.locals.data = { data: user };\n (res as any).originalStatus = 201;\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 /**\n * Marks user account as self-deleted\n */\n deleteMe = catchAsync(\n async (req: ArkosRequest, res: ArkosResponse, next: ArkosNextFunction) => {\n const userId = req.user!.id;\n\n const updatedUser = (await this.getUserService().updateOne(\n { id: userId },\n { deletedSelfAccountAt: new Date().toISOString() },\n req.prismaQueryOptions || {}\n )) as Record<string, any>;\n\n if (routeHookReader.getHooks(\"auth\", \"deleteMe\")?.after) {\n (res as any).originalData = { data: updatedUser };\n req.responseData = { data: updatedUser };\n res.locals.data = { data: updatedUser };\n (res as any).originalStatus = 200;\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({ message: \"Account deleted successfully\" });\n }\n );\n\n /**\n * Updates the password of the authenticated user\n */\n updatePassword = catchAsync(\n async (req: ArkosRequest, res: ArkosResponse, next: ArkosNextFunction) => {\n const { currentPassword, newPassword } = req.body;\n\n if (!currentPassword || !newPassword)\n return next(\n new AppError(\n \"currentPassword and newPassword are required\",\n 400,\n \"SameCurrentAndNewPassword\"\n )\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 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(\n new AppError(\n \"Current password is incorrect\",\n 400,\n \"IncorrentCurrentPassword\"\n )\n );\n\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 \"PasswordDoesNotMeetRequirements\"\n )\n );\n }\n\n await this.getUserService().updateOne(\n { id: user.id },\n {\n password: await authService.hashPassword(newPassword),\n passwordChangedAt: new Date(Date.now()).toISOString(),\n }\n );\n\n const token = authService.signJwtToken(user.id!);\n const cookieOptions = authService.getJwtCookieOptions(req);\n const authConfigs = getArkosConfig()?.authentication;\n\n const responseData: Record<string, string> = {\n status: \"success\",\n message: \"Password updated successfully!\",\n };\n\n if (\n authConfigs?.login?.sendAccessTokenThrough === \"response-only\" ||\n authConfigs?.login?.sendAccessTokenThrough === \"both\" ||\n !authConfigs?.login?.sendAccessTokenThrough\n ) {\n 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 (routeHookReader.getHooks(\"auth\", \"updatePassword\")?.after) {\n (res as any).originalData = responseData;\n req.additionalData = { user };\n req.responseData = responseData;\n res.locals.data = responseData;\n (res as any).originalStatus = 200;\n req.responseStatus = 200;\n res.locals.status = 200;\n return next();\n }\n\n res.status(200).json(responseData);\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(\n `Please provide a resoureName`,\n 400,\n \"MissiongResourseName\"\n );\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 \"AuthActionNotFound\"\n );\n\n res.json({\n total: authActions.length,\n results: authActions.length,\n data: authActions,\n });\n }\n );\n}\n\nexport const authController = new AuthController();\n\nexport default authController;\n"]}
|
|
1
|
+
{"version":3,"file":"auth.controller.js","sourceRoot":"","sources":["../../../../src/modules/auth/auth.controller.ts"],"names":[],"mappings":"AAAA,OAAO,UAAU,MAAM,oCAAoC,CAAC;AAC5D,OAAO,QAAQ,MAAM,kCAAkC,CAAC;AAExD,OAAO,WAAW,MAAM,gBAAgB,CAAC;AACzC,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAE1D,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EACL,uBAAuB,EACvB,sBAAsB,EACtB,cAAc,GACf,MAAM,yCAAyC,CAAC;AACjD,OAAO,iBAAiB,MAAM,sCAAsC,CAAC;AACrE,OAAO,EAAE,eAAe,EAAE,MAAM,0CAA0C,CAAC;AAK3E,MAAM,CAAC,MAAM,yBAAyB,GAAG;IACvC,QAAQ,EAAE,KAAK;CAChB,CAAC;AAKF,MAAM,OAAO,cAAc;IAA3B;QAWE,UAAK,GAAG,UAAU,CAChB,KAAK,EAAE,GAAiB,EAAE,GAAkB,EAAE,IAAuB,EAAE,EAAE;YACvE,MAAM,IAAI,GAAG,CAAC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC,OAAO,CAC/C,EAAE,EAAE,EAAE,GAAG,CAAC,IAAK,CAAC,EAAE,EAAE,EACpB,GAAG,CAAC,kBAAkB,IAAI,EAAE,CAC7B,CAAwB,CAAC;YAE1B,MAAM,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE;gBACrD,IAAI,IAAI;oBAAE,OAAO,IAAI,CAAC,GAAiB,CAAC,CAAC;YAC3C,CAAC,CAAC,CAAC;YAEH,IAAI,eAAe,CAAC,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,KAAK,EAAE,CAAC;gBACpD,GAAW,CAAC,YAAY,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;gBAC3C,GAAG,CAAC,YAAY,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;gBAClC,GAAG,CAAC,MAAM,CAAC,IAAI,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;gBAChC,GAAW,CAAC,cAAc,GAAG,GAAG,CAAC;gBAClC,GAAG,CAAC,cAAc,GAAG,GAAG,CAAC;gBACzB,GAAG,CAAC,MAAM,CAAC,MAAM,GAAG,GAAG,CAAC;gBACxB,OAAO,IAAI,EAAE,CAAC;YAChB,CAAC;YAED,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;QACvC,CAAC,CACF,CAAC;QAKF,aAAQ,GAAG,UAAU,CACnB,KAAK,EAAE,GAAiB,EAAE,GAAkB,EAAE,IAAuB,EAAE,EAAE;YACvE,IAAI,UAAU,IAAI,GAAG,CAAC,IAAI;gBACxB,MAAM,IAAI,QAAQ,CAChB,+DAA+D,EAC/D,GAAG,EACH,sBAAsB,CACvB,CAAC;YAEJ,MAAM,IAAI,GAAG,CAAC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC,SAAS,CACjD,EAAE,EAAE,EAAE,GAAG,CAAC,IAAK,CAAC,EAAE,EAAE,EACpB,GAAG,CAAC,IAAI,EACR,GAAG,CAAC,kBAAkB,IAAI,EAAE,CAC7B,CAAwB,CAAC;YAE1B,MAAM,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE;gBACrD,IAAI,IAAI;oBAAE,OAAO,IAAI,CAAC,GAAiB,CAAC,CAAC;YAC3C,CAAC,CAAC,CAAC;YAEH,IAAI,eAAe,CAAC,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC,EAAE,KAAK,EAAE,CAAC;gBACvD,GAAW,CAAC,YAAY,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;gBAC3C,GAAG,CAAC,YAAY,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;gBAClC,GAAG,CAAC,MAAM,CAAC,IAAI,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;gBAChC,GAAW,CAAC,cAAc,GAAG,GAAG,CAAC;gBAClC,GAAG,CAAC,cAAc,GAAG,GAAG,CAAC;gBACzB,GAAG,CAAC,MAAM,CAAC,MAAM,GAAG,GAAG,CAAC;gBACxB,OAAO,IAAI,EAAE,CAAC;YAChB,CAAC;YAED,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;QACvC,CAAC,CACF,CAAC;QAKF,WAAM,GAAG,UAAU,CACjB,KAAK,EAAE,GAAiB,EAAE,GAAkB,EAAE,IAAuB,EAAE,EAAE;YACvE,GAAG,CAAC,MAAM,CAAC,oBAAoB,EAAE,UAAU,EAAE;gBAC3C,OAAO,EAAE,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;gBACzC,QAAQ,EAAE,IAAI;aACf,CAAC,CAAC;YAEH,IAAI,eAAe,CAAC,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC;gBACrD,GAAW,CAAC,YAAY,GAAG,IAAI,CAAC;gBACjC,GAAG,CAAC,YAAY,GAAG,IAAI,CAAC;gBACxB,GAAG,CAAC,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC;gBACtB,GAAW,CAAC,cAAc,GAAG,GAAG,CAAC;gBAClC,GAAG,CAAC,cAAc,GAAG,GAAG,CAAC;gBACzB,GAAG,CAAC,MAAM,CAAC,MAAM,GAAG,GAAG,CAAC;gBACxB,OAAO,IAAI,EAAE,CAAC;YAChB,CAAC;YAED,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;QACzB,CAAC,CACF,CAAC;QAKF,UAAK,GAAG,UAAU,CAChB,KAAK,EAAE,GAAiB,EAAE,GAAkB,EAAE,IAAuB,EAAE,EAAE;YACvE,MAAM,WAAW,GAAG,cAAc,EAAE,EAAE,cAAc,CAAC;YAErD,MAAM,aAAa,GAAG,sBAAsB,CAAC,GAAG,CAAC,CAAC;YAElD,MAAM,SAAS,GACb,aAAa,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;YAEhE,MAAM,aAAa,GAAG,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAC1C,MAAM,EAAE,QAAQ,EAAE,GAAG,GAAG,CAAC,IAAI,CAAC;YAE9B,IAAI,CAAC,aAAa,IAAI,CAAC,QAAQ;gBAC7B,OAAO,IAAI,CACT,IAAI,QAAQ,CACV,uBAAuB,SAAS,eAAe,EAC/C,GAAG,EACH,yBAAyB,CAC1B,CACF,CAAC;YAEJ,IAAI,WAAgC,CAAC;YAErC,IAAI,aAAa,EAAE,QAAQ,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC;gBACnC,MAAM,WAAW,GAAG,cAAc,CAAC,GAAG,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC;gBAC5D,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;oBAC9B,OAAO,IAAI,CAAC,IAAI,QAAQ,CAAC,WAAW,aAAa,WAAW,EAAE,GAAG,CAAC,CAAC,CAAC;gBACtE,CAAC;gBACD,WAAW,GAAG,uBAAuB,CAAC,aAAa,EAAE,WAAW,CAAC,CAAC;YACpE,CAAC;iBAAM,CAAC;gBACN,WAAW,GAAG,EAAE,CAAC,aAAa,CAAC,EAAE,aAAa,EAAE,CAAC;YACnD,CAAC;YAED,MAAM,IAAI,GAAG,CAAC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC,OAAO,CAC/C,WAAW,EACX,GAAG,CAAC,kBAAkB,IAAI,EAAE,CAC7B,CAAwB,CAAC;YAE1B,IACE,CAAC,IAAI;gBACL,CAAC,CAAC,MAAM,WAAW,CAAC,iBAAiB,CAAC,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,EAC/D,CAAC;gBACD,OAAO,IAAI,CACT,IAAI,QAAQ,CACV,aAAa,SAAS,cAAc,EACpC,GAAG,EACH,sBAAsB,CACvB,CACF,CAAC;YACJ,CAAC;YAED,MAAM,KAAK,GAAG,WAAW,CAAC,YAAY,CAAC,IAAI,CAAC,EAAG,CAAC,CAAC;YACjD,MAAM,aAAa,GAAG,WAAW,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC;YAE3D,IACE,WAAW,EAAE,KAAK,EAAE,sBAAsB,KAAK,eAAe;gBAC9D,WAAW,EAAE,KAAK,EAAE,sBAAsB,KAAK,MAAM;gBACrD,CAAC,WAAW,EAAE,KAAK,EAAE,sBAAsB,EAC3C,CAAC;gBACD,GAAG,CAAC,YAAY,GAAG,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC;gBAC1C,GAAG,CAAC,MAAM,CAAC,IAAI,GAAG,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC;YAC3C,CAAC;YAED,IACE,WAAW,EAAE,KAAK,EAAE,sBAAsB,KAAK,aAAa;gBAC5D,WAAW,EAAE,KAAK,EAAE,sBAAsB,KAAK,MAAM;gBACrD,CAAC,WAAW,EAAE,KAAK,EAAE,sBAAsB;gBAE3C,GAAG,CAAC,MAAM,CAAC,oBAAoB,EAAE,KAAK,EAAE,aAAa,CAAC,CAAC;YAEzD,GAAG,CAAC,WAAW,GAAG,KAAK,CAAC;YAExB,IAAI,eAAe,CAAC,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,KAAK,EAAE,CAAC;gBACpD,GAAW,CAAC,YAAY,GAAG,GAAG,CAAC,YAAY,CAAC;gBAC7C,GAAG,CAAC,cAAc,GAAG,EAAE,IAAI,EAAE,CAAC;gBAC9B,GAAG,CAAC,MAAM,CAAC,UAAU,GAAG,EAAE,IAAI,EAAE,CAAC;gBAChC,GAAW,CAAC,cAAc,GAAG,GAAG,CAAC;gBAClC,GAAG,CAAC,cAAc,GAAG,GAAG,CAAC;gBACzB,GAAG,CAAC,MAAM,CAAC,MAAM,GAAG,GAAG,CAAC;gBACxB,OAAO,IAAI,EAAE,CAAC;YAChB,CAAC;YAED,IACE,WAAW,EAAE,KAAK,EAAE,sBAAsB,KAAK,eAAe;gBAC9D,WAAW,EAAE,KAAK,EAAE,sBAAsB,KAAK,MAAM;gBACrD,CAAC,WAAW,EAAE,KAAK,EAAE,sBAAsB,EAC3C,CAAC;gBACD,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;YACzC,CAAC;iBAAM,IACL,WAAW,EAAE,KAAK,EAAE,sBAAsB,KAAK,aAAa;gBAC5D,WAAW,EAAE,KAAK,EAAE,sBAAsB,KAAK,MAAM;gBACrD,CAAC,WAAW,EAAE,KAAK,EAAE,sBAAsB;gBAE3C,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;QAC3B,CAAC,CACF,CAAC;QAKF,WAAM,GAAG,UAAU,CACjB,KAAK,EAAE,GAAiB,EAAE,GAAkB,EAAE,IAAuB,EAAE,EAAE;YACvE,MAAM,IAAI,GAAG,CAAC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC,SAAS,CACjD,GAAG,CAAC,IAAI,EACR,GAAG,CAAC,kBAAkB,IAAI,EAAE,CAC7B,CAAwB,CAAC;YAE1B,IAAI,eAAe,CAAC,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC;gBACrD,GAAW,CAAC,YAAY,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;gBAC3C,GAAG,CAAC,YAAY,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;gBAClC,GAAG,CAAC,MAAM,CAAC,IAAI,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;gBAChC,GAAW,CAAC,cAAc,GAAG,GAAG,CAAC;gBAClC,GAAG,CAAC,cAAc,GAAG,GAAG,CAAC;gBACzB,GAAG,CAAC,MAAM,CAAC,MAAM,GAAG,GAAG,CAAC;gBACxB,OAAO,IAAI,EAAE,CAAC;YAChB,CAAC;YAED,MAAM,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE;gBACrD,OAAO,IAAI,CAAC,GAAiB,CAAC,CAAC;YACjC,CAAC,CAAC,CAAC;YAEH,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;QACvC,CAAC,CACF,CAAC;QAKF,aAAQ,GAAG,UAAU,CACnB,KAAK,EAAE,GAAiB,EAAE,GAAkB,EAAE,IAAuB,EAAE,EAAE;YACvE,MAAM,MAAM,GAAG,GAAG,CAAC,IAAK,CAAC,EAAE,CAAC;YAE5B,MAAM,WAAW,GAAG,CAAC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC,SAAS,CACxD,EAAE,EAAE,EAAE,MAAM,EAAE,EACd,EAAE,oBAAoB,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE,EAClD,GAAG,CAAC,kBAAkB,IAAI,EAAE,CAC7B,CAAwB,CAAC;YAE1B,IAAI,eAAe,CAAC,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC,EAAE,KAAK,EAAE,CAAC;gBACvD,GAAW,CAAC,YAAY,GAAG,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC;gBAClD,GAAG,CAAC,YAAY,GAAG,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC;gBACzC,GAAG,CAAC,MAAM,CAAC,IAAI,GAAG,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC;gBACvC,GAAW,CAAC,cAAc,GAAG,GAAG,CAAC;gBAClC,GAAG,CAAC,cAAc,GAAG,GAAG,CAAC;gBACzB,GAAG,CAAC,MAAM,CAAC,MAAM,GAAG,GAAG,CAAC;gBACxB,OAAO,IAAI,EAAE,CAAC;YAChB,CAAC;YAED,MAAM,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE;gBACrD,OAAO,WAAW,CAAC,GAAiB,CAAC,CAAC;YACxC,CAAC,CAAC,CAAC;YAEH,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,8BAA8B,EAAE,CAAC,CAAC;QACpE,CAAC,CACF,CAAC;QAKF,mBAAc,GAAG,UAAU,CACzB,KAAK,EAAE,GAAiB,EAAE,GAAkB,EAAE,IAAuB,EAAE,EAAE;YACvE,MAAM,EAAE,eAAe,EAAE,WAAW,EAAE,GAAG,GAAG,CAAC,IAAI,CAAC;YAElD,IAAI,CAAC,eAAe,IAAI,CAAC,WAAW;gBAClC,OAAO,IAAI,CACT,IAAI,QAAQ,CACV,8CAA8C,EAC9C,GAAG,EACH,2BAA2B,CAC5B,CACF,CAAC;YAEJ,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;YAEtB,IAAI,CAAC,IAAI,IAAI,IAAI,EAAE,QAAQ,KAAK,KAAK,IAAI,IAAI,EAAE,oBAAoB;gBACjE,OAAO,IAAI,CAAC,IAAI,QAAQ,CAAC,iBAAiB,EAAE,GAAG,CAAC,CAAC,CAAC;YAEpD,MAAM,iBAAiB,GAAG,MAAM,WAAW,CAAC,iBAAiB,CAC3D,MAAM,CAAC,eAAe,CAAC,EACvB,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CACtB,CAAC;YAEF,MAAM,OAAO,GAAG,cAAc,EAAE,CAAC;YACjC,MAAM,eAAe,GAAG,OAAO,EAAE,cAAc,CAAC;YAEhD,IAAI,CAAC,iBAAiB;gBACpB,OAAO,IAAI,CACT,IAAI,QAAQ,CACV,+BAA+B,EAC/B,GAAG,EACH,0BAA0B,CAC3B,CACF,CAAC;YAEJ,IACE,CAAC,WAAW,CAAC,gBAAgB,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;gBAClD,CAAC,OAAO,EAAE,UAAU,EACpB,CAAC;gBACD,OAAO,IAAI,CACT,IAAI,QAAQ,CACV,eAAe,EAAE,kBAAkB,EAAE,OAAO;oBAC1C,mGAAmG,EACrG,GAAG,EACH,iCAAiC,CAClC,CACF,CAAC;YACJ,CAAC;YAED,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC,SAAS,CACnC,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,EACf;gBACE,QAAQ,EAAE,MAAM,WAAW,CAAC,YAAY,CAAC,WAAW,CAAC;gBACrD,iBAAiB,EAAE,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,WAAW,EAAE;aACtD,CACF,CAAC;YAEF,MAAM,KAAK,GAAG,WAAW,CAAC,YAAY,CAAC,IAAI,CAAC,EAAG,CAAC,CAAC;YACjD,MAAM,aAAa,GAAG,WAAW,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC;YAC3D,MAAM,WAAW,GAAG,cAAc,EAAE,EAAE,cAAc,CAAC;YAErD,MAAM,YAAY,GAA2B;gBAC3C,MAAM,EAAE,SAAS;gBACjB,OAAO,EAAE,gCAAgC;aAC1C,CAAC;YAEF,IACE,WAAW,EAAE,KAAK,EAAE,sBAAsB,KAAK,eAAe;gBAC9D,WAAW,EAAE,KAAK,EAAE,sBAAsB,KAAK,MAAM;gBACrD,CAAC,WAAW,EAAE,KAAK,EAAE,sBAAsB,EAC3C,CAAC;gBACD,YAAY,CAAC,WAAW,GAAG,KAAK,CAAC;YACnC,CAAC;YAED,IACE,WAAW,EAAE,KAAK,EAAE,sBAAsB,KAAK,aAAa;gBAC5D,WAAW,EAAE,KAAK,EAAE,sBAAsB,KAAK,MAAM;gBACrD,CAAC,WAAW,EAAE,KAAK,EAAE,sBAAsB;gBAE3C,GAAG,CAAC,MAAM,CAAC,oBAAoB,EAAE,KAAK,EAAE,aAAa,CAAC,CAAC;YAEzD,GAAG,CAAC,WAAW,GAAG,KAAK,CAAC;YAExB,IAAI,eAAe,CAAC,QAAQ,CAAC,MAAM,EAAE,gBAAgB,CAAC,EAAE,KAAK,EAAE,CAAC;gBAC7D,GAAW,CAAC,YAAY,GAAG,YAAY,CAAC;gBACzC,GAAG,CAAC,cAAc,GAAG,EAAE,IAAI,EAAE,CAAC;gBAC9B,GAAG,CAAC,YAAY,GAAG,YAAY,CAAC;gBAChC,GAAG,CAAC,MAAM,CAAC,IAAI,GAAG,YAAY,CAAC;gBAC9B,GAAW,CAAC,cAAc,GAAG,GAAG,CAAC;gBAClC,GAAG,CAAC,cAAc,GAAG,GAAG,CAAC;gBACzB,GAAG,CAAC,MAAM,CAAC,MAAM,GAAG,GAAG,CAAC;gBACxB,OAAO,IAAI,EAAE,CAAC;YAChB,CAAC;YAED,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QACrC,CAAC,CACF,CAAC;QAEF,uBAAkB,GAAG,UAAU,CAC7B,KAAK,EAAE,CAAe,EAAE,GAAkB,EAAE,EAAE;YAC5C,MAAM,WAAW,GAAG,cAAc,EAAE,CAAC;YACrC,MAAM,WAAW,GAAG,iBAAiB,CAAC,MAAM,EAAE,EAAE,GAAG,CAAC,CAAC,UAAU,EAAE,EAAE;gBACjE,IAAI,WAAW,EAAE,cAAc,EAAE,IAAI,KAAK,SAAS;oBACjD,OAAQ,UAAkB,EAAE,KAAK,CAAC;gBACpC,OAAO,UAAU,CAAC;YACpB,CAAC,CAAC,CAAC;YAEH,GAAG,CAAC,IAAI,CAAC;gBACP,KAAK,EAAE,WAAW,CAAC,MAAM;gBACzB,OAAO,EAAE,WAAW,CAAC,MAAM;gBAC3B,IAAI,EAAE,WAAW;aAClB,CAAC,CAAC;QACL,CAAC,CACF,CAAC;QAEF,sBAAiB,GAAG,UAAU,CAC5B,KAAK,EAAE,GAAiB,EAAE,GAAkB,EAAE,EAAE;YAC9C,MAAM,WAAW,GAAG,cAAc,EAAE,CAAC;YACrC,MAAM,YAAY,GAAG,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC;YAE9C,IAAI,CAAC,YAAY;gBACf,MAAM,IAAI,QAAQ,CAChB,8BAA8B,EAC9B,GAAG,EACH,sBAAsB,CACvB,CAAC;YAEJ,MAAM,WAAW,GAAG,iBAAiB;iBAClC,aAAa,CAAC,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC;gBACxC,EAAE,GAAG,CAAC,CAAC,UAAU,EAAE,EAAE;gBACnB,IAAI,WAAW,EAAE,cAAc,EAAE,IAAI,KAAK,SAAS;oBACjD,OAAQ,UAAkB,EAAE,KAAK,CAAC;gBACpC,OAAO,UAAU,CAAC;YACpB,CAAC,CAAC,CAAC;YAEL,IAAI,CAAC,WAAW;gBACd,MAAM,IAAI,QAAQ,CAChB,qCAAqC,YAAY,EAAE,EACnD,GAAG,EACH,oBAAoB,CACrB,CAAC;YAEJ,GAAG,CAAC,IAAI,CAAC;gBACP,KAAK,EAAE,WAAW,CAAC,MAAM;gBACzB,OAAO,EAAE,WAAW,CAAC,MAAM;gBAC3B,IAAI,EAAE,WAAW;aAClB,CAAC,CAAC;QACL,CAAC,CACF,CAAC;IACJ,CAAC;IApZS,cAAc;QACpB,IAAI,CAAC,IAAI,CAAC,WAAW;YAAE,IAAI,CAAC,WAAW,GAAG,IAAI,kBAAkB,CAAC,MAAM,CAAC,CAAC;QACzE,OAAO,IAAI,CAAC,WAAW,CAAC;IAC1B,CAAC;CAiZF;AAED,MAAM,CAAC,MAAM,cAAc,GAAG,IAAI,cAAc,EAAE,CAAC;AAEnD,eAAe,cAAc,CAAC","sourcesContent":["import catchAsync from \"../error-handler/utils/catch-async\";\nimport AppError from \"../error-handler/utils/app-error\";\nimport { ArkosRequest, ArkosResponse, ArkosNextFunction } from \"../../types\";\nimport authService from \"./auth.service\";\nimport { ArkosPrismaService } from \"../base/base.service\";\nimport { User } from \"../../types\";\nimport { getArkosConfig } from \"../../server\";\nimport {\n createPrismaWhereClause,\n determineUsernameField,\n getNestedValue,\n} from \"./utils/helpers/auth.controller.helpers\";\nimport authActionService from \"./utils/services/auth-action.service\";\nimport { routeHookReader } from \"../../components/arkos-route-hook/reader\";\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 * Authentication controller class handling all auth-related operations\n */\nexport class AuthController {\n private userService?: ArkosPrismaService<\"user\">;\n\n private getUserService() {\n if (!this.userService) this.userService = new ArkosPrismaService(\"user\");\n return this.userService;\n }\n\n /**\n * Retrieves the current authenticated user's information\n */\n getMe = catchAsync(\n async (req: ArkosRequest, res: ArkosResponse, next: ArkosNextFunction) => {\n const user = (await this.getUserService().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 (routeHookReader.getHooks(\"auth\", \"getMe\")?.after) {\n (res as any).originalData = { data: user };\n req.responseData = { data: user };\n res.locals.data = { data: user };\n (res as any).originalStatus = 200;\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 (req: ArkosRequest, res: ArkosResponse, next: ArkosNextFunction) => {\n if (\"password\" in req.body)\n throw new AppError(\n \"In order to update password use the update-password endpoint.\",\n 400,\n \"InvalidFieldPassword\"\n );\n\n const user = (await this.getUserService().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 (routeHookReader.getHooks(\"auth\", \"updateMe\")?.after) {\n (res as any).originalData = { data: user };\n req.responseData = { data: user };\n res.locals.data = { data: user };\n (res as any).originalStatus = 200;\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 (req: ArkosRequest, res: ArkosResponse, next: ArkosNextFunction) => {\n res.cookie(\"arkos_access_token\", \"no-token\", {\n expires: new Date(Date.now() + 10 * 1000),\n httpOnly: true,\n });\n\n if (routeHookReader.getHooks(\"auth\", \"logout\")?.after) {\n (res as any).originalData = null;\n req.responseData = null;\n res.locals.data = null;\n (res as any).originalStatus = 204;\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 */\n login = catchAsync(\n async (req: ArkosRequest, res: ArkosResponse, next: ArkosNextFunction) => {\n const authConfigs = getArkosConfig()?.authentication;\n\n const usernameField = determineUsernameField(req);\n\n const lastField =\n usernameField.split(\".\")[usernameField.split(\".\").length - 1];\n\n const usernameValue = req.body[lastField];\n const { password } = req.body;\n\n if (!usernameValue || !password)\n return next(\n new AppError(\n `Please provide both ${lastField} and password`,\n 400,\n `MissingCredentialFields`\n )\n );\n\n let whereClause: Record<string, any>;\n\n if (usernameField?.includes?.(\".\")) {\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 whereClause = { [usernameField]: usernameValue };\n }\n\n const user = (await this.getUserService().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(\n new AppError(\n `Incorrect ${lastField} or password`,\n 401,\n `IncorrectCredentials`\n )\n );\n }\n\n const token = authService.signJwtToken(user.id!);\n const cookieOptions = authService.getJwtCookieOptions(req);\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 (routeHookReader.getHooks(\"auth\", \"login\")?.after) {\n (res as any).originalData = req.responseData;\n req.additionalData = { user };\n res.locals.additional = { user };\n (res as any).originalStatus = 200;\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\n */\n signup = catchAsync(\n async (req: ArkosRequest, res: ArkosResponse, next: ArkosNextFunction) => {\n const user = (await this.getUserService().createOne(\n req.body,\n req.prismaQueryOptions || {}\n )) as Record<string, any>;\n\n if (routeHookReader.getHooks(\"auth\", \"signup\")?.after) {\n (res as any).originalData = { data: user };\n req.responseData = { data: user };\n res.locals.data = { data: user };\n (res as any).originalStatus = 201;\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 /**\n * Marks user account as self-deleted\n */\n deleteMe = catchAsync(\n async (req: ArkosRequest, res: ArkosResponse, next: ArkosNextFunction) => {\n const userId = req.user!.id;\n\n const updatedUser = (await this.getUserService().updateOne(\n { id: userId },\n { deletedSelfAccountAt: new Date().toISOString() },\n req.prismaQueryOptions || {}\n )) as Record<string, any>;\n\n if (routeHookReader.getHooks(\"auth\", \"deleteMe\")?.after) {\n (res as any).originalData = { data: updatedUser };\n req.responseData = { data: updatedUser };\n res.locals.data = { data: updatedUser };\n (res as any).originalStatus = 200;\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({ message: \"Account deleted successfully\" });\n }\n );\n\n /**\n * Updates the password of the authenticated user\n */\n updatePassword = catchAsync(\n async (req: ArkosRequest, res: ArkosResponse, next: ArkosNextFunction) => {\n const { currentPassword, newPassword } = req.body;\n\n if (!currentPassword || !newPassword)\n return next(\n new AppError(\n \"currentPassword and newPassword are required\",\n 400,\n \"SameCurrentAndNewPassword\"\n )\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 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(\n new AppError(\n \"Current password is incorrect\",\n 400,\n \"IncorrentCurrentPassword\"\n )\n );\n\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 \"PasswordDoesNotMeetRequirements\"\n )\n );\n }\n\n await this.getUserService().updateOne(\n { id: user.id },\n {\n password: await authService.hashPassword(newPassword),\n passwordChangedAt: new Date(Date.now()).toISOString(),\n }\n );\n\n const token = authService.signJwtToken(user.id!);\n const cookieOptions = authService.getJwtCookieOptions(req);\n const authConfigs = getArkosConfig()?.authentication;\n\n const responseData: Record<string, string> = {\n status: \"success\",\n message: \"Password updated successfully!\",\n };\n\n if (\n authConfigs?.login?.sendAccessTokenThrough === \"response-only\" ||\n authConfigs?.login?.sendAccessTokenThrough === \"both\" ||\n !authConfigs?.login?.sendAccessTokenThrough\n ) {\n 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 (routeHookReader.getHooks(\"auth\", \"updatePassword\")?.after) {\n (res as any).originalData = responseData;\n req.additionalData = { user };\n req.responseData = responseData;\n res.locals.data = responseData;\n (res as any).originalStatus = 200;\n req.responseStatus = 200;\n res.locals.status = 200;\n return next();\n }\n\n res.status(200).json(responseData);\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(\n `Please provide a resoureName`,\n 400,\n \"MissiongResourseName\"\n );\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 \"AuthActionNotFound\"\n );\n\n res.json({\n total: authActions.length,\n results: authActions.length,\n data: authActions,\n });\n }\n );\n}\n\nexport const authController = new AuthController();\n\nexport default authController;\n"]}
|
|
@@ -3,112 +3,29 @@ import bcrypt from "bcryptjs";
|
|
|
3
3
|
import catchAsync from "../error-handler/utils/catch-async.js";
|
|
4
4
|
import AppError from "../error-handler/utils/app-error.js";
|
|
5
5
|
import { callNext } from "../base/base.middlewares.js";
|
|
6
|
-
import { getArkosConfig } from "../../server.js";
|
|
7
6
|
import arkosEnv from "../../utils/arkos-env.js";
|
|
8
7
|
import { getPrismaInstance } from "../../utils/helpers/prisma.helpers.js";
|
|
9
8
|
import { toMs } from "./utils/helpers/auth.controller.helpers.js";
|
|
10
9
|
import { invaliAuthTokenError, loginRequiredError, } from "./utils/auth-error-objects.js";
|
|
11
10
|
import authActionService from "./utils/services/auth-action.service.js";
|
|
12
|
-
import { isAuthenticationEnabled, isUsingAuthentication, } from "../../utils/helpers/arkos-config.helpers.js";
|
|
11
|
+
import { getArkosConfig, isAuthenticationEnabled, isUsingAuthentication, } from "../../utils/helpers/arkos-config.helpers.js";
|
|
12
|
+
import { getUserFileExtension } from "../../utils/helpers/fs.helpers.js";
|
|
13
|
+
import { authenticationDocsLinks } from "./utils/docs-links.js";
|
|
14
|
+
import authHookManager from "./utils/auth-hooks-manager.js";
|
|
13
15
|
export class AuthService {
|
|
14
16
|
constructor() {
|
|
15
17
|
this.actionsPerResource = {};
|
|
16
18
|
this.authenticate = catchAsync(async (req, _, next) => {
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
const
|
|
21
|
-
if (
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
return next(onError.error);
|
|
26
|
-
}
|
|
27
|
-
if (!before.skipped) {
|
|
28
|
-
try {
|
|
29
|
-
if (isAuthenticationEnabled()) {
|
|
30
|
-
const user = (await this.getAuthenticatedUser(req));
|
|
31
|
-
if (!user)
|
|
32
|
-
throw loginRequiredError;
|
|
33
|
-
req.user = user;
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
|
-
catch (err) {
|
|
37
|
-
const onError = await this.runErrorHooks(hooks?.onError, err, req);
|
|
38
|
-
if (onError.skipped) {
|
|
39
|
-
const after = await this.runAfterHooks(hooks?.after, req);
|
|
40
|
-
return after.error ? next(after.error) : next();
|
|
41
|
-
}
|
|
42
|
-
return next(onError.error);
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
const after = await this.runAfterHooks(hooks?.after, req);
|
|
46
|
-
if (after.error)
|
|
47
|
-
return next(after.error);
|
|
48
|
-
next();
|
|
19
|
+
await authHookManager.runAuthenticate({ context: req, done: next }, async (req) => {
|
|
20
|
+
if (!isAuthenticationEnabled())
|
|
21
|
+
return null;
|
|
22
|
+
const user = (await this.getAuthenticatedUser(req, req.path.includes("logout") ? "logout" : "default"));
|
|
23
|
+
if (!user)
|
|
24
|
+
throw loginRequiredError;
|
|
25
|
+
return user;
|
|
26
|
+
});
|
|
49
27
|
});
|
|
50
28
|
}
|
|
51
|
-
async runHooks(hooks, req, ctx) {
|
|
52
|
-
if (!hooks)
|
|
53
|
-
return { skipped: false };
|
|
54
|
-
const hookArray = Array.isArray(hooks) ? hooks : [hooks];
|
|
55
|
-
for (const hook of hookArray) {
|
|
56
|
-
let skipCalled = false;
|
|
57
|
-
try {
|
|
58
|
-
await hook({
|
|
59
|
-
req,
|
|
60
|
-
skip: () => {
|
|
61
|
-
skipCalled = true;
|
|
62
|
-
},
|
|
63
|
-
...ctx,
|
|
64
|
-
});
|
|
65
|
-
}
|
|
66
|
-
catch (err) {
|
|
67
|
-
return { skipped: false, error: err };
|
|
68
|
-
}
|
|
69
|
-
if (skipCalled)
|
|
70
|
-
return { skipped: true };
|
|
71
|
-
}
|
|
72
|
-
return { skipped: false };
|
|
73
|
-
}
|
|
74
|
-
async runAfterHooks(hooks, req, ctx) {
|
|
75
|
-
if (!hooks)
|
|
76
|
-
return {};
|
|
77
|
-
const hookArray = Array.isArray(hooks) ? hooks : [hooks];
|
|
78
|
-
for (const hook of hookArray) {
|
|
79
|
-
try {
|
|
80
|
-
await hook({ req, ...ctx });
|
|
81
|
-
}
|
|
82
|
-
catch (err) {
|
|
83
|
-
return { error: err };
|
|
84
|
-
}
|
|
85
|
-
}
|
|
86
|
-
return {};
|
|
87
|
-
}
|
|
88
|
-
async runErrorHooks(hooks, error, req, ctx) {
|
|
89
|
-
if (!hooks)
|
|
90
|
-
return { skipped: false, error };
|
|
91
|
-
const hookArray = Array.isArray(hooks) ? hooks : [hooks];
|
|
92
|
-
for (const hook of hookArray) {
|
|
93
|
-
let skipCalled = false;
|
|
94
|
-
try {
|
|
95
|
-
await hook({
|
|
96
|
-
req,
|
|
97
|
-
error,
|
|
98
|
-
skip: () => {
|
|
99
|
-
skipCalled = true;
|
|
100
|
-
},
|
|
101
|
-
...ctx,
|
|
102
|
-
});
|
|
103
|
-
}
|
|
104
|
-
catch (err) {
|
|
105
|
-
return { skipped: false, error: err };
|
|
106
|
-
}
|
|
107
|
-
if (skipCalled)
|
|
108
|
-
return { skipped: true };
|
|
109
|
-
}
|
|
110
|
-
return { skipped: false, error };
|
|
111
|
-
}
|
|
112
29
|
signJwtToken(id, expiresIn, secret) {
|
|
113
30
|
const { authentication: configs } = getArkosConfig();
|
|
114
31
|
if (process.env.ARKOS_BUILD === "true" &&
|
|
@@ -192,14 +109,22 @@ export class AuthService {
|
|
|
192
109
|
configs?.jwt?.secret ||
|
|
193
110
|
process.env.JWT_SECRET ||
|
|
194
111
|
arkosEnv.JWT_SECRET;
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
112
|
+
try {
|
|
113
|
+
const decoded = (await new Promise((resolve, reject) => {
|
|
114
|
+
jwt.verify(token, secret, (err, decoded) => {
|
|
115
|
+
if (err)
|
|
116
|
+
reject(err);
|
|
117
|
+
else
|
|
118
|
+
resolve(decoded);
|
|
119
|
+
});
|
|
120
|
+
}));
|
|
121
|
+
if (!decoded?.id)
|
|
122
|
+
throw invaliAuthTokenError;
|
|
123
|
+
return decoded;
|
|
124
|
+
}
|
|
125
|
+
catch (err) {
|
|
126
|
+
throw invaliAuthTokenError;
|
|
127
|
+
}
|
|
203
128
|
}
|
|
204
129
|
isWildcardAccess(config) {
|
|
205
130
|
return config === "*";
|
|
@@ -238,23 +163,31 @@ export class AuthService {
|
|
|
238
163
|
}
|
|
239
164
|
async checkDynamicAccessControl(userId, action, resource) {
|
|
240
165
|
const prisma = getPrismaInstance();
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
166
|
+
const [userPermission, hasRolePermission] = await Promise.all([
|
|
167
|
+
prisma.userPermission
|
|
168
|
+
? prisma.userPermission.findFirst({
|
|
169
|
+
where: { userId, permission: { resource, action } },
|
|
170
|
+
select: { effect: true },
|
|
171
|
+
})
|
|
172
|
+
: Promise.resolve(null),
|
|
173
|
+
prisma.userRole.findFirst({
|
|
174
|
+
where: {
|
|
175
|
+
userId,
|
|
176
|
+
role: {
|
|
177
|
+
permissions: {
|
|
178
|
+
some: { resource, action },
|
|
249
179
|
},
|
|
250
180
|
},
|
|
251
181
|
},
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
182
|
+
select: { id: true },
|
|
183
|
+
}),
|
|
184
|
+
]);
|
|
185
|
+
if (userPermission)
|
|
186
|
+
return userPermission.effect === "Allow";
|
|
187
|
+
return !!hasRolePermission;
|
|
255
188
|
}
|
|
256
189
|
handleAccessControl(action, resource, accessControl) {
|
|
257
|
-
authActionService.add(action, resource, accessControl);
|
|
190
|
+
const authAction = authActionService.add(action, resource, accessControl);
|
|
258
191
|
return catchAsync(async (req, _, next) => {
|
|
259
192
|
if (req.user) {
|
|
260
193
|
const user = req.user;
|
|
@@ -263,7 +196,7 @@ export class AuthService {
|
|
|
263
196
|
next();
|
|
264
197
|
return;
|
|
265
198
|
}
|
|
266
|
-
const notEnoughPermissionsError = new AppError(
|
|
199
|
+
const notEnoughPermissionsError = new AppError(authAction.errorMessage, 403, "NotEnoughPermissions");
|
|
267
200
|
if (configs?.authentication?.mode === "dynamic") {
|
|
268
201
|
const hasPermission = await this.checkDynamicAccessControl(user.id, action, resource);
|
|
269
202
|
if (!hasPermission)
|
|
@@ -280,108 +213,54 @@ export class AuthService {
|
|
|
280
213
|
next();
|
|
281
214
|
});
|
|
282
215
|
}
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
throw Error("ValidationError: Trying to call AuthService.getAuthenticatedUser without setting up authentication");
|
|
286
|
-
const prisma = getPrismaInstance();
|
|
287
|
-
let token;
|
|
216
|
+
extractRequestToken(req, cookie = "arkos_access_token") {
|
|
217
|
+
let token = null;
|
|
288
218
|
if (req?.headers?.authorization &&
|
|
289
219
|
req?.headers?.authorization.startsWith("Bearer") &&
|
|
290
220
|
req?.headers?.authorization.split?.(" ")?.[1])
|
|
291
221
|
token = req?.headers?.authorization.split(" ")[1];
|
|
292
222
|
if (!token &&
|
|
293
223
|
req?.cookies?.arkos_access_token !== "no-token" &&
|
|
294
|
-
req.cookies)
|
|
295
|
-
token = req?.cookies?.
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
throw invaliAuthTokenError;
|
|
305
|
-
}
|
|
306
|
-
if (!decoded?.id)
|
|
307
|
-
throw invaliAuthTokenError;
|
|
224
|
+
req.cookies)
|
|
225
|
+
token = req?.cookies?.[cookie];
|
|
226
|
+
return token;
|
|
227
|
+
}
|
|
228
|
+
extractSocketToken(socket, key = "token") {
|
|
229
|
+
return (socket.handshake.auth?.[key] ||
|
|
230
|
+
socket.handshake.headers?.authorization?.replace("Bearer ", ""));
|
|
231
|
+
}
|
|
232
|
+
async validateDecodedUser(decoded, action = "default") {
|
|
233
|
+
const prisma = getPrismaInstance();
|
|
308
234
|
const user = await prisma.user.findUnique({
|
|
309
|
-
where: { id:
|
|
235
|
+
where: { id: decoded.id },
|
|
310
236
|
});
|
|
311
237
|
if (!user)
|
|
312
|
-
throw new AppError("The user belonging to this token
|
|
313
|
-
if (
|
|
314
|
-
|
|
238
|
+
throw new AppError("The user belonging to this token no longer exists", 401, "UserNoLongerExists");
|
|
239
|
+
if (action !== "logout" &&
|
|
240
|
+
this.userChangedPasswordAfter(user, decoded.iat))
|
|
315
241
|
throw new AppError("User recently changed password! Please log in again.", 401, "PasswordChanged");
|
|
316
|
-
req.accessToken = token;
|
|
317
242
|
return user;
|
|
318
243
|
}
|
|
244
|
+
async getAuthenticatedUser(ctx, action = "default") {
|
|
245
|
+
if (!isAuthenticationEnabled())
|
|
246
|
+
throw Error(`Trying to call authService.getAuthenticatedUser without setting up authentication in arkos.config.${getUserFileExtension()}, see ${authenticationDocsLinks.setup}`);
|
|
247
|
+
let token = null;
|
|
248
|
+
if ("headers" in ctx)
|
|
249
|
+
token = this.extractRequestToken(ctx);
|
|
250
|
+
else if ("join" in ctx)
|
|
251
|
+
token = this.extractSocketToken(ctx);
|
|
252
|
+
if (!token)
|
|
253
|
+
return null;
|
|
254
|
+
const decoded = await this.verifyJwtToken(token);
|
|
255
|
+
ctx.accessToken = token;
|
|
256
|
+
return this.validateDecodedUser(decoded, action);
|
|
257
|
+
}
|
|
319
258
|
authorize(action, resource, rule) {
|
|
320
|
-
authActionService.add(action, resource, {
|
|
259
|
+
const authAction = authActionService.add(action, resource, {
|
|
260
|
+
[action]: rule,
|
|
261
|
+
});
|
|
321
262
|
return catchAsync(async (req, _, next) => {
|
|
322
|
-
|
|
323
|
-
const before = await this.runHooks(hooks?.before, req, {
|
|
324
|
-
action,
|
|
325
|
-
resource,
|
|
326
|
-
rule,
|
|
327
|
-
});
|
|
328
|
-
if (before.error) {
|
|
329
|
-
const onError = await this.runErrorHooks(hooks?.onError, before.error, req, { action, resource, rule });
|
|
330
|
-
if (onError.skipped) {
|
|
331
|
-
const after = await this.runAfterHooks(hooks?.after, req, {
|
|
332
|
-
action,
|
|
333
|
-
resource,
|
|
334
|
-
rule,
|
|
335
|
-
});
|
|
336
|
-
return after.error ? next(after.error) : next();
|
|
337
|
-
}
|
|
338
|
-
return next(onError.error);
|
|
339
|
-
}
|
|
340
|
-
if (!before.skipped) {
|
|
341
|
-
try {
|
|
342
|
-
if (req.user) {
|
|
343
|
-
const user = req.user;
|
|
344
|
-
const configs = getArkosConfig();
|
|
345
|
-
if (!user.isSuperUser) {
|
|
346
|
-
const notEnoughPermissionsError = new AppError("You do not have permission to perform this action", 403, "NotEnoughPermissions");
|
|
347
|
-
if (configs?.authentication?.mode === "dynamic") {
|
|
348
|
-
const hasPermission = await this.checkDynamicAccessControl(user.id, action, resource);
|
|
349
|
-
if (!hasPermission)
|
|
350
|
-
throw notEnoughPermissionsError;
|
|
351
|
-
}
|
|
352
|
-
else if (configs?.authentication?.mode === "static") {
|
|
353
|
-
const hasPermission = this.checkStaticAccessControl(user, action, { [action]: rule });
|
|
354
|
-
if (!hasPermission)
|
|
355
|
-
throw notEnoughPermissionsError;
|
|
356
|
-
}
|
|
357
|
-
}
|
|
358
|
-
}
|
|
359
|
-
}
|
|
360
|
-
catch (err) {
|
|
361
|
-
const onError = await this.runErrorHooks(hooks?.onError, err, req, {
|
|
362
|
-
action,
|
|
363
|
-
resource,
|
|
364
|
-
rule,
|
|
365
|
-
});
|
|
366
|
-
if (onError.skipped) {
|
|
367
|
-
const after = await this.runAfterHooks(hooks?.after, req, {
|
|
368
|
-
action,
|
|
369
|
-
resource,
|
|
370
|
-
rule,
|
|
371
|
-
});
|
|
372
|
-
return after.error ? next(after.error) : next();
|
|
373
|
-
}
|
|
374
|
-
return next(onError.error);
|
|
375
|
-
}
|
|
376
|
-
}
|
|
377
|
-
const after = await this.runAfterHooks(hooks?.after, req, {
|
|
378
|
-
action,
|
|
379
|
-
resource,
|
|
380
|
-
rule,
|
|
381
|
-
});
|
|
382
|
-
if (after.error)
|
|
383
|
-
return next(after.error);
|
|
384
|
-
next();
|
|
263
|
+
await authHookManager.runAuthorize({ context: req, done: next }, authAction);
|
|
385
264
|
});
|
|
386
265
|
}
|
|
387
266
|
handleAuthenticationControl(action, authenticationControl) {
|