@intlayer/backend 3.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +202 -0
- package/dist/cjs/controllers/dictionary.controller.cjs +356 -0
- package/dist/cjs/controllers/dictionary.controller.cjs.map +1 -0
- package/dist/cjs/controllers/oAuth2.controller.cjs +46 -0
- package/dist/cjs/controllers/oAuth2.controller.cjs.map +1 -0
- package/dist/cjs/controllers/organization.controller.cjs +354 -0
- package/dist/cjs/controllers/organization.controller.cjs.map +1 -0
- package/dist/cjs/controllers/project.controller.cjs +298 -0
- package/dist/cjs/controllers/project.controller.cjs.map +1 -0
- package/dist/cjs/controllers/projectAccessKey.controller.cjs +134 -0
- package/dist/cjs/controllers/projectAccessKey.controller.cjs.map +1 -0
- package/dist/cjs/controllers/sessionAuth.controller.cjs +616 -0
- package/dist/cjs/controllers/sessionAuth.controller.cjs.map +1 -0
- package/dist/cjs/controllers/user.controller.cjs +197 -0
- package/dist/cjs/controllers/user.controller.cjs.map +1 -0
- package/dist/cjs/emails/InviteUserEmail.cjs +297 -0
- package/dist/cjs/emails/InviteUserEmail.cjs.map +1 -0
- package/dist/cjs/emails/PasswordChangeConfirmation.cjs +148 -0
- package/dist/cjs/emails/PasswordChangeConfirmation.cjs.map +1 -0
- package/dist/cjs/emails/ResetUserPassword.cjs +209 -0
- package/dist/cjs/emails/ResetUserPassword.cjs.map +1 -0
- package/dist/cjs/emails/ValidateUserEmail.cjs +230 -0
- package/dist/cjs/emails/ValidateUserEmail.cjs.map +1 -0
- package/dist/cjs/emails/Welcome.cjs +185 -0
- package/dist/cjs/emails/Welcome.cjs.map +1 -0
- package/dist/cjs/emails/index.cjs +31 -0
- package/dist/cjs/emails/index.cjs.map +1 -0
- package/dist/cjs/export.cjs +46 -0
- package/dist/cjs/export.cjs.map +1 -0
- package/dist/cjs/index.cjs +122 -0
- package/dist/cjs/index.cjs.map +1 -0
- package/dist/cjs/logger/index.cjs +53 -0
- package/dist/cjs/logger/index.cjs.map +1 -0
- package/dist/cjs/middlewares/admin.middleware.cjs +44 -0
- package/dist/cjs/middlewares/admin.middleware.cjs.map +1 -0
- package/dist/cjs/middlewares/oAuth2.middleware.cjs +89 -0
- package/dist/cjs/middlewares/oAuth2.middleware.cjs.map +1 -0
- package/dist/cjs/middlewares/request.middleware.cjs +41 -0
- package/dist/cjs/middlewares/request.middleware.cjs.map +1 -0
- package/dist/cjs/middlewares/sessionAuth.middleware.cjs +130 -0
- package/dist/cjs/middlewares/sessionAuth.middleware.cjs.map +1 -0
- package/dist/cjs/models/dictionary.model.cjs +34 -0
- package/dist/cjs/models/dictionary.model.cjs.map +1 -0
- package/dist/cjs/models/oAuth2.model.cjs +31 -0
- package/dist/cjs/models/oAuth2.model.cjs.map +1 -0
- package/dist/cjs/models/organization.model.cjs +34 -0
- package/dist/cjs/models/organization.model.cjs.map +1 -0
- package/dist/cjs/models/project.model.cjs +31 -0
- package/dist/cjs/models/project.model.cjs.map +1 -0
- package/dist/cjs/models/user.model.cjs +31 -0
- package/dist/cjs/models/user.model.cjs.map +1 -0
- package/dist/cjs/routes/dictionary.routes.cjs +156 -0
- package/dist/cjs/routes/dictionary.routes.cjs.map +1 -0
- package/dist/cjs/routes/organization.routes.cjs +132 -0
- package/dist/cjs/routes/organization.routes.cjs.map +1 -0
- package/dist/cjs/routes/project.routes.cjs +175 -0
- package/dist/cjs/routes/project.routes.cjs.map +1 -0
- package/dist/cjs/routes/sessionAuth.routes.cjs +147 -0
- package/dist/cjs/routes/sessionAuth.routes.cjs.map +1 -0
- package/dist/cjs/routes/user.routes.cjs +96 -0
- package/dist/cjs/routes/user.routes.cjs.map +1 -0
- package/dist/cjs/schemas/dictionary.schema.cjs +69 -0
- package/dist/cjs/schemas/dictionary.schema.cjs.map +1 -0
- package/dist/cjs/schemas/oAuth2.schema.cjs +55 -0
- package/dist/cjs/schemas/oAuth2.schema.cjs.map +1 -0
- package/dist/cjs/schemas/organization.schema.cjs +60 -0
- package/dist/cjs/schemas/organization.schema.cjs.map +1 -0
- package/dist/cjs/schemas/project.schema.cjs +79 -0
- package/dist/cjs/schemas/project.schema.cjs.map +1 -0
- package/dist/cjs/schemas/user.schema.cjs +112 -0
- package/dist/cjs/schemas/user.schema.cjs.map +1 -0
- package/dist/cjs/services/dictionary.service.cjs +166 -0
- package/dist/cjs/services/dictionary.service.cjs.map +1 -0
- package/dist/cjs/services/email.service.cjs +118 -0
- package/dist/cjs/services/email.service.cjs.map +1 -0
- package/dist/cjs/services/oAuth2.service.cjs +182 -0
- package/dist/cjs/services/oAuth2.service.cjs.map +1 -0
- package/dist/cjs/services/organization.service.cjs +95 -0
- package/dist/cjs/services/organization.service.cjs.map +1 -0
- package/dist/cjs/services/project.service.cjs +87 -0
- package/dist/cjs/services/project.service.cjs.map +1 -0
- package/dist/cjs/services/projectAccessKey.service.cjs +139 -0
- package/dist/cjs/services/projectAccessKey.service.cjs.map +1 -0
- package/dist/cjs/services/sessionAuth.service.cjs +386 -0
- package/dist/cjs/services/sessionAuth.service.cjs.map +1 -0
- package/dist/cjs/services/user.service.cjs +155 -0
- package/dist/cjs/services/user.service.cjs.map +1 -0
- package/dist/cjs/types/Routes.cjs +17 -0
- package/dist/cjs/types/Routes.cjs.map +1 -0
- package/dist/cjs/types/dictionary.types.cjs +17 -0
- package/dist/cjs/types/dictionary.types.cjs.map +1 -0
- package/dist/cjs/types/organization.types.cjs +17 -0
- package/dist/cjs/types/organization.types.cjs.map +1 -0
- package/dist/cjs/types/project.types.cjs +17 -0
- package/dist/cjs/types/project.types.cjs.map +1 -0
- package/dist/cjs/types/session.types.cjs +17 -0
- package/dist/cjs/types/session.types.cjs.map +1 -0
- package/dist/cjs/types/user.types.cjs +17 -0
- package/dist/cjs/types/user.types.cjs.map +1 -0
- package/dist/cjs/utils/CSRF.cjs +47 -0
- package/dist/cjs/utils/CSRF.cjs.map +1 -0
- package/dist/cjs/utils/accessControl.cjs +121 -0
- package/dist/cjs/utils/accessControl.cjs.map +1 -0
- package/dist/cjs/utils/cookies.cjs +59 -0
- package/dist/cjs/utils/cookies.cjs.map +1 -0
- package/dist/cjs/utils/errors/ErrorHandler.cjs +103 -0
- package/dist/cjs/utils/errors/ErrorHandler.cjs.map +1 -0
- package/dist/cjs/utils/errors/ErrorsClass.cjs +65 -0
- package/dist/cjs/utils/errors/ErrorsClass.cjs.map +1 -0
- package/dist/cjs/utils/errors/errorCodes.cjs +837 -0
- package/dist/cjs/utils/errors/errorCodes.cjs.map +1 -0
- package/dist/cjs/utils/errors/index.cjs +37 -0
- package/dist/cjs/utils/errors/index.cjs.map +1 -0
- package/dist/cjs/utils/filtersAndPagination/getDictionaryFiltersAndPagination.cjs +55 -0
- package/dist/cjs/utils/filtersAndPagination/getDictionaryFiltersAndPagination.cjs.map +1 -0
- package/dist/cjs/utils/filtersAndPagination/getFiltersAndPaginationFromBody.cjs +65 -0
- package/dist/cjs/utils/filtersAndPagination/getFiltersAndPaginationFromBody.cjs.map +1 -0
- package/dist/cjs/utils/filtersAndPagination/getOrganizationFiltersAndPagination.cjs +55 -0
- package/dist/cjs/utils/filtersAndPagination/getOrganizationFiltersAndPagination.cjs.map +1 -0
- package/dist/cjs/utils/filtersAndPagination/getProjectFiltersAndPagination.cjs +58 -0
- package/dist/cjs/utils/filtersAndPagination/getProjectFiltersAndPagination.cjs.map +1 -0
- package/dist/cjs/utils/filtersAndPagination/getUserFiltersAndPagination.cjs +52 -0
- package/dist/cjs/utils/filtersAndPagination/getUserFiltersAndPagination.cjs.map +1 -0
- package/dist/cjs/utils/httpStatusCodes.cjs +93 -0
- package/dist/cjs/utils/httpStatusCodes.cjs.map +1 -0
- package/dist/cjs/utils/mapper/dictionary.cjs +40 -0
- package/dist/cjs/utils/mapper/dictionary.cjs.map +1 -0
- package/dist/cjs/utils/mapper/organization.cjs +39 -0
- package/dist/cjs/utils/mapper/organization.cjs.map +1 -0
- package/dist/cjs/utils/mapper/project.cjs +39 -0
- package/dist/cjs/utils/mapper/project.cjs.map +1 -0
- package/dist/cjs/utils/mapper/user.cjs +39 -0
- package/dist/cjs/utils/mapper/user.cjs.map +1 -0
- package/dist/cjs/utils/mongoDB/connectDB.cjs +53 -0
- package/dist/cjs/utils/mongoDB/connectDB.cjs.map +1 -0
- package/dist/cjs/utils/oAuth2.cjs +50 -0
- package/dist/cjs/utils/oAuth2.cjs.map +1 -0
- package/dist/cjs/utils/responseData.cjs +66 -0
- package/dist/cjs/utils/responseData.cjs.map +1 -0
- package/dist/cjs/utils/validation/validateArray.cjs +57 -0
- package/dist/cjs/utils/validation/validateArray.cjs.map +1 -0
- package/dist/cjs/utils/validation/validateDictionary.cjs +66 -0
- package/dist/cjs/utils/validation/validateDictionary.cjs.map +1 -0
- package/dist/cjs/utils/validation/validateEmail.cjs +37 -0
- package/dist/cjs/utils/validation/validateEmail.cjs.map +1 -0
- package/dist/cjs/utils/validation/validateOrganization.cjs +79 -0
- package/dist/cjs/utils/validation/validateOrganization.cjs.map +1 -0
- package/dist/cjs/utils/validation/validatePhone.cjs +37 -0
- package/dist/cjs/utils/validation/validatePhone.cjs.map +1 -0
- package/dist/cjs/utils/validation/validateProject.cjs +97 -0
- package/dist/cjs/utils/validation/validateProject.cjs.map +1 -0
- package/dist/cjs/utils/validation/validateString.cjs +39 -0
- package/dist/cjs/utils/validation/validateString.cjs.map +1 -0
- package/dist/cjs/utils/validation/validateUser.cjs +73 -0
- package/dist/cjs/utils/validation/validateUser.cjs.map +1 -0
- package/dist/esm/controllers/dictionary.controller.mjs +321 -0
- package/dist/esm/controllers/dictionary.controller.mjs.map +1 -0
- package/dist/esm/controllers/oAuth2.controller.mjs +25 -0
- package/dist/esm/controllers/oAuth2.controller.mjs.map +1 -0
- package/dist/esm/controllers/organization.controller.mjs +317 -0
- package/dist/esm/controllers/organization.controller.mjs.map +1 -0
- package/dist/esm/controllers/project.controller.mjs +263 -0
- package/dist/esm/controllers/project.controller.mjs.map +1 -0
- package/dist/esm/controllers/projectAccessKey.controller.mjs +98 -0
- package/dist/esm/controllers/projectAccessKey.controller.mjs.map +1 -0
- package/dist/esm/controllers/sessionAuth.controller.mjs +570 -0
- package/dist/esm/controllers/sessionAuth.controller.mjs.map +1 -0
- package/dist/esm/controllers/user.controller.mjs +160 -0
- package/dist/esm/controllers/user.controller.mjs.map +1 -0
- package/dist/esm/emails/InviteUserEmail.mjs +285 -0
- package/dist/esm/emails/InviteUserEmail.mjs.map +1 -0
- package/dist/esm/emails/PasswordChangeConfirmation.mjs +134 -0
- package/dist/esm/emails/PasswordChangeConfirmation.mjs.map +1 -0
- package/dist/esm/emails/ResetUserPassword.mjs +197 -0
- package/dist/esm/emails/ResetUserPassword.mjs.map +1 -0
- package/dist/esm/emails/ValidateUserEmail.mjs +218 -0
- package/dist/esm/emails/ValidateUserEmail.mjs.map +1 -0
- package/dist/esm/emails/Welcome.mjs +173 -0
- package/dist/esm/emails/Welcome.mjs.map +1 -0
- package/dist/esm/emails/index.mjs +6 -0
- package/dist/esm/emails/index.mjs.map +1 -0
- package/dist/esm/export.mjs +15 -0
- package/dist/esm/export.mjs.map +1 -0
- package/dist/esm/index.mjs +102 -0
- package/dist/esm/index.mjs.map +1 -0
- package/dist/esm/logger/index.mjs +29 -0
- package/dist/esm/logger/index.mjs.map +1 -0
- package/dist/esm/middlewares/admin.middleware.mjs +20 -0
- package/dist/esm/middlewares/admin.middleware.mjs.map +1 -0
- package/dist/esm/middlewares/oAuth2.middleware.mjs +57 -0
- package/dist/esm/middlewares/oAuth2.middleware.mjs.map +1 -0
- package/dist/esm/middlewares/request.middleware.mjs +17 -0
- package/dist/esm/middlewares/request.middleware.mjs.map +1 -0
- package/dist/esm/middlewares/sessionAuth.middleware.mjs +96 -0
- package/dist/esm/middlewares/sessionAuth.middleware.mjs.map +1 -0
- package/dist/esm/models/dictionary.model.mjs +10 -0
- package/dist/esm/models/dictionary.model.mjs.map +1 -0
- package/dist/esm/models/oAuth2.model.mjs +7 -0
- package/dist/esm/models/oAuth2.model.mjs.map +1 -0
- package/dist/esm/models/organization.model.mjs +10 -0
- package/dist/esm/models/organization.model.mjs.map +1 -0
- package/dist/esm/models/project.model.mjs +7 -0
- package/dist/esm/models/project.model.mjs.map +1 -0
- package/dist/esm/models/user.model.mjs +7 -0
- package/dist/esm/models/user.model.mjs.map +1 -0
- package/dist/esm/routes/dictionary.routes.mjs +139 -0
- package/dist/esm/routes/dictionary.routes.mjs.map +1 -0
- package/dist/esm/routes/organization.routes.mjs +116 -0
- package/dist/esm/routes/organization.routes.mjs.map +1 -0
- package/dist/esm/routes/project.routes.mjs +162 -0
- package/dist/esm/routes/project.routes.mjs.map +1 -0
- package/dist/esm/routes/sessionAuth.routes.mjs +134 -0
- package/dist/esm/routes/sessionAuth.routes.mjs.map +1 -0
- package/dist/esm/routes/user.routes.mjs +78 -0
- package/dist/esm/routes/user.routes.mjs.map +1 -0
- package/dist/esm/schemas/dictionary.schema.mjs +45 -0
- package/dist/esm/schemas/dictionary.schema.mjs.map +1 -0
- package/dist/esm/schemas/oAuth2.schema.mjs +31 -0
- package/dist/esm/schemas/oAuth2.schema.mjs.map +1 -0
- package/dist/esm/schemas/organization.schema.mjs +40 -0
- package/dist/esm/schemas/organization.schema.mjs.map +1 -0
- package/dist/esm/schemas/project.schema.mjs +59 -0
- package/dist/esm/schemas/project.schema.mjs.map +1 -0
- package/dist/esm/schemas/user.schema.mjs +81 -0
- package/dist/esm/schemas/user.schema.mjs.map +1 -0
- package/dist/esm/services/dictionary.service.mjs +134 -0
- package/dist/esm/services/dictionary.service.mjs.map +1 -0
- package/dist/esm/services/email.service.mjs +114 -0
- package/dist/esm/services/email.service.mjs.map +1 -0
- package/dist/esm/services/oAuth2.service.mjs +150 -0
- package/dist/esm/services/oAuth2.service.mjs.map +1 -0
- package/dist/esm/services/organization.service.mjs +68 -0
- package/dist/esm/services/organization.service.mjs.map +1 -0
- package/dist/esm/services/project.service.mjs +60 -0
- package/dist/esm/services/project.service.mjs.map +1 -0
- package/dist/esm/services/projectAccessKey.service.mjs +113 -0
- package/dist/esm/services/projectAccessKey.service.mjs.map +1 -0
- package/dist/esm/services/sessionAuth.service.mjs +337 -0
- package/dist/esm/services/sessionAuth.service.mjs.map +1 -0
- package/dist/esm/services/user.service.mjs +122 -0
- package/dist/esm/services/user.service.mjs.map +1 -0
- package/dist/esm/types/Routes.mjs +1 -0
- package/dist/esm/types/Routes.mjs.map +1 -0
- package/dist/esm/types/dictionary.types.mjs +1 -0
- package/dist/esm/types/dictionary.types.mjs.map +1 -0
- package/dist/esm/types/organization.types.mjs +1 -0
- package/dist/esm/types/organization.types.mjs.map +1 -0
- package/dist/esm/types/project.types.mjs +1 -0
- package/dist/esm/types/project.types.mjs.map +1 -0
- package/dist/esm/types/session.types.mjs +1 -0
- package/dist/esm/types/session.types.mjs.map +1 -0
- package/dist/esm/types/user.types.mjs +1 -0
- package/dist/esm/types/user.types.mjs.map +1 -0
- package/dist/esm/utils/CSRF.mjs +21 -0
- package/dist/esm/utils/CSRF.mjs.map +1 -0
- package/dist/esm/utils/accessControl.mjs +95 -0
- package/dist/esm/utils/accessControl.mjs.map +1 -0
- package/dist/esm/utils/cookies.mjs +32 -0
- package/dist/esm/utils/cookies.mjs.map +1 -0
- package/dist/esm/utils/errors/ErrorHandler.mjs +79 -0
- package/dist/esm/utils/errors/ErrorHandler.mjs.map +1 -0
- package/dist/esm/utils/errors/ErrorsClass.mjs +40 -0
- package/dist/esm/utils/errors/ErrorsClass.mjs.map +1 -0
- package/dist/esm/utils/errors/errorCodes.mjs +813 -0
- package/dist/esm/utils/errors/errorCodes.mjs.map +1 -0
- package/dist/esm/utils/errors/index.mjs +10 -0
- package/dist/esm/utils/errors/index.mjs.map +1 -0
- package/dist/esm/utils/filtersAndPagination/getDictionaryFiltersAndPagination.mjs +33 -0
- package/dist/esm/utils/filtersAndPagination/getDictionaryFiltersAndPagination.mjs.map +1 -0
- package/dist/esm/utils/filtersAndPagination/getFiltersAndPaginationFromBody.mjs +41 -0
- package/dist/esm/utils/filtersAndPagination/getFiltersAndPaginationFromBody.mjs.map +1 -0
- package/dist/esm/utils/filtersAndPagination/getOrganizationFiltersAndPagination.mjs +33 -0
- package/dist/esm/utils/filtersAndPagination/getOrganizationFiltersAndPagination.mjs.map +1 -0
- package/dist/esm/utils/filtersAndPagination/getProjectFiltersAndPagination.mjs +36 -0
- package/dist/esm/utils/filtersAndPagination/getProjectFiltersAndPagination.mjs.map +1 -0
- package/dist/esm/utils/filtersAndPagination/getUserFiltersAndPagination.mjs +30 -0
- package/dist/esm/utils/filtersAndPagination/getUserFiltersAndPagination.mjs.map +1 -0
- package/dist/esm/utils/httpStatusCodes.mjs +69 -0
- package/dist/esm/utils/httpStatusCodes.mjs.map +1 -0
- package/dist/esm/utils/mapper/dictionary.mjs +16 -0
- package/dist/esm/utils/mapper/dictionary.mjs.map +1 -0
- package/dist/esm/utils/mapper/organization.mjs +15 -0
- package/dist/esm/utils/mapper/organization.mjs.map +1 -0
- package/dist/esm/utils/mapper/project.mjs +15 -0
- package/dist/esm/utils/mapper/project.mjs.map +1 -0
- package/dist/esm/utils/mapper/user.mjs +14 -0
- package/dist/esm/utils/mapper/user.mjs.map +1 -0
- package/dist/esm/utils/mongoDB/connectDB.mjs +19 -0
- package/dist/esm/utils/mongoDB/connectDB.mjs.map +1 -0
- package/dist/esm/utils/oAuth2.mjs +29 -0
- package/dist/esm/utils/oAuth2.mjs.map +1 -0
- package/dist/esm/utils/responseData.mjs +41 -0
- package/dist/esm/utils/responseData.mjs.map +1 -0
- package/dist/esm/utils/validation/validateArray.mjs +33 -0
- package/dist/esm/utils/validation/validateArray.mjs.map +1 -0
- package/dist/esm/utils/validation/validateDictionary.mjs +42 -0
- package/dist/esm/utils/validation/validateDictionary.mjs.map +1 -0
- package/dist/esm/utils/validation/validateEmail.mjs +13 -0
- package/dist/esm/utils/validation/validateEmail.mjs.map +1 -0
- package/dist/esm/utils/validation/validateOrganization.mjs +52 -0
- package/dist/esm/utils/validation/validateOrganization.mjs.map +1 -0
- package/dist/esm/utils/validation/validatePhone.mjs +13 -0
- package/dist/esm/utils/validation/validatePhone.mjs.map +1 -0
- package/dist/esm/utils/validation/validateProject.mjs +70 -0
- package/dist/esm/utils/validation/validateProject.mjs.map +1 -0
- package/dist/esm/utils/validation/validateString.mjs +15 -0
- package/dist/esm/utils/validation/validateString.mjs.map +1 -0
- package/dist/esm/utils/validation/validateUser.mjs +47 -0
- package/dist/esm/utils/validation/validateUser.mjs.map +1 -0
- package/dist/types/controllers/dictionary.controller.d.ts +70 -0
- package/dist/types/controllers/dictionary.controller.d.ts.map +1 -0
- package/dist/types/controllers/oAuth2.controller.d.ts +14 -0
- package/dist/types/controllers/oAuth2.controller.d.ts.map +1 -0
- package/dist/types/controllers/organization.controller.d.ts +72 -0
- package/dist/types/controllers/organization.controller.d.ts.map +1 -0
- package/dist/types/controllers/project.controller.d.ts +59 -0
- package/dist/types/controllers/project.controller.d.ts.map +1 -0
- package/dist/types/controllers/projectAccessKey.controller.d.ts +27 -0
- package/dist/types/controllers/projectAccessKey.controller.d.ts.map +1 -0
- package/dist/types/controllers/sessionAuth.controller.d.ts +120 -0
- package/dist/types/controllers/sessionAuth.controller.d.ts.map +1 -0
- package/dist/types/controllers/user.controller.d.ts +56 -0
- package/dist/types/controllers/user.controller.d.ts.map +1 -0
- package/dist/types/emails/InviteUserEmail.d.ts +22 -0
- package/dist/types/emails/InviteUserEmail.d.ts.map +1 -0
- package/dist/types/emails/PasswordChangeConfirmation.d.ts +16 -0
- package/dist/types/emails/PasswordChangeConfirmation.d.ts.map +1 -0
- package/dist/types/emails/ResetUserPassword.d.ts +17 -0
- package/dist/types/emails/ResetUserPassword.d.ts.map +1 -0
- package/dist/types/emails/ValidateUserEmail.d.ts +17 -0
- package/dist/types/emails/ValidateUserEmail.d.ts.map +1 -0
- package/dist/types/emails/Welcome.d.ts +17 -0
- package/dist/types/emails/Welcome.d.ts.map +1 -0
- package/dist/types/emails/index.d.ts +6 -0
- package/dist/types/emails/index.d.ts.map +1 -0
- package/dist/types/export.d.ts +19 -0
- package/dist/types/export.d.ts.map +1 -0
- package/dist/types/index.d.ts +4 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/logger/index.d.ts +2 -0
- package/dist/types/logger/index.d.ts.map +1 -0
- package/dist/types/middlewares/admin.middleware.d.ts +10 -0
- package/dist/types/middlewares/admin.middleware.d.ts.map +1 -0
- package/dist/types/middlewares/oAuth2.middleware.d.ts +9 -0
- package/dist/types/middlewares/oAuth2.middleware.d.ts.map +1 -0
- package/dist/types/middlewares/request.middleware.d.ts +4 -0
- package/dist/types/middlewares/request.middleware.d.ts.map +1 -0
- package/dist/types/middlewares/sessionAuth.middleware.d.ts +20 -0
- package/dist/types/middlewares/sessionAuth.middleware.d.ts.map +1 -0
- package/dist/types/models/dictionary.model.d.ts +11 -0
- package/dist/types/models/dictionary.model.d.ts.map +1 -0
- package/dist/types/models/oAuth2.model.d.ts +10 -0
- package/dist/types/models/oAuth2.model.d.ts.map +1 -0
- package/dist/types/models/organization.model.d.ts +12 -0
- package/dist/types/models/organization.model.d.ts.map +1 -0
- package/dist/types/models/project.model.d.ts +12 -0
- package/dist/types/models/project.model.d.ts.map +1 -0
- package/dist/types/models/user.model.d.ts +3 -0
- package/dist/types/models/user.model.d.ts.map +1 -0
- package/dist/types/routes/dictionary.routes.d.ts +42 -0
- package/dist/types/routes/dictionary.routes.d.ts.map +1 -0
- package/dist/types/routes/organization.routes.d.ts +47 -0
- package/dist/types/routes/organization.routes.d.ts.map +1 -0
- package/dist/types/routes/project.routes.d.ts +57 -0
- package/dist/types/routes/project.routes.d.ts.map +1 -0
- package/dist/types/routes/sessionAuth.routes.d.ts +66 -0
- package/dist/types/routes/sessionAuth.routes.d.ts.map +1 -0
- package/dist/types/routes/user.routes.d.ts +42 -0
- package/dist/types/routes/user.routes.d.ts.map +1 -0
- package/dist/types/schemas/dictionary.schema.d.ts +16 -0
- package/dist/types/schemas/dictionary.schema.d.ts.map +1 -0
- package/dist/types/schemas/oAuth2.schema.d.ts +19 -0
- package/dist/types/schemas/oAuth2.schema.d.ts.map +1 -0
- package/dist/types/schemas/organization.schema.d.ts +17 -0
- package/dist/types/schemas/organization.schema.d.ts.map +1 -0
- package/dist/types/schemas/project.schema.d.ts +17 -0
- package/dist/types/schemas/project.schema.d.ts.map +1 -0
- package/dist/types/schemas/user.schema.d.ts +12 -0
- package/dist/types/schemas/user.schema.d.ts.map +1 -0
- package/dist/types/services/dictionary.service.d.ts +70 -0
- package/dist/types/services/dictionary.service.d.ts.map +1 -0
- package/dist/types/services/email.service.d.ts +18 -0
- package/dist/types/services/email.service.d.ts.map +1 -0
- package/dist/types/services/oAuth2.service.d.ts +85 -0
- package/dist/types/services/oAuth2.service.d.ts.map +1 -0
- package/dist/types/services/organization.service.d.ts +43 -0
- package/dist/types/services/organization.service.d.ts.map +1 -0
- package/dist/types/services/project.service.d.ts +43 -0
- package/dist/types/services/project.service.d.ts.map +1 -0
- package/dist/types/services/projectAccessKey.service.d.ts +16 -0
- package/dist/types/services/projectAccessKey.service.d.ts.map +1 -0
- package/dist/types/services/sessionAuth.service.d.ts +148 -0
- package/dist/types/services/sessionAuth.service.d.ts.map +1 -0
- package/dist/types/services/user.service.d.ts +89 -0
- package/dist/types/services/user.service.d.ts.map +1 -0
- package/dist/types/types/Routes.d.ts +7 -0
- package/dist/types/types/Routes.d.ts.map +1 -0
- package/dist/types/types/dictionary.types.d.ts +35 -0
- package/dist/types/types/dictionary.types.d.ts.map +1 -0
- package/dist/types/types/organization.types.d.ts +21 -0
- package/dist/types/types/organization.types.d.ts.map +1 -0
- package/dist/types/types/project.types.d.ts +40 -0
- package/dist/types/types/project.types.d.ts.map +1 -0
- package/dist/types/types/session.types.d.ts +22 -0
- package/dist/types/types/session.types.d.ts.map +1 -0
- package/dist/types/types/user.types.d.ts +28 -0
- package/dist/types/types/user.types.d.ts.map +1 -0
- package/dist/types/utils/CSRF.d.ts +3 -0
- package/dist/types/utils/CSRF.d.ts.map +1 -0
- package/dist/types/utils/accessControl.d.ts +58 -0
- package/dist/types/utils/accessControl.d.ts.map +1 -0
- package/dist/types/utils/cookies.d.ts +12 -0
- package/dist/types/utils/cookies.d.ts.map +1 -0
- package/dist/types/utils/errors/ErrorHandler.d.ts +32 -0
- package/dist/types/utils/errors/ErrorHandler.d.ts.map +1 -0
- package/dist/types/utils/errors/ErrorsClass.d.ts +26 -0
- package/dist/types/utils/errors/ErrorsClass.d.ts.map +1 -0
- package/dist/types/utils/errors/errorCodes.d.ts +811 -0
- package/dist/types/utils/errors/errorCodes.d.ts.map +1 -0
- package/dist/types/utils/errors/index.d.ts +4 -0
- package/dist/types/utils/errors/index.d.ts.map +1 -0
- package/dist/types/utils/filtersAndPagination/getDictionaryFiltersAndPagination.d.ts +23 -0
- package/dist/types/utils/filtersAndPagination/getDictionaryFiltersAndPagination.d.ts.map +1 -0
- package/dist/types/utils/filtersAndPagination/getFiltersAndPaginationFromBody.d.ts +22 -0
- package/dist/types/utils/filtersAndPagination/getFiltersAndPaginationFromBody.d.ts.map +1 -0
- package/dist/types/utils/filtersAndPagination/getOrganizationFiltersAndPagination.d.ts +31 -0
- package/dist/types/utils/filtersAndPagination/getOrganizationFiltersAndPagination.d.ts.map +1 -0
- package/dist/types/utils/filtersAndPagination/getProjectFiltersAndPagination.d.ts +24 -0
- package/dist/types/utils/filtersAndPagination/getProjectFiltersAndPagination.d.ts.map +1 -0
- package/dist/types/utils/filtersAndPagination/getUserFiltersAndPagination.d.ts +22 -0
- package/dist/types/utils/filtersAndPagination/getUserFiltersAndPagination.d.ts.map +1 -0
- package/dist/types/utils/httpStatusCodes.d.ts +395 -0
- package/dist/types/utils/httpStatusCodes.d.ts.map +1 -0
- package/dist/types/utils/mapper/dictionary.d.ts +12 -0
- package/dist/types/utils/mapper/dictionary.d.ts.map +1 -0
- package/dist/types/utils/mapper/organization.d.ts +9 -0
- package/dist/types/utils/mapper/organization.d.ts.map +1 -0
- package/dist/types/utils/mapper/project.d.ts +9 -0
- package/dist/types/utils/mapper/project.d.ts.map +1 -0
- package/dist/types/utils/mapper/user.d.ts +14 -0
- package/dist/types/utils/mapper/user.d.ts.map +1 -0
- package/dist/types/utils/mongoDB/connectDB.d.ts +3 -0
- package/dist/types/utils/mongoDB/connectDB.d.ts.map +1 -0
- package/dist/types/utils/oAuth2.d.ts +6 -0
- package/dist/types/utils/oAuth2.d.ts.map +1 -0
- package/dist/types/utils/responseData.d.ts +53 -0
- package/dist/types/utils/responseData.d.ts.map +1 -0
- package/dist/types/utils/validation/validateArray.d.ts +13 -0
- package/dist/types/utils/validation/validateArray.d.ts.map +1 -0
- package/dist/types/utils/validation/validateDictionary.d.ts +12 -0
- package/dist/types/utils/validation/validateDictionary.d.ts.map +1 -0
- package/dist/types/utils/validation/validateEmail.d.ts +10 -0
- package/dist/types/utils/validation/validateEmail.d.ts.map +1 -0
- package/dist/types/utils/validation/validateOrganization.d.ts +15 -0
- package/dist/types/utils/validation/validateOrganization.d.ts.map +1 -0
- package/dist/types/utils/validation/validatePhone.d.ts +10 -0
- package/dist/types/utils/validation/validatePhone.d.ts.map +1 -0
- package/dist/types/utils/validation/validateProject.d.ts +15 -0
- package/dist/types/utils/validation/validateProject.d.ts.map +1 -0
- package/dist/types/utils/validation/validateString.d.ts +10 -0
- package/dist/types/utils/validation/validateString.d.ts.map +1 -0
- package/dist/types/utils/validation/validateUser.d.ts +15 -0
- package/dist/types/utils/validation/validateUser.d.ts.map +1 -0
- package/package.json +115 -0
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __export = (target, all) => {
|
|
7
|
+
for (var name in all)
|
|
8
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
+
};
|
|
10
|
+
var __copyProps = (to, from, except, desc) => {
|
|
11
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
+
for (let key of __getOwnPropNames(from))
|
|
13
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
+
}
|
|
16
|
+
return to;
|
|
17
|
+
};
|
|
18
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
+
var project_service_exports = {};
|
|
20
|
+
__export(project_service_exports, {
|
|
21
|
+
countProjects: () => countProjects,
|
|
22
|
+
createProject: () => createProject,
|
|
23
|
+
deleteProjectById: () => deleteProjectById,
|
|
24
|
+
findProjects: () => findProjects,
|
|
25
|
+
getProjectById: () => getProjectById,
|
|
26
|
+
updateProjectById: () => updateProjectById
|
|
27
|
+
});
|
|
28
|
+
module.exports = __toCommonJS(project_service_exports);
|
|
29
|
+
var import_project = require('./../models/project.model.cjs');
|
|
30
|
+
var import_errors = require('./../utils/errors/index.cjs');
|
|
31
|
+
var import_validateProject = require('./../utils/validation/validateProject.cjs');
|
|
32
|
+
const findProjects = async (filters, skip = 0, limit = 100) => {
|
|
33
|
+
return await import_project.ProjectModel.find(filters).skip(skip).limit(limit);
|
|
34
|
+
};
|
|
35
|
+
const getProjectById = async (projectId) => {
|
|
36
|
+
const project = await import_project.ProjectModel.findById(projectId);
|
|
37
|
+
if (!project) {
|
|
38
|
+
throw new import_errors.GenericError("PROJECT_NOT_FOUND", { projectId });
|
|
39
|
+
}
|
|
40
|
+
return project;
|
|
41
|
+
};
|
|
42
|
+
const countProjects = async (filters) => {
|
|
43
|
+
const result = await import_project.ProjectModel.countDocuments(filters);
|
|
44
|
+
if (typeof result === "undefined") {
|
|
45
|
+
throw new import_errors.GenericError("PROJECT_COUNT_FAILED", { filters });
|
|
46
|
+
}
|
|
47
|
+
return result;
|
|
48
|
+
};
|
|
49
|
+
const createProject = async (project) => {
|
|
50
|
+
const errors = await (0, import_validateProject.validateProject)(project, ["name"]);
|
|
51
|
+
if (Object.keys(errors).length > 0) {
|
|
52
|
+
throw new import_errors.GenericError("PROJECT_INVALID_FIELDS", { errors });
|
|
53
|
+
}
|
|
54
|
+
return await import_project.ProjectModel.create(project);
|
|
55
|
+
};
|
|
56
|
+
const updateProjectById = async (projectId, project) => {
|
|
57
|
+
const updatedKeys = Object.keys(project);
|
|
58
|
+
const errors = (0, import_validateProject.validateProject)(project, updatedKeys);
|
|
59
|
+
if (Object.keys(errors).length > 0) {
|
|
60
|
+
throw new import_errors.GenericError("PROJECT_INVALID_FIELDS", {
|
|
61
|
+
projectId,
|
|
62
|
+
errors
|
|
63
|
+
});
|
|
64
|
+
}
|
|
65
|
+
const result = await import_project.ProjectModel.updateOne({ _id: projectId }, project);
|
|
66
|
+
if (result.matchedCount === 0) {
|
|
67
|
+
throw new import_errors.GenericError("PROJECT_UPDATE_FAILED", { projectId });
|
|
68
|
+
}
|
|
69
|
+
return await getProjectById(projectId);
|
|
70
|
+
};
|
|
71
|
+
const deleteProjectById = async (projectId) => {
|
|
72
|
+
const project = await import_project.ProjectModel.findByIdAndDelete(projectId);
|
|
73
|
+
if (!project) {
|
|
74
|
+
throw new import_errors.GenericError("PROJECT_NOT_FOUND", { projectId });
|
|
75
|
+
}
|
|
76
|
+
return project;
|
|
77
|
+
};
|
|
78
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
79
|
+
0 && (module.exports = {
|
|
80
|
+
countProjects,
|
|
81
|
+
createProject,
|
|
82
|
+
deleteProjectById,
|
|
83
|
+
findProjects,
|
|
84
|
+
getProjectById,
|
|
85
|
+
updateProjectById
|
|
86
|
+
});
|
|
87
|
+
//# sourceMappingURL=project.service.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/services/project.service.ts"],"sourcesContent":["import { ProjectModel } from '@models/project.model';\nimport { GenericError } from '@utils/errors';\nimport type { ProjectFilters } from '@utils/filtersAndPagination/getProjectFiltersAndPagination';\nimport {\n type ProjectFields,\n validateProject,\n} from '@utils/validation/validateProject';\nimport type { ObjectId } from 'mongoose';\nimport type { Project, ProjectData } from '@/types/project.types';\n\n/**\n * Finds projects based on filters and pagination options.\n * @param filters - MongoDB filter query.\n * @param skip - Number of documents to skip.\n * @param limit - Number of documents to limit.\n * @returns List of projects matching the filters.\n */\nexport const findProjects = async (\n filters: ProjectFilters,\n skip = 0,\n limit = 100\n): Promise<Project[]> => {\n return await ProjectModel.find(filters).skip(skip).limit(limit);\n};\n\n/**\n * Finds a project by its ID.\n * @param projectId - The ID of the project to find.\n * @returns The project matching the ID.\n */\nexport const getProjectById = async (\n projectId: string | ObjectId\n): Promise<Project> => {\n const project = await ProjectModel.findById(projectId);\n\n if (!project) {\n throw new GenericError('PROJECT_NOT_FOUND', { projectId });\n }\n\n return project;\n};\n\n/**\n * Counts the total number of projects that match the filters.\n * @param filters - MongoDB filter query.\n * @returns Total number of projects.\n */\nexport const countProjects = async (\n filters: ProjectFilters\n): Promise<number> => {\n const result = await ProjectModel.countDocuments(filters);\n\n if (typeof result === 'undefined') {\n throw new GenericError('PROJECT_COUNT_FAILED', { filters });\n }\n\n return result;\n};\n\n/**\n * Creates a new project in the database.\n * @param project - The project data to create.\n * @returns The created project.\n */\nexport const createProject = async (project: ProjectData): Promise<Project> => {\n const errors = await validateProject(project, ['name']);\n\n if (Object.keys(errors).length > 0) {\n throw new GenericError('PROJECT_INVALID_FIELDS', { errors });\n }\n\n return await ProjectModel.create(project);\n};\n\n/**\n * Updates an existing project in the database by its ID.\n * @param projectId - The ID of the project to update.\n * @param project - The updated project data.\n * @returns The updated project.\n */\nexport const updateProjectById = async (\n projectId: string | ObjectId,\n project: Partial<Project>\n): Promise<Project> => {\n const updatedKeys = Object.keys(project) as ProjectFields;\n const errors = validateProject(project, updatedKeys);\n\n if (Object.keys(errors).length > 0) {\n throw new GenericError('PROJECT_INVALID_FIELDS', {\n projectId,\n errors,\n });\n }\n\n const result = await ProjectModel.updateOne({ _id: projectId }, project);\n\n if (result.matchedCount === 0) {\n throw new GenericError('PROJECT_UPDATE_FAILED', { projectId });\n }\n\n return await getProjectById(projectId);\n};\n\n/**\n * Deletes a project from the database by its ID.\n * @param projectId - The ID of the project to delete.\n * @returns The result of the deletion operation.\n */\nexport const deleteProjectById = async (\n projectId: string | ObjectId\n): Promise<Project> => {\n const project = await ProjectModel.findByIdAndDelete(projectId);\n\n if (!project) {\n throw new GenericError('PROJECT_NOT_FOUND', { projectId });\n }\n\n return project;\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,qBAA6B;AAC7B,oBAA6B;AAE7B,6BAGO;AAWA,MAAM,eAAe,OAC1B,SACA,OAAO,GACP,QAAQ,QACe;AACvB,SAAO,MAAM,4BAAa,KAAK,OAAO,EAAE,KAAK,IAAI,EAAE,MAAM,KAAK;AAChE;AAOO,MAAM,iBAAiB,OAC5B,cACqB;AACrB,QAAM,UAAU,MAAM,4BAAa,SAAS,SAAS;AAErD,MAAI,CAAC,SAAS;AACZ,UAAM,IAAI,2BAAa,qBAAqB,EAAE,UAAU,CAAC;AAAA,EAC3D;AAEA,SAAO;AACT;AAOO,MAAM,gBAAgB,OAC3B,YACoB;AACpB,QAAM,SAAS,MAAM,4BAAa,eAAe,OAAO;AAExD,MAAI,OAAO,WAAW,aAAa;AACjC,UAAM,IAAI,2BAAa,wBAAwB,EAAE,QAAQ,CAAC;AAAA,EAC5D;AAEA,SAAO;AACT;AAOO,MAAM,gBAAgB,OAAO,YAA2C;AAC7E,QAAM,SAAS,UAAM,wCAAgB,SAAS,CAAC,MAAM,CAAC;AAEtD,MAAI,OAAO,KAAK,MAAM,EAAE,SAAS,GAAG;AAClC,UAAM,IAAI,2BAAa,0BAA0B,EAAE,OAAO,CAAC;AAAA,EAC7D;AAEA,SAAO,MAAM,4BAAa,OAAO,OAAO;AAC1C;AAQO,MAAM,oBAAoB,OAC/B,WACA,YACqB;AACrB,QAAM,cAAc,OAAO,KAAK,OAAO;AACvC,QAAM,aAAS,wCAAgB,SAAS,WAAW;AAEnD,MAAI,OAAO,KAAK,MAAM,EAAE,SAAS,GAAG;AAClC,UAAM,IAAI,2BAAa,0BAA0B;AAAA,MAC/C;AAAA,MACA;AAAA,IACF,CAAC;AAAA,EACH;AAEA,QAAM,SAAS,MAAM,4BAAa,UAAU,EAAE,KAAK,UAAU,GAAG,OAAO;AAEvE,MAAI,OAAO,iBAAiB,GAAG;AAC7B,UAAM,IAAI,2BAAa,yBAAyB,EAAE,UAAU,CAAC;AAAA,EAC/D;AAEA,SAAO,MAAM,eAAe,SAAS;AACvC;AAOO,MAAM,oBAAoB,OAC/B,cACqB;AACrB,QAAM,UAAU,MAAM,4BAAa,kBAAkB,SAAS;AAE9D,MAAI,CAAC,SAAS;AACZ,UAAM,IAAI,2BAAa,qBAAqB,EAAE,UAAU,CAAC;AAAA,EAC3D;AAEA,SAAO;AACT;","names":[]}
|
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __export = (target, all) => {
|
|
7
|
+
for (var name in all)
|
|
8
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
+
};
|
|
10
|
+
var __copyProps = (to, from, except, desc) => {
|
|
11
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
+
for (let key of __getOwnPropNames(from))
|
|
13
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
+
}
|
|
16
|
+
return to;
|
|
17
|
+
};
|
|
18
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
+
var projectAccessKey_service_exports = {};
|
|
20
|
+
__export(projectAccessKey_service_exports, {
|
|
21
|
+
addNewAccessKey: () => addNewAccessKey,
|
|
22
|
+
deleteAccessKey: () => deleteAccessKey,
|
|
23
|
+
refreshAccessKey: () => refreshAccessKey
|
|
24
|
+
});
|
|
25
|
+
module.exports = __toCommonJS(projectAccessKey_service_exports);
|
|
26
|
+
var import_project = require('./../models/project.model.cjs');
|
|
27
|
+
var import_errors = require('./../utils/errors/index.cjs');
|
|
28
|
+
var import_oAuth2 = require('./oAuth2.service.cjs');
|
|
29
|
+
var import_project2 = require('./project.service.cjs');
|
|
30
|
+
const addNewAccessKey = async (accessKeyData, projectId, user) => {
|
|
31
|
+
const { clientId, clientSecret } = (0, import_oAuth2.generateClientCredentials)();
|
|
32
|
+
const newAccessKey = {
|
|
33
|
+
...accessKeyData,
|
|
34
|
+
clientId,
|
|
35
|
+
clientSecret,
|
|
36
|
+
userId: user._id,
|
|
37
|
+
accessToken: []
|
|
38
|
+
};
|
|
39
|
+
const result = await import_project.ProjectModel.updateOne(
|
|
40
|
+
{ _id: projectId },
|
|
41
|
+
{ $push: { oAuth2Access: newAccessKey } }
|
|
42
|
+
);
|
|
43
|
+
if (result.modifiedCount === 0) {
|
|
44
|
+
throw new import_errors.GenericError("ACCESS_KEY_CREATION_FAILED", {
|
|
45
|
+
accessKeyData,
|
|
46
|
+
projectId,
|
|
47
|
+
userId: user._id
|
|
48
|
+
});
|
|
49
|
+
}
|
|
50
|
+
const updatedProject = await (0, import_project2.getProjectById)(projectId);
|
|
51
|
+
const newAccessKeyId = updatedProject.oAuth2Access.find(
|
|
52
|
+
(access) => access.clientId === clientId
|
|
53
|
+
);
|
|
54
|
+
if (!newAccessKeyId) {
|
|
55
|
+
throw new import_errors.GenericError("ACCESS_KEY_CREATION_FAILED", {
|
|
56
|
+
accessKeyData,
|
|
57
|
+
projectId,
|
|
58
|
+
userId: user._id
|
|
59
|
+
});
|
|
60
|
+
}
|
|
61
|
+
return newAccessKeyId;
|
|
62
|
+
};
|
|
63
|
+
const deleteAccessKey = async (clientId, project) => {
|
|
64
|
+
const projectAccess = project.oAuth2Access.find(
|
|
65
|
+
(access) => access.clientId === clientId
|
|
66
|
+
);
|
|
67
|
+
if (!projectAccess) {
|
|
68
|
+
throw new import_errors.GenericError("ACCESS_KEY_NOT_FOUND", {
|
|
69
|
+
clientId,
|
|
70
|
+
projectId: project._id
|
|
71
|
+
});
|
|
72
|
+
}
|
|
73
|
+
const result = await import_project.ProjectModel.updateOne(
|
|
74
|
+
{ "oAuth2Access.clientId": clientId },
|
|
75
|
+
{ $pull: { oAuth2Access: { clientId } } }
|
|
76
|
+
);
|
|
77
|
+
if (result.modifiedCount === 0) {
|
|
78
|
+
throw new import_errors.GenericError("ACCESS_KEY_DELETION_FAILED", {
|
|
79
|
+
clientId,
|
|
80
|
+
projectId: project._id
|
|
81
|
+
});
|
|
82
|
+
}
|
|
83
|
+
return projectAccess;
|
|
84
|
+
};
|
|
85
|
+
const refreshAccessKey = async (clientId, projectId) => {
|
|
86
|
+
const project = await import_project.ProjectModel.findOne({
|
|
87
|
+
_id: projectId,
|
|
88
|
+
"oAuth2Access.clientId": clientId
|
|
89
|
+
});
|
|
90
|
+
if (!project) {
|
|
91
|
+
throw new import_errors.GenericError("PROJECT_NOT_FOUND", {
|
|
92
|
+
clientId,
|
|
93
|
+
projectId
|
|
94
|
+
});
|
|
95
|
+
}
|
|
96
|
+
const projectAccess = project.oAuth2Access.find(
|
|
97
|
+
(access) => access.clientId === clientId
|
|
98
|
+
);
|
|
99
|
+
if (!projectAccess) {
|
|
100
|
+
throw new import_errors.GenericError("ACCESS_KEY_NOT_FOUND", {
|
|
101
|
+
clientId,
|
|
102
|
+
projectId: project._id
|
|
103
|
+
});
|
|
104
|
+
}
|
|
105
|
+
const { clientSecret } = (0, import_oAuth2.generateClientCredentials)();
|
|
106
|
+
const result = await import_project.ProjectModel.updateOne(
|
|
107
|
+
{ "oAuth2Access.clientId": clientId },
|
|
108
|
+
{
|
|
109
|
+
$set: {
|
|
110
|
+
"oAuth2Access.$.clientId": projectAccess.clientId,
|
|
111
|
+
"oAuth2Access.$.clientSecret": clientSecret
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
);
|
|
115
|
+
if (result.modifiedCount === 0) {
|
|
116
|
+
throw new import_errors.GenericError("ACCESS_KEy_UPDATE_FAILED", {
|
|
117
|
+
clientId,
|
|
118
|
+
projectId
|
|
119
|
+
});
|
|
120
|
+
}
|
|
121
|
+
const updatedProject = await (0, import_project2.getProjectById)(projectId);
|
|
122
|
+
const newAccessKeyId = updatedProject.oAuth2Access.find(
|
|
123
|
+
(access) => access.clientId === projectAccess.clientId
|
|
124
|
+
);
|
|
125
|
+
if (!newAccessKeyId) {
|
|
126
|
+
throw new import_errors.GenericError("ACCESS_KEY_CREATION_FAILED", {
|
|
127
|
+
accessKeyData: updatedProject.oAuth2Access,
|
|
128
|
+
projectId
|
|
129
|
+
});
|
|
130
|
+
}
|
|
131
|
+
return newAccessKeyId;
|
|
132
|
+
};
|
|
133
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
134
|
+
0 && (module.exports = {
|
|
135
|
+
addNewAccessKey,
|
|
136
|
+
deleteAccessKey,
|
|
137
|
+
refreshAccessKey
|
|
138
|
+
});
|
|
139
|
+
//# sourceMappingURL=projectAccessKey.service.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/services/projectAccessKey.service.ts"],"sourcesContent":["import { ProjectModel } from '@models/project.model';\nimport { GenericError } from '@utils/errors';\nimport type { ObjectId } from 'mongoose';\nimport { generateClientCredentials } from './oAuth2.service';\nimport { getProjectById } from './project.service';\nimport type {\n AccessKeyData,\n OAuth2Access,\n OAuth2AccessData,\n Project,\n} from '@/types/project.types';\nimport { User } from '@/types/user.types';\n\n/**\n * Adds a new access key to a project.\n *\n * @param accessKeyData - The access key data.\n * @param projectId - The ID of the project to add the access key to.\n * @param user - The user adding the access key.\n * @returns The new access key.\n *\n */\nexport const addNewAccessKey = async (\n accessKeyData: AccessKeyData,\n projectId: string | ObjectId,\n user: User\n): Promise<OAuth2Access> => {\n const { clientId, clientSecret } = generateClientCredentials();\n\n const newAccessKey: OAuth2AccessData = {\n ...accessKeyData,\n clientId,\n clientSecret,\n userId: user._id,\n accessToken: [],\n };\n\n const result = await ProjectModel.updateOne(\n { _id: projectId },\n { $push: { oAuth2Access: newAccessKey } }\n );\n\n if (result.modifiedCount === 0) {\n throw new GenericError('ACCESS_KEY_CREATION_FAILED', {\n accessKeyData,\n projectId,\n userId: user._id,\n });\n }\n\n const updatedProject = await getProjectById(projectId);\n\n const newAccessKeyId = updatedProject.oAuth2Access.find(\n (access) => access.clientId === clientId\n );\n\n if (!newAccessKeyId) {\n throw new GenericError('ACCESS_KEY_CREATION_FAILED', {\n accessKeyData,\n projectId,\n userId: user._id,\n });\n }\n\n return newAccessKeyId;\n};\n\nexport const deleteAccessKey = async (\n clientId: string | ObjectId,\n project: Project\n) => {\n const projectAccess = project.oAuth2Access.find(\n (access) => access.clientId === clientId\n );\n\n if (!projectAccess) {\n throw new GenericError('ACCESS_KEY_NOT_FOUND', {\n clientId,\n projectId: project._id,\n });\n }\n\n const result = await ProjectModel.updateOne(\n { 'oAuth2Access.clientId': clientId },\n { $pull: { oAuth2Access: { clientId } } }\n );\n\n if (result.modifiedCount === 0) {\n throw new GenericError('ACCESS_KEY_DELETION_FAILED', {\n clientId,\n projectId: project._id,\n });\n }\n\n return projectAccess;\n};\n\nexport const refreshAccessKey = async (\n clientId: string | ObjectId,\n projectId: string | ObjectId\n): Promise<OAuth2Access> => {\n const project = await ProjectModel.findOne({\n _id: projectId,\n 'oAuth2Access.clientId': clientId,\n });\n\n if (!project) {\n throw new GenericError('PROJECT_NOT_FOUND', {\n clientId,\n projectId,\n });\n }\n\n const projectAccess = project.oAuth2Access.find(\n (access) => access.clientId === clientId\n );\n\n if (!projectAccess) {\n throw new GenericError('ACCESS_KEY_NOT_FOUND', {\n clientId,\n projectId: project._id,\n });\n }\n\n const { clientSecret } = generateClientCredentials();\n\n const result = await ProjectModel.updateOne(\n { 'oAuth2Access.clientId': clientId },\n {\n $set: {\n 'oAuth2Access.$.clientId': projectAccess.clientId,\n 'oAuth2Access.$.clientSecret': clientSecret,\n },\n }\n );\n\n if (result.modifiedCount === 0) {\n throw new GenericError('ACCESS_KEy_UPDATE_FAILED', {\n clientId,\n projectId,\n });\n }\n\n const updatedProject = await getProjectById(projectId);\n\n const newAccessKeyId = updatedProject.oAuth2Access.find(\n (access) => access.clientId === projectAccess.clientId\n );\n\n if (!newAccessKeyId) {\n throw new GenericError('ACCESS_KEY_CREATION_FAILED', {\n accessKeyData: updatedProject.oAuth2Access,\n projectId,\n });\n }\n\n return newAccessKeyId;\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,qBAA6B;AAC7B,oBAA6B;AAE7B,oBAA0C;AAC1C,IAAAA,kBAA+B;AAkBxB,MAAM,kBAAkB,OAC7B,eACA,WACA,SAC0B;AAC1B,QAAM,EAAE,UAAU,aAAa,QAAI,yCAA0B;AAE7D,QAAM,eAAiC;AAAA,IACrC,GAAG;AAAA,IACH;AAAA,IACA;AAAA,IACA,QAAQ,KAAK;AAAA,IACb,aAAa,CAAC;AAAA,EAChB;AAEA,QAAM,SAAS,MAAM,4BAAa;AAAA,IAChC,EAAE,KAAK,UAAU;AAAA,IACjB,EAAE,OAAO,EAAE,cAAc,aAAa,EAAE;AAAA,EAC1C;AAEA,MAAI,OAAO,kBAAkB,GAAG;AAC9B,UAAM,IAAI,2BAAa,8BAA8B;AAAA,MACnD;AAAA,MACA;AAAA,MACA,QAAQ,KAAK;AAAA,IACf,CAAC;AAAA,EACH;AAEA,QAAM,iBAAiB,UAAM,gCAAe,SAAS;AAErD,QAAM,iBAAiB,eAAe,aAAa;AAAA,IACjD,CAAC,WAAW,OAAO,aAAa;AAAA,EAClC;AAEA,MAAI,CAAC,gBAAgB;AACnB,UAAM,IAAI,2BAAa,8BAA8B;AAAA,MACnD;AAAA,MACA;AAAA,MACA,QAAQ,KAAK;AAAA,IACf,CAAC;AAAA,EACH;AAEA,SAAO;AACT;AAEO,MAAM,kBAAkB,OAC7B,UACA,YACG;AACH,QAAM,gBAAgB,QAAQ,aAAa;AAAA,IACzC,CAAC,WAAW,OAAO,aAAa;AAAA,EAClC;AAEA,MAAI,CAAC,eAAe;AAClB,UAAM,IAAI,2BAAa,wBAAwB;AAAA,MAC7C;AAAA,MACA,WAAW,QAAQ;AAAA,IACrB,CAAC;AAAA,EACH;AAEA,QAAM,SAAS,MAAM,4BAAa;AAAA,IAChC,EAAE,yBAAyB,SAAS;AAAA,IACpC,EAAE,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,EAAE;AAAA,EAC1C;AAEA,MAAI,OAAO,kBAAkB,GAAG;AAC9B,UAAM,IAAI,2BAAa,8BAA8B;AAAA,MACnD;AAAA,MACA,WAAW,QAAQ;AAAA,IACrB,CAAC;AAAA,EACH;AAEA,SAAO;AACT;AAEO,MAAM,mBAAmB,OAC9B,UACA,cAC0B;AAC1B,QAAM,UAAU,MAAM,4BAAa,QAAQ;AAAA,IACzC,KAAK;AAAA,IACL,yBAAyB;AAAA,EAC3B,CAAC;AAED,MAAI,CAAC,SAAS;AACZ,UAAM,IAAI,2BAAa,qBAAqB;AAAA,MAC1C;AAAA,MACA;AAAA,IACF,CAAC;AAAA,EACH;AAEA,QAAM,gBAAgB,QAAQ,aAAa;AAAA,IACzC,CAAC,WAAW,OAAO,aAAa;AAAA,EAClC;AAEA,MAAI,CAAC,eAAe;AAClB,UAAM,IAAI,2BAAa,wBAAwB;AAAA,MAC7C;AAAA,MACA,WAAW,QAAQ;AAAA,IACrB,CAAC;AAAA,EACH;AAEA,QAAM,EAAE,aAAa,QAAI,yCAA0B;AAEnD,QAAM,SAAS,MAAM,4BAAa;AAAA,IAChC,EAAE,yBAAyB,SAAS;AAAA,IACpC;AAAA,MACE,MAAM;AAAA,QACJ,2BAA2B,cAAc;AAAA,QACzC,+BAA+B;AAAA,MACjC;AAAA,IACF;AAAA,EACF;AAEA,MAAI,OAAO,kBAAkB,GAAG;AAC9B,UAAM,IAAI,2BAAa,4BAA4B;AAAA,MACjD;AAAA,MACA;AAAA,IACF,CAAC;AAAA,EACH;AAEA,QAAM,iBAAiB,UAAM,gCAAe,SAAS;AAErD,QAAM,iBAAiB,eAAe,aAAa;AAAA,IACjD,CAAC,WAAW,OAAO,aAAa,cAAc;AAAA,EAChD;AAEA,MAAI,CAAC,gBAAgB;AACnB,UAAM,IAAI,2BAAa,8BAA8B;AAAA,MACnD,eAAe,eAAe;AAAA,MAC9B;AAAA,IACF,CAAC;AAAA,EACH;AAEA,SAAO;AACT;","names":["import_project"]}
|
|
@@ -0,0 +1,386 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __create = Object.create;
|
|
3
|
+
var __defProp = Object.defineProperty;
|
|
4
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
5
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
6
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
7
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
8
|
+
var __export = (target, all) => {
|
|
9
|
+
for (var name in all)
|
|
10
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
11
|
+
};
|
|
12
|
+
var __copyProps = (to, from, except, desc) => {
|
|
13
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
14
|
+
for (let key of __getOwnPropNames(from))
|
|
15
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
16
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
17
|
+
}
|
|
18
|
+
return to;
|
|
19
|
+
};
|
|
20
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
21
|
+
// If the importer is in node compatibility mode or this is not an ESM
|
|
22
|
+
// file that has been converted to a CommonJS file using a Babel-
|
|
23
|
+
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
24
|
+
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
25
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
26
|
+
mod
|
|
27
|
+
));
|
|
28
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
29
|
+
var sessionAuth_service_exports = {};
|
|
30
|
+
__export(sessionAuth_service_exports, {
|
|
31
|
+
activateUser: () => activateUser,
|
|
32
|
+
addSession: () => addSession,
|
|
33
|
+
addUserProvider: () => addUserProvider,
|
|
34
|
+
changeUserPassword: () => changeUserPassword,
|
|
35
|
+
clearOrganizationAuth: () => clearOrganizationAuth,
|
|
36
|
+
clearProjectAuth: () => clearProjectAuth,
|
|
37
|
+
clearUserAuth: () => clearUserAuth,
|
|
38
|
+
formatUserProviderUpdate: () => formatUserProviderUpdate,
|
|
39
|
+
generateSecret: () => generateSecret,
|
|
40
|
+
getUserProvider: () => getUserProvider,
|
|
41
|
+
hashUserPassword: () => hashUserPassword,
|
|
42
|
+
removeSession: () => removeSession,
|
|
43
|
+
removeUserProvider: () => removeUserProvider,
|
|
44
|
+
requestPasswordReset: () => requestPasswordReset,
|
|
45
|
+
resetPassword: () => resetPassword,
|
|
46
|
+
resetUserPassword: () => resetUserPassword,
|
|
47
|
+
setOrganizationAuth: () => setOrganizationAuth,
|
|
48
|
+
setProjectAuth: () => setProjectAuth,
|
|
49
|
+
setUserAuth: () => setUserAuth,
|
|
50
|
+
testUserPassword: () => testUserPassword,
|
|
51
|
+
updateUserProvider: () => updateUserProvider
|
|
52
|
+
});
|
|
53
|
+
module.exports = __toCommonJS(sessionAuth_service_exports);
|
|
54
|
+
var import_logger = require('./../logger/index.cjs');
|
|
55
|
+
var import_cookies = require('./../utils/cookies.cjs');
|
|
56
|
+
var import_errors = require('./../utils/errors/index.cjs');
|
|
57
|
+
var import_user = require('./../utils/mapper/user.cjs');
|
|
58
|
+
var import_bcrypt = require("bcrypt");
|
|
59
|
+
var import_express_intlayer = require("express-intlayer");
|
|
60
|
+
var import_jsonwebtoken = __toESM(require("jsonwebtoken"), 1);
|
|
61
|
+
var import_uuid = require("uuid");
|
|
62
|
+
var import_user2 = require('./user.service.cjs');
|
|
63
|
+
const addSession = async (user) => {
|
|
64
|
+
const userSessionToken = (0, import_uuid.v4)();
|
|
65
|
+
const session = {
|
|
66
|
+
sessionToken: userSessionToken,
|
|
67
|
+
expires: new Date(Date.now() + import_cookies.MAX_AGE)
|
|
68
|
+
};
|
|
69
|
+
const updatedUser = await (0, import_user2.updateUserById)(user._id, { session });
|
|
70
|
+
return updatedUser;
|
|
71
|
+
};
|
|
72
|
+
const removeSession = async (user) => {
|
|
73
|
+
const session = void 0;
|
|
74
|
+
const updatedUser = await (0, import_user2.updateUserById)(user._id, { session });
|
|
75
|
+
return updatedUser;
|
|
76
|
+
};
|
|
77
|
+
const setUserAuth = async (res, user) => {
|
|
78
|
+
const formattedUser = (0, import_user.mapUserToAPI)(user);
|
|
79
|
+
const userToken = import_jsonwebtoken.default.sign(formattedUser, process.env.JWT_TOKEN_SECRET, {
|
|
80
|
+
expiresIn: import_cookies.MAX_AGE
|
|
81
|
+
});
|
|
82
|
+
if (!userToken) {
|
|
83
|
+
throw new import_errors.GenericError("JWT_TOKEN_CREATION_FAILED_USER", { user });
|
|
84
|
+
}
|
|
85
|
+
const cookieOptions = (0, import_cookies.getCookieOptions)();
|
|
86
|
+
res.cookie(import_cookies.Cookies.JWT_USER, userToken, cookieOptions);
|
|
87
|
+
const userWithSession = await addSession(user);
|
|
88
|
+
const userSessionToken = userWithSession.session?.sessionToken;
|
|
89
|
+
res.cookie(import_cookies.Cookies.JWT_AUTH, userSessionToken, cookieOptions);
|
|
90
|
+
res.locals.user = user;
|
|
91
|
+
import_logger.logger.info(
|
|
92
|
+
`User logged in - User: Name: ${user.name}, id: ${String(user._id)}`
|
|
93
|
+
);
|
|
94
|
+
};
|
|
95
|
+
const clearUserAuth = async (res) => {
|
|
96
|
+
const { user } = res.locals;
|
|
97
|
+
const cookiesOptions = (0, import_cookies.getClearCookieOptions)();
|
|
98
|
+
if (user) {
|
|
99
|
+
await removeSession(user);
|
|
100
|
+
}
|
|
101
|
+
res.cookie(import_cookies.Cookies.JWT_AUTH, "", cookiesOptions);
|
|
102
|
+
res.cookie(import_cookies.Cookies.JWT_USER, "", cookiesOptions);
|
|
103
|
+
res.locals.user = null;
|
|
104
|
+
res.locals.authType = null;
|
|
105
|
+
};
|
|
106
|
+
const setOrganizationAuth = (res, organization) => {
|
|
107
|
+
const organizationData = {
|
|
108
|
+
_id: organization._id,
|
|
109
|
+
name: organization.name
|
|
110
|
+
};
|
|
111
|
+
const organizationToken = import_jsonwebtoken.default.sign(
|
|
112
|
+
organizationData,
|
|
113
|
+
process.env.JWT_TOKEN_SECRET,
|
|
114
|
+
{
|
|
115
|
+
expiresIn: import_cookies.MAX_AGE
|
|
116
|
+
}
|
|
117
|
+
);
|
|
118
|
+
if (!organizationToken) {
|
|
119
|
+
throw new import_errors.GenericError("JWT_TOKEN_CREATION_FAILED_ORGANIZATION", {
|
|
120
|
+
organization
|
|
121
|
+
});
|
|
122
|
+
}
|
|
123
|
+
res.cookie(import_cookies.Cookies.JWT_ORGANIZATION, organizationToken, (0, import_cookies.getCookieOptions)());
|
|
124
|
+
res.locals.organization = organization;
|
|
125
|
+
};
|
|
126
|
+
const clearOrganizationAuth = (res) => {
|
|
127
|
+
res.locals.organization = null;
|
|
128
|
+
res.cookie(import_cookies.Cookies.JWT_ORGANIZATION, "", (0, import_cookies.getClearCookieOptions)());
|
|
129
|
+
};
|
|
130
|
+
const setProjectAuth = (res, project) => {
|
|
131
|
+
const { organization } = res.locals;
|
|
132
|
+
const projectData = {
|
|
133
|
+
_id: project._id,
|
|
134
|
+
name: project.name
|
|
135
|
+
};
|
|
136
|
+
const projectToken = import_jsonwebtoken.default.sign(projectData, process.env.JWT_TOKEN_SECRET, {
|
|
137
|
+
expiresIn: import_cookies.MAX_AGE
|
|
138
|
+
});
|
|
139
|
+
if (!projectToken) {
|
|
140
|
+
throw new import_errors.GenericError("JWT_TOKEN_CREATION_FAILED_PROJECT", {
|
|
141
|
+
project
|
|
142
|
+
});
|
|
143
|
+
}
|
|
144
|
+
res.cookie(import_cookies.Cookies.JWT_PROJECT, projectToken, (0, import_cookies.getCookieOptions)());
|
|
145
|
+
if (!organization) {
|
|
146
|
+
throw new import_errors.GenericError("ORGANIZATION_NOT_FOUND", {
|
|
147
|
+
project
|
|
148
|
+
});
|
|
149
|
+
}
|
|
150
|
+
if (
|
|
151
|
+
// if the project is not in the organization's projects
|
|
152
|
+
String(organization._id) !== String(project.organizationId)
|
|
153
|
+
) {
|
|
154
|
+
throw new import_errors.GenericError("JWT_TOKEN_ORGANIZATION_MISMATCH_PROJECT", {
|
|
155
|
+
project
|
|
156
|
+
});
|
|
157
|
+
}
|
|
158
|
+
res.locals.project = project;
|
|
159
|
+
};
|
|
160
|
+
const clearProjectAuth = (res) => {
|
|
161
|
+
res.locals.project = null;
|
|
162
|
+
res.cookie(import_cookies.Cookies.JWT_PROJECT, "", (0, import_cookies.getClearCookieOptions)());
|
|
163
|
+
};
|
|
164
|
+
const activateUser = async (userId, secret) => {
|
|
165
|
+
return await updateUserProvider(userId, "email", {
|
|
166
|
+
secret
|
|
167
|
+
});
|
|
168
|
+
};
|
|
169
|
+
const generateSecret = (length) => {
|
|
170
|
+
const characters = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
|
|
171
|
+
return Array.from(
|
|
172
|
+
{ length },
|
|
173
|
+
() => characters.charAt(Math.floor(Math.random() * characters.length))
|
|
174
|
+
).join("");
|
|
175
|
+
};
|
|
176
|
+
const requestPasswordReset = async (email) => {
|
|
177
|
+
const user = await (0, import_user2.getUserByEmail)(email);
|
|
178
|
+
if (!user) {
|
|
179
|
+
throw new import_errors.GenericError("USER_NOT_FOUND", { email });
|
|
180
|
+
}
|
|
181
|
+
return updateUserProvider(user._id, "email", {
|
|
182
|
+
secret: generateSecret(35)
|
|
183
|
+
});
|
|
184
|
+
};
|
|
185
|
+
const resetUserPassword = async (userId, secret, newPassword) => {
|
|
186
|
+
const emailAndPasswordProvider = await getUserProvider(userId, "email");
|
|
187
|
+
if (!emailAndPasswordProvider) {
|
|
188
|
+
throw new import_errors.GenericError("USER_PROVIDER_NOT_FOUND", { userId });
|
|
189
|
+
}
|
|
190
|
+
if (emailAndPasswordProvider.secret !== secret) {
|
|
191
|
+
throw new import_errors.GenericError("USER_PROVIDER_SECRET_NOT_VALID", { userId });
|
|
192
|
+
}
|
|
193
|
+
const updatedUser = await updateUserProvider(userId, "email", {
|
|
194
|
+
passwordHash: await (0, import_bcrypt.hash)(newPassword, await (0, import_bcrypt.genSalt)()),
|
|
195
|
+
secret
|
|
196
|
+
});
|
|
197
|
+
return updatedUser;
|
|
198
|
+
};
|
|
199
|
+
const getUserProvider = async (userId, provider, providerAccountId) => {
|
|
200
|
+
const user = await (0, import_user2.getUserById)(userId);
|
|
201
|
+
if (!user) {
|
|
202
|
+
throw new import_errors.GenericError("USER_NOT_FOUND", { userId });
|
|
203
|
+
}
|
|
204
|
+
const userProvider = user.provider?.find(
|
|
205
|
+
(providerEl) => providerEl.provider === provider && !providerAccountId || providerAccountId && providerEl.providerAccountId === providerAccountId
|
|
206
|
+
);
|
|
207
|
+
return userProvider ?? null;
|
|
208
|
+
};
|
|
209
|
+
const formatUserProviderUpdate = (provider, user, providerUpdate) => {
|
|
210
|
+
const userProvider = user.provider.toObject();
|
|
211
|
+
const userProviderToUpdate = userProvider?.find(
|
|
212
|
+
(providerEl) => providerEl.provider === provider
|
|
213
|
+
);
|
|
214
|
+
let updatedProvider;
|
|
215
|
+
if (userProviderToUpdate) {
|
|
216
|
+
const otherProviders = user.provider?.filter((p) => p.provider !== provider) ?? [];
|
|
217
|
+
updatedProvider = [
|
|
218
|
+
...otherProviders,
|
|
219
|
+
{ ...userProviderToUpdate, ...providerUpdate, provider }
|
|
220
|
+
];
|
|
221
|
+
} else {
|
|
222
|
+
updatedProvider = [
|
|
223
|
+
...user.provider ?? [],
|
|
224
|
+
{ ...providerUpdate, provider }
|
|
225
|
+
];
|
|
226
|
+
}
|
|
227
|
+
return updatedProvider;
|
|
228
|
+
};
|
|
229
|
+
const updateUserProvider = async (userId, provider, providerUpdate) => {
|
|
230
|
+
const user = await (0, import_user2.getUserById)(userId);
|
|
231
|
+
if (!user) {
|
|
232
|
+
throw new import_errors.GenericError("USER_NOT_FOUND", { userId });
|
|
233
|
+
}
|
|
234
|
+
const formattedProviderToUpdate = formatUserProviderUpdate(
|
|
235
|
+
provider,
|
|
236
|
+
user,
|
|
237
|
+
providerUpdate
|
|
238
|
+
);
|
|
239
|
+
const updatedUser = await (0, import_user2.updateUserById)(userId, {
|
|
240
|
+
provider: formattedProviderToUpdate
|
|
241
|
+
});
|
|
242
|
+
import_logger.logger.info(
|
|
243
|
+
`User provider updated - User: Name: ${updatedUser.name}, id: ${String(updatedUser._id)} - Provider: ${provider}`
|
|
244
|
+
);
|
|
245
|
+
return updatedUser;
|
|
246
|
+
};
|
|
247
|
+
const addUserProvider = async (userId, provider) => {
|
|
248
|
+
const user = await (0, import_user2.getUserById)(userId);
|
|
249
|
+
if (!user) {
|
|
250
|
+
throw new import_errors.GenericError("USER_NOT_FOUND", { userId });
|
|
251
|
+
}
|
|
252
|
+
const existingProvider = await getUserProvider(userId, provider.provider);
|
|
253
|
+
if (existingProvider) {
|
|
254
|
+
throw new import_errors.GenericError("USER_PROVIDER_ALREADY_EXISTS", {
|
|
255
|
+
userId,
|
|
256
|
+
provider
|
|
257
|
+
});
|
|
258
|
+
}
|
|
259
|
+
const updatedProvider = [...user.provider ?? [], provider];
|
|
260
|
+
const updatedUser = await (0, import_user2.updateUserById)(userId, {
|
|
261
|
+
provider: updatedProvider
|
|
262
|
+
});
|
|
263
|
+
import_logger.logger.info(
|
|
264
|
+
`User provider added - User: Name: ${updatedUser.name}, id: ${String(updatedUser._id)} - Provider: ${provider.provider}`
|
|
265
|
+
);
|
|
266
|
+
return updatedUser;
|
|
267
|
+
};
|
|
268
|
+
const removeUserProvider = async (userId, provider, providerAccountId) => {
|
|
269
|
+
const user = await (0, import_user2.getUserById)(userId);
|
|
270
|
+
if (!user) {
|
|
271
|
+
throw new import_errors.GenericError("USER_NOT_FOUND", { userId });
|
|
272
|
+
}
|
|
273
|
+
const existingProvider = await getUserProvider(
|
|
274
|
+
userId,
|
|
275
|
+
provider,
|
|
276
|
+
providerAccountId
|
|
277
|
+
);
|
|
278
|
+
if (!existingProvider) {
|
|
279
|
+
throw new import_errors.GenericError("USER_PROVIDER_NOT_FOUND", {
|
|
280
|
+
userId,
|
|
281
|
+
provider
|
|
282
|
+
});
|
|
283
|
+
}
|
|
284
|
+
const updatedProvider = user.provider?.filter(
|
|
285
|
+
(p) => p.provider !== provider && (!providerAccountId || providerAccountId && p.providerAccountId !== providerAccountId)
|
|
286
|
+
);
|
|
287
|
+
return await (0, import_user2.updateUserById)(userId, {
|
|
288
|
+
provider: updatedProvider
|
|
289
|
+
});
|
|
290
|
+
};
|
|
291
|
+
const testUserPassword = async (email, password) => {
|
|
292
|
+
const user = await (0, import_user2.getUserByEmail)(email);
|
|
293
|
+
if (!user) {
|
|
294
|
+
const errorMessages = {
|
|
295
|
+
en: `User not found - ${email}`,
|
|
296
|
+
fr: `Utilisateur non trouv\xE9 - ${email}`,
|
|
297
|
+
es: `Usuario no encontrado - ${email}`
|
|
298
|
+
};
|
|
299
|
+
return { user: null, error: (0, import_express_intlayer.t)(errorMessages) };
|
|
300
|
+
}
|
|
301
|
+
const userEmailPasswordProvider = user.provider?.find(
|
|
302
|
+
(provider) => provider.provider === "email"
|
|
303
|
+
);
|
|
304
|
+
if (!userEmailPasswordProvider?.passwordHash) {
|
|
305
|
+
const errorMessages = {
|
|
306
|
+
en: `User request to login but no password defined: ${user.email}`,
|
|
307
|
+
fr: `Demande de connexion d'utilisateur mais pas de mot de passe d\xE9fini : ${user.email}`,
|
|
308
|
+
es: `Solicitud de inicio de sesi\xF3n de usuario pero no se define la contrase\xF1a : ${user.email}`
|
|
309
|
+
};
|
|
310
|
+
return { user: null, error: (0, import_express_intlayer.t)(errorMessages) };
|
|
311
|
+
}
|
|
312
|
+
const isMatch = await (0, import_bcrypt.compare)(
|
|
313
|
+
password,
|
|
314
|
+
userEmailPasswordProvider.passwordHash
|
|
315
|
+
);
|
|
316
|
+
if (!isMatch) {
|
|
317
|
+
const errorMessages = {
|
|
318
|
+
en: `Incorrect email or password: ${email}`,
|
|
319
|
+
fr: `Email ou mot de passe incorrect : ${email}`,
|
|
320
|
+
es: `Correo electr\xF3nico o contrase\xF1a incorrecta : ${email}`
|
|
321
|
+
};
|
|
322
|
+
import_logger.logger.error(errorMessages.en);
|
|
323
|
+
const randomNumber = Math.floor(Math.random() * 1e3) + 1e3;
|
|
324
|
+
await new Promise((resolve) => setTimeout(resolve, randomNumber));
|
|
325
|
+
return { user: null, error: (0, import_express_intlayer.t)(errorMessages) };
|
|
326
|
+
}
|
|
327
|
+
return { user };
|
|
328
|
+
};
|
|
329
|
+
const hashUserPassword = async (userWithPasswordNotHashed) => {
|
|
330
|
+
const { password, ...user } = userWithPasswordNotHashed;
|
|
331
|
+
if (!password) {
|
|
332
|
+
throw new import_errors.GenericError("USER_PASSWORD_NOT_DEFINED", { user });
|
|
333
|
+
}
|
|
334
|
+
const userProvider = formatUserProviderUpdate("email", user, {
|
|
335
|
+
passwordHash: await (0, import_bcrypt.hash)(password, await (0, import_bcrypt.genSalt)()),
|
|
336
|
+
secret: generateSecret(35)
|
|
337
|
+
});
|
|
338
|
+
return { ...user, provider: userProvider };
|
|
339
|
+
};
|
|
340
|
+
const changeUserPassword = async (userId, oldPassword, newPassword) => {
|
|
341
|
+
const user = await (0, import_user2.getUserById)(userId);
|
|
342
|
+
if (!user) {
|
|
343
|
+
throw new import_errors.GenericError("USER_NOT_FOUND", { userId });
|
|
344
|
+
}
|
|
345
|
+
const { email } = user;
|
|
346
|
+
await testUserPassword(email, oldPassword);
|
|
347
|
+
const updatedUser = await updateUserProvider(userId, "email", {
|
|
348
|
+
passwordHash: await (0, import_bcrypt.hash)(newPassword, await (0, import_bcrypt.genSalt)())
|
|
349
|
+
});
|
|
350
|
+
return updatedUser;
|
|
351
|
+
};
|
|
352
|
+
const resetPassword = async (userId, password) => {
|
|
353
|
+
const user = await (0, import_user2.getUserById)(userId);
|
|
354
|
+
if (!user) {
|
|
355
|
+
throw new import_errors.GenericError("USER_NOT_FOUND", { userId });
|
|
356
|
+
}
|
|
357
|
+
const updatedUser = await updateUserProvider(userId, "email", {
|
|
358
|
+
passwordHash: await (0, import_bcrypt.hash)(password, await (0, import_bcrypt.genSalt)())
|
|
359
|
+
});
|
|
360
|
+
return updatedUser;
|
|
361
|
+
};
|
|
362
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
363
|
+
0 && (module.exports = {
|
|
364
|
+
activateUser,
|
|
365
|
+
addSession,
|
|
366
|
+
addUserProvider,
|
|
367
|
+
changeUserPassword,
|
|
368
|
+
clearOrganizationAuth,
|
|
369
|
+
clearProjectAuth,
|
|
370
|
+
clearUserAuth,
|
|
371
|
+
formatUserProviderUpdate,
|
|
372
|
+
generateSecret,
|
|
373
|
+
getUserProvider,
|
|
374
|
+
hashUserPassword,
|
|
375
|
+
removeSession,
|
|
376
|
+
removeUserProvider,
|
|
377
|
+
requestPasswordReset,
|
|
378
|
+
resetPassword,
|
|
379
|
+
resetUserPassword,
|
|
380
|
+
setOrganizationAuth,
|
|
381
|
+
setProjectAuth,
|
|
382
|
+
setUserAuth,
|
|
383
|
+
testUserPassword,
|
|
384
|
+
updateUserProvider
|
|
385
|
+
});
|
|
386
|
+
//# sourceMappingURL=sessionAuth.service.cjs.map
|