@intlayer/backend 5.6.0 → 5.7.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/README.md +3 -0
- package/dist/cjs/controllers/ai.controller.cjs +10 -7
- package/dist/cjs/controllers/ai.controller.cjs.map +1 -1
- package/dist/cjs/controllers/dictionary.controller.cjs +50 -58
- package/dist/cjs/controllers/dictionary.controller.cjs.map +1 -1
- package/dist/cjs/controllers/eventListener.controller.cjs +2 -18
- package/dist/cjs/controllers/eventListener.controller.cjs.map +1 -1
- package/dist/cjs/controllers/newsletter.controller.cjs +38 -3
- package/dist/cjs/controllers/newsletter.controller.cjs.map +1 -1
- package/dist/cjs/controllers/oAuth2.controller.cjs +3 -3
- package/dist/cjs/controllers/oAuth2.controller.cjs.map +1 -1
- package/dist/cjs/controllers/organization.controller.cjs +92 -106
- package/dist/cjs/controllers/organization.controller.cjs.map +1 -1
- package/dist/cjs/controllers/project.controller.cjs +81 -83
- package/dist/cjs/controllers/project.controller.cjs.map +1 -1
- package/dist/cjs/controllers/projectAccessKey.controller.cjs +30 -24
- package/dist/cjs/controllers/projectAccessKey.controller.cjs.map +1 -1
- package/dist/cjs/controllers/search.controller.cjs.map +1 -1
- package/dist/cjs/controllers/stripe.controller.cjs +4 -25
- package/dist/cjs/controllers/stripe.controller.cjs.map +1 -1
- package/dist/cjs/controllers/tag.controller.cjs +27 -16
- package/dist/cjs/controllers/tag.controller.cjs.map +1 -1
- package/dist/cjs/controllers/user.controller.cjs +88 -24
- package/dist/cjs/controllers/user.controller.cjs.map +1 -1
- package/dist/cjs/emails/InviteUserEmail.cjs +30 -12
- package/dist/cjs/emails/InviteUserEmail.cjs.map +1 -1
- package/dist/cjs/emails/OAuthTokenCreatedEmail.cjs +266 -0
- package/dist/cjs/emails/OAuthTokenCreatedEmail.cjs.map +1 -0
- package/dist/cjs/emails/ResetUserPassword.cjs +27 -15
- package/dist/cjs/emails/ResetUserPassword.cjs.map +1 -1
- package/dist/cjs/emails/ValidateUserEmail.cjs +27 -36
- package/dist/cjs/emails/ValidateUserEmail.cjs.map +1 -1
- package/dist/cjs/emails/Welcome.cjs +27 -15
- package/dist/cjs/emails/Welcome.cjs.map +1 -1
- package/dist/cjs/emails/index.cjs +7 -5
- package/dist/cjs/emails/index.cjs.map +1 -1
- package/dist/cjs/export.cjs +2 -5
- package/dist/cjs/export.cjs.map +1 -1
- package/dist/cjs/index.cjs +61 -111
- package/dist/cjs/index.cjs.map +1 -1
- package/dist/cjs/middlewares/oAuth2.middleware.cjs +26 -38
- package/dist/cjs/middlewares/oAuth2.middleware.cjs.map +1 -1
- package/dist/cjs/middlewares/request.middleware.cjs.map +1 -1
- package/dist/cjs/middlewares/sessionAuth.middleware.cjs +17 -138
- package/dist/cjs/middlewares/sessionAuth.middleware.cjs.map +1 -1
- package/dist/cjs/models/dictionary.model.cjs.map +1 -1
- package/dist/cjs/models/discussion.model.cjs.map +1 -1
- package/dist/cjs/models/oAuth2.model.cjs +4 -1
- package/dist/cjs/models/oAuth2.model.cjs.map +1 -1
- package/dist/cjs/models/organization.model.cjs +1 -4
- package/dist/cjs/models/organization.model.cjs.map +1 -1
- package/dist/cjs/models/project.model.cjs +4 -1
- package/dist/cjs/models/project.model.cjs.map +1 -1
- package/dist/cjs/models/session.model.cjs +34 -0
- package/dist/cjs/models/session.model.cjs.map +1 -0
- package/dist/cjs/models/tag.model.cjs.map +1 -1
- package/dist/cjs/models/user.model.cjs.map +1 -1
- package/dist/cjs/routes/ai.routes.cjs +3 -1
- package/dist/cjs/routes/ai.routes.cjs.map +1 -1
- package/dist/cjs/routes/dictionary.routes.cjs.map +1 -1
- package/dist/cjs/routes/eventListener.routes.cjs +1 -1
- package/dist/cjs/routes/eventListener.routes.cjs.map +1 -1
- package/dist/cjs/routes/newsletter.routes.cjs.map +1 -1
- package/dist/cjs/routes/organization.routes.cjs +8 -8
- package/dist/cjs/routes/organization.routes.cjs.map +1 -1
- package/dist/cjs/routes/project.routes.cjs +23 -14
- package/dist/cjs/routes/project.routes.cjs.map +1 -1
- package/dist/cjs/routes/search.routes.cjs.map +1 -1
- package/dist/cjs/routes/stripe.routes.cjs.map +1 -1
- package/dist/cjs/routes/tags.routes.cjs +4 -4
- package/dist/cjs/routes/tags.routes.cjs.map +1 -1
- package/dist/cjs/routes/user.routes.cjs +12 -12
- package/dist/cjs/routes/user.routes.cjs.map +1 -1
- package/dist/cjs/schemas/dictionary.schema.cjs +18 -1
- package/dist/cjs/schemas/dictionary.schema.cjs.map +1 -1
- package/dist/cjs/schemas/discussion.schema.cjs +18 -1
- package/dist/cjs/schemas/discussion.schema.cjs.map +1 -1
- package/dist/cjs/schemas/oAuth2.schema.cjs +18 -1
- package/dist/cjs/schemas/oAuth2.schema.cjs.map +1 -1
- package/dist/cjs/schemas/organization.schema.cjs +21 -1
- package/dist/cjs/schemas/organization.schema.cjs.map +1 -1
- package/dist/cjs/schemas/plans.schema.cjs +18 -1
- package/dist/cjs/schemas/plans.schema.cjs.map +1 -1
- package/dist/cjs/schemas/project.schema.cjs +19 -14
- package/dist/cjs/schemas/project.schema.cjs.map +1 -1
- package/dist/cjs/schemas/session.schema.cjs +63 -0
- package/dist/cjs/schemas/session.schema.cjs.map +1 -0
- package/dist/cjs/schemas/tag.schema.cjs +18 -1
- package/dist/cjs/schemas/tag.schema.cjs.map +1 -1
- package/dist/cjs/schemas/user.schema.cjs +18 -48
- package/dist/cjs/schemas/user.schema.cjs.map +1 -1
- package/dist/cjs/services/dictionary.service.cjs +6 -5
- package/dist/cjs/services/dictionary.service.cjs.map +1 -1
- package/dist/cjs/services/email.service.cjs +13 -0
- package/dist/cjs/services/email.service.cjs.map +1 -1
- package/dist/cjs/services/oAuth2.service.cjs +49 -10
- package/dist/cjs/services/oAuth2.service.cjs.map +1 -1
- package/dist/cjs/services/organization.service.cjs +16 -15
- package/dist/cjs/services/organization.service.cjs.map +1 -1
- package/dist/cjs/services/project.service.cjs +1 -1
- package/dist/cjs/services/project.service.cjs.map +1 -1
- package/dist/cjs/services/projectAccessKey.service.cjs +17 -33
- package/dist/cjs/services/projectAccessKey.service.cjs.map +1 -1
- package/dist/cjs/services/subscription.service.cjs +10 -10
- package/dist/cjs/services/subscription.service.cjs.map +1 -1
- package/dist/cjs/services/tag.service.cjs.map +1 -1
- package/dist/cjs/services/user.service.cjs +2 -42
- package/dist/cjs/services/user.service.cjs.map +1 -1
- package/dist/cjs/types/dictionary.types.cjs.map +1 -1
- package/dist/cjs/types/discussion.types.cjs.map +1 -1
- package/dist/cjs/types/oAuth2.types.cjs.map +1 -1
- package/dist/cjs/types/organization.types.cjs.map +1 -1
- package/dist/cjs/types/plan.types.cjs.map +1 -1
- package/dist/cjs/types/project.types.cjs.map +1 -1
- package/dist/cjs/types/session.types.cjs.map +1 -1
- package/dist/cjs/types/tag.types.cjs.map +1 -1
- package/dist/cjs/types/user.types.cjs.map +1 -1
- package/dist/cjs/utils/AI/aiSdk.cjs.map +1 -1
- package/dist/cjs/utils/AI/askDocQuestion/askDocQuestion.cjs +14 -9
- package/dist/cjs/utils/AI/askDocQuestion/askDocQuestion.cjs.map +1 -1
- package/dist/cjs/utils/AI/autocomplete/PROMPT.md +18 -2
- package/dist/cjs/utils/AI/autocomplete/index.cjs +8 -5
- package/dist/cjs/utils/AI/autocomplete/index.cjs.map +1 -1
- package/dist/cjs/utils/access.cjs +2 -0
- package/dist/cjs/utils/access.cjs.map +1 -0
- package/dist/cjs/utils/accessControl.cjs +7 -0
- package/dist/cjs/utils/accessControl.cjs.map +1 -1
- package/dist/cjs/utils/auth/getAuth.cjs +248 -0
- package/dist/cjs/utils/auth/getAuth.cjs.map +1 -0
- package/dist/cjs/utils/cors.cjs +55 -0
- package/dist/cjs/utils/cors.cjs.map +1 -0
- package/dist/cjs/utils/ensureMongoDocumentToObject.cjs.map +1 -1
- package/dist/cjs/utils/errors/ErrorHandler.cjs +2 -2
- package/dist/cjs/utils/errors/ErrorHandler.cjs.map +1 -1
- package/dist/cjs/utils/errors/errorCodes.cjs +114 -153
- package/dist/cjs/utils/errors/errorCodes.cjs.map +1 -1
- package/dist/cjs/utils/filtersAndPagination/getOrganizationFiltersAndPagination.cjs.map +1 -1
- package/dist/cjs/utils/filtersAndPagination/getProjectFiltersAndPagination.cjs.map +1 -1
- package/dist/cjs/utils/filtersAndPagination/getTagFiltersAndPagination.cjs.map +1 -1
- package/dist/cjs/utils/filtersAndPagination/getUserFiltersAndPagination.cjs +1 -1
- package/dist/cjs/utils/filtersAndPagination/getUserFiltersAndPagination.cjs.map +1 -1
- package/dist/cjs/utils/mapper/dictionary.cjs.map +1 -1
- package/dist/cjs/utils/mapper/organization.cjs +10 -8
- package/dist/cjs/utils/mapper/organization.cjs.map +1 -1
- package/dist/cjs/utils/mapper/project.cjs +5 -18
- package/dist/cjs/utils/mapper/project.cjs.map +1 -1
- package/dist/cjs/utils/mapper/tag.cjs +4 -2
- package/dist/cjs/utils/mapper/tag.cjs.map +1 -1
- package/dist/cjs/utils/mapper/user.cjs +6 -3
- package/dist/cjs/utils/mapper/user.cjs.map +1 -1
- package/dist/cjs/utils/mergeFunctionTypes.cjs +17 -0
- package/dist/cjs/utils/mergeFunctionTypes.cjs.map +1 -0
- package/dist/cjs/utils/mongoDB/connectDB.cjs +3 -1
- package/dist/cjs/utils/mongoDB/connectDB.cjs.map +1 -1
- package/dist/cjs/utils/mongoDB/types.cjs +17 -0
- package/dist/cjs/utils/mongoDB/types.cjs.map +1 -0
- package/dist/cjs/utils/oAuth2.cjs.map +1 -1
- package/dist/cjs/utils/permissions.cjs +166 -0
- package/dist/cjs/utils/permissions.cjs.map +1 -0
- package/dist/cjs/utils/rateLimiter.cjs +88 -0
- package/dist/cjs/utils/rateLimiter.cjs.map +1 -0
- package/dist/esm/controllers/ai.controller.mjs +10 -7
- package/dist/esm/controllers/ai.controller.mjs.map +1 -1
- package/dist/esm/controllers/dictionary.controller.mjs +50 -58
- package/dist/esm/controllers/dictionary.controller.mjs.map +1 -1
- package/dist/esm/controllers/eventListener.controller.mjs +2 -8
- package/dist/esm/controllers/eventListener.controller.mjs.map +1 -1
- package/dist/esm/controllers/newsletter.controller.mjs +38 -3
- package/dist/esm/controllers/newsletter.controller.mjs.map +1 -1
- package/dist/esm/controllers/oAuth2.controller.mjs +2 -2
- package/dist/esm/controllers/oAuth2.controller.mjs.map +1 -1
- package/dist/esm/controllers/organization.controller.mjs +95 -106
- package/dist/esm/controllers/organization.controller.mjs.map +1 -1
- package/dist/esm/controllers/project.controller.mjs +81 -83
- package/dist/esm/controllers/project.controller.mjs.map +1 -1
- package/dist/esm/controllers/projectAccessKey.controller.mjs +30 -24
- package/dist/esm/controllers/projectAccessKey.controller.mjs.map +1 -1
- package/dist/esm/controllers/search.controller.mjs.map +1 -1
- package/dist/esm/controllers/stripe.controller.mjs +4 -25
- package/dist/esm/controllers/stripe.controller.mjs.map +1 -1
- package/dist/esm/controllers/tag.controller.mjs +27 -16
- package/dist/esm/controllers/tag.controller.mjs.map +1 -1
- package/dist/esm/controllers/user.controller.mjs +85 -22
- package/dist/esm/controllers/user.controller.mjs.map +1 -1
- package/dist/esm/emails/InviteUserEmail.mjs +32 -14
- package/dist/esm/emails/InviteUserEmail.mjs.map +1 -1
- package/dist/esm/emails/OAuthTokenCreatedEmail.mjs +254 -0
- package/dist/esm/emails/OAuthTokenCreatedEmail.mjs.map +1 -0
- package/dist/esm/emails/ResetUserPassword.mjs +29 -17
- package/dist/esm/emails/ResetUserPassword.mjs.map +1 -1
- package/dist/esm/emails/ValidateUserEmail.mjs +29 -38
- package/dist/esm/emails/ValidateUserEmail.mjs.map +1 -1
- package/dist/esm/emails/Welcome.mjs +29 -17
- package/dist/esm/emails/Welcome.mjs.map +1 -1
- package/dist/esm/emails/index.mjs +3 -2
- package/dist/esm/emails/index.mjs.map +1 -1
- package/dist/esm/export.mjs +1 -3
- package/dist/esm/export.mjs.map +1 -1
- package/dist/esm/index.mjs +60 -111
- package/dist/esm/index.mjs.map +1 -1
- package/dist/esm/middlewares/oAuth2.middleware.mjs +27 -36
- package/dist/esm/middlewares/oAuth2.middleware.mjs.map +1 -1
- package/dist/esm/middlewares/request.middleware.mjs.map +1 -1
- package/dist/esm/middlewares/sessionAuth.middleware.mjs +16 -127
- package/dist/esm/middlewares/sessionAuth.middleware.mjs.map +1 -1
- package/dist/esm/models/dictionary.model.mjs.map +1 -1
- package/dist/esm/models/discussion.model.mjs.map +1 -1
- package/dist/esm/models/oAuth2.model.mjs +4 -1
- package/dist/esm/models/oAuth2.model.mjs.map +1 -1
- package/dist/esm/models/organization.model.mjs +1 -4
- package/dist/esm/models/organization.model.mjs.map +1 -1
- package/dist/esm/models/project.model.mjs +4 -1
- package/dist/esm/models/project.model.mjs.map +1 -1
- package/dist/esm/models/session.model.mjs +10 -0
- package/dist/esm/models/session.model.mjs.map +1 -0
- package/dist/esm/models/tag.model.mjs.map +1 -1
- package/dist/esm/models/user.model.mjs.map +1 -1
- package/dist/esm/routes/ai.routes.mjs +3 -1
- package/dist/esm/routes/ai.routes.mjs.map +1 -1
- package/dist/esm/routes/dictionary.routes.mjs.map +1 -1
- package/dist/esm/routes/eventListener.routes.mjs +1 -1
- package/dist/esm/routes/eventListener.routes.mjs.map +1 -1
- package/dist/esm/routes/newsletter.routes.mjs.map +1 -1
- package/dist/esm/routes/organization.routes.mjs +8 -8
- package/dist/esm/routes/organization.routes.mjs.map +1 -1
- package/dist/esm/routes/project.routes.mjs +23 -14
- package/dist/esm/routes/project.routes.mjs.map +1 -1
- package/dist/esm/routes/search.routes.mjs.map +1 -1
- package/dist/esm/routes/stripe.routes.mjs.map +1 -1
- package/dist/esm/routes/tags.routes.mjs +4 -4
- package/dist/esm/routes/tags.routes.mjs.map +1 -1
- package/dist/esm/routes/user.routes.mjs +14 -14
- package/dist/esm/routes/user.routes.mjs.map +1 -1
- package/dist/esm/schemas/dictionary.schema.mjs +18 -1
- package/dist/esm/schemas/dictionary.schema.mjs.map +1 -1
- package/dist/esm/schemas/discussion.schema.mjs +18 -1
- package/dist/esm/schemas/discussion.schema.mjs.map +1 -1
- package/dist/esm/schemas/oAuth2.schema.mjs +18 -1
- package/dist/esm/schemas/oAuth2.schema.mjs.map +1 -1
- package/dist/esm/schemas/organization.schema.mjs +21 -1
- package/dist/esm/schemas/organization.schema.mjs.map +1 -1
- package/dist/esm/schemas/plans.schema.mjs +18 -1
- package/dist/esm/schemas/plans.schema.mjs.map +1 -1
- package/dist/esm/schemas/project.schema.mjs +21 -15
- package/dist/esm/schemas/project.schema.mjs.map +1 -1
- package/dist/esm/schemas/session.schema.mjs +39 -0
- package/dist/esm/schemas/session.schema.mjs.map +1 -0
- package/dist/esm/schemas/tag.schema.mjs +21 -4
- package/dist/esm/schemas/tag.schema.mjs.map +1 -1
- package/dist/esm/schemas/user.schema.mjs +18 -48
- package/dist/esm/schemas/user.schema.mjs.map +1 -1
- package/dist/esm/services/dictionary.service.mjs +6 -5
- package/dist/esm/services/dictionary.service.mjs.map +1 -1
- package/dist/esm/services/email.service.mjs +33 -16
- package/dist/esm/services/email.service.mjs.map +1 -1
- package/dist/esm/services/oAuth2.service.mjs +47 -10
- package/dist/esm/services/oAuth2.service.mjs.map +1 -1
- package/dist/esm/services/organization.service.mjs +16 -14
- package/dist/esm/services/organization.service.mjs.map +1 -1
- package/dist/esm/services/project.service.mjs +1 -1
- package/dist/esm/services/project.service.mjs.map +1 -1
- package/dist/esm/services/projectAccessKey.service.mjs +15 -31
- package/dist/esm/services/projectAccessKey.service.mjs.map +1 -1
- package/dist/esm/services/subscription.service.mjs +10 -10
- package/dist/esm/services/subscription.service.mjs.map +1 -1
- package/dist/esm/services/tag.service.mjs.map +1 -1
- package/dist/esm/services/user.service.mjs +2 -40
- package/dist/esm/services/user.service.mjs.map +1 -1
- package/dist/esm/types/user.types.mjs.map +1 -1
- package/dist/esm/utils/AI/aiSdk.mjs.map +1 -1
- package/dist/esm/utils/AI/askDocQuestion/askDocQuestion.mjs +14 -9
- package/dist/esm/utils/AI/askDocQuestion/askDocQuestion.mjs.map +1 -1
- package/dist/esm/utils/AI/autocomplete/PROMPT.md +18 -2
- package/dist/esm/utils/AI/autocomplete/index.mjs +8 -5
- package/dist/esm/utils/AI/autocomplete/index.mjs.map +1 -1
- package/dist/esm/utils/access.mjs +1 -0
- package/dist/esm/utils/access.mjs.map +1 -0
- package/dist/esm/utils/accessControl.mjs +7 -0
- package/dist/esm/utils/accessControl.mjs.map +1 -1
- package/dist/esm/utils/auth/getAuth.mjs +227 -0
- package/dist/esm/utils/auth/getAuth.mjs.map +1 -0
- package/dist/esm/utils/cors.mjs +31 -0
- package/dist/esm/utils/cors.mjs.map +1 -0
- package/dist/esm/utils/ensureMongoDocumentToObject.mjs.map +1 -1
- package/dist/esm/utils/errors/ErrorHandler.mjs +2 -2
- package/dist/esm/utils/errors/ErrorHandler.mjs.map +1 -1
- package/dist/esm/utils/errors/errorCodes.mjs +114 -153
- package/dist/esm/utils/errors/errorCodes.mjs.map +1 -1
- package/dist/esm/utils/filtersAndPagination/getOrganizationFiltersAndPagination.mjs.map +1 -1
- package/dist/esm/utils/filtersAndPagination/getProjectFiltersAndPagination.mjs.map +1 -1
- package/dist/esm/utils/filtersAndPagination/getTagFiltersAndPagination.mjs.map +1 -1
- package/dist/esm/utils/filtersAndPagination/getUserFiltersAndPagination.mjs +1 -1
- package/dist/esm/utils/filtersAndPagination/getUserFiltersAndPagination.mjs.map +1 -1
- package/dist/esm/utils/mapper/dictionary.mjs.map +1 -1
- package/dist/esm/utils/mapper/organization.mjs +8 -7
- package/dist/esm/utils/mapper/organization.mjs.map +1 -1
- package/dist/esm/utils/mapper/project.mjs +5 -18
- package/dist/esm/utils/mapper/project.mjs.map +1 -1
- package/dist/esm/utils/mapper/tag.mjs +4 -2
- package/dist/esm/utils/mapper/tag.mjs.map +1 -1
- package/dist/esm/utils/mapper/user.mjs +6 -3
- package/dist/esm/utils/mapper/user.mjs.map +1 -1
- package/dist/esm/utils/mergeFunctionTypes.mjs +1 -0
- package/dist/esm/utils/mergeFunctionTypes.mjs.map +1 -0
- package/dist/esm/utils/mongoDB/connectDB.mjs +3 -1
- package/dist/esm/utils/mongoDB/connectDB.mjs.map +1 -1
- package/dist/esm/utils/mongoDB/types.mjs +1 -0
- package/dist/esm/utils/mongoDB/types.mjs.map +1 -0
- package/dist/esm/utils/oAuth2.mjs +3 -3
- package/dist/esm/utils/oAuth2.mjs.map +1 -1
- package/dist/esm/utils/permissions.mjs +138 -0
- package/dist/esm/utils/permissions.mjs.map +1 -0
- package/dist/esm/utils/rateLimiter.mjs +53 -0
- package/dist/esm/utils/rateLimiter.mjs.map +1 -0
- package/dist/types/controllers/ai.controller.d.ts +12 -10
- package/dist/types/controllers/ai.controller.d.ts.map +1 -1
- package/dist/types/controllers/dictionary.controller.d.ts +8 -9
- package/dist/types/controllers/dictionary.controller.d.ts.map +1 -1
- package/dist/types/controllers/eventListener.controller.d.ts +2 -3
- package/dist/types/controllers/eventListener.controller.d.ts.map +1 -1
- package/dist/types/controllers/newsletter.controller.d.ts +5 -6
- package/dist/types/controllers/newsletter.controller.d.ts.map +1 -1
- package/dist/types/controllers/oAuth2.controller.d.ts +3 -3
- package/dist/types/controllers/oAuth2.controller.d.ts.map +1 -1
- package/dist/types/controllers/organization.controller.d.ts +22 -23
- package/dist/types/controllers/organization.controller.d.ts.map +1 -1
- package/dist/types/controllers/project.controller.d.ts +13 -14
- package/dist/types/controllers/project.controller.d.ts.map +1 -1
- package/dist/types/controllers/projectAccessKey.controller.d.ts +5 -6
- package/dist/types/controllers/projectAccessKey.controller.d.ts.map +1 -1
- package/dist/types/controllers/search.controller.d.ts +2 -3
- package/dist/types/controllers/search.controller.d.ts.map +1 -1
- package/dist/types/controllers/stripe.controller.d.ts +5 -6
- package/dist/types/controllers/stripe.controller.d.ts.map +1 -1
- package/dist/types/controllers/tag.controller.d.ts +9 -10
- package/dist/types/controllers/tag.controller.d.ts.map +1 -1
- package/dist/types/controllers/user.controller.d.ts +16 -19
- package/dist/types/controllers/user.controller.d.ts.map +1 -1
- package/dist/types/emails/InviteUserEmail.d.ts.map +1 -1
- package/dist/types/emails/OAuthTokenCreatedEmail.d.ts +21 -0
- package/dist/types/emails/OAuthTokenCreatedEmail.d.ts.map +1 -0
- package/dist/types/emails/ResetUserPassword.d.ts.map +1 -1
- package/dist/types/emails/Welcome.d.ts.map +1 -1
- package/dist/types/emails/index.d.ts +3 -2
- package/dist/types/emails/index.d.ts.map +1 -1
- package/dist/types/export.d.ts +2 -3
- package/dist/types/export.d.ts.map +1 -1
- package/dist/types/index.d.ts +1 -3
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/middlewares/oAuth2.middleware.d.ts +1 -2
- package/dist/types/middlewares/oAuth2.middleware.d.ts.map +1 -1
- package/dist/types/middlewares/request.middleware.d.ts +3 -3
- package/dist/types/middlewares/request.middleware.d.ts.map +1 -1
- package/dist/types/middlewares/sessionAuth.middleware.d.ts +3 -25
- package/dist/types/middlewares/sessionAuth.middleware.d.ts.map +1 -1
- package/dist/types/models/dictionary.model.d.ts +6 -5
- package/dist/types/models/dictionary.model.d.ts.map +1 -1
- package/dist/types/models/discussion.model.d.ts +7 -2
- package/dist/types/models/discussion.model.d.ts.map +1 -1
- package/dist/types/models/oAuth2.model.d.ts +3 -2
- package/dist/types/models/oAuth2.model.d.ts.map +1 -1
- package/dist/types/models/organization.model.d.ts +2 -12
- package/dist/types/models/organization.model.d.ts.map +1 -1
- package/dist/types/models/project.model.d.ts +2 -11
- package/dist/types/models/project.model.d.ts.map +1 -1
- package/dist/types/models/session.model.d.ts +3 -0
- package/dist/types/models/session.model.d.ts.map +1 -0
- package/dist/types/models/tag.model.d.ts.map +1 -1
- package/dist/types/models/user.model.d.ts.map +1 -1
- package/dist/types/routes/ai.routes.d.ts.map +1 -1
- package/dist/types/routes/organization.routes.d.ts +4 -4
- package/dist/types/routes/project.routes.d.ts +4 -4
- package/dist/types/routes/project.routes.d.ts.map +1 -1
- package/dist/types/routes/tags.routes.d.ts +2 -2
- package/dist/types/routes/user.routes.d.ts +6 -7
- package/dist/types/routes/user.routes.d.ts.map +1 -1
- package/dist/types/schemas/dictionary.schema.d.ts +6 -8
- package/dist/types/schemas/dictionary.schema.d.ts.map +1 -1
- package/dist/types/schemas/discussion.schema.d.ts +7 -5
- package/dist/types/schemas/discussion.schema.d.ts.map +1 -1
- package/dist/types/schemas/oAuth2.schema.d.ts +4 -3
- package/dist/types/schemas/oAuth2.schema.d.ts.map +1 -1
- package/dist/types/schemas/organization.schema.d.ts +6 -10
- package/dist/types/schemas/organization.schema.d.ts.map +1 -1
- package/dist/types/schemas/plans.schema.d.ts +6 -8
- package/dist/types/schemas/plans.schema.d.ts.map +1 -1
- package/dist/types/schemas/project.schema.d.ts +5 -17
- package/dist/types/schemas/project.schema.d.ts.map +1 -1
- package/dist/types/schemas/session.schema.d.ts +14 -0
- package/dist/types/schemas/session.schema.d.ts.map +1 -0
- package/dist/types/schemas/tag.schema.d.ts +6 -8
- package/dist/types/schemas/tag.schema.d.ts.map +1 -1
- package/dist/types/schemas/user.schema.d.ts +7 -5
- package/dist/types/schemas/user.schema.d.ts.map +1 -1
- package/dist/types/services/dictionary.service.d.ts +9 -9
- package/dist/types/services/dictionary.service.d.ts.map +1 -1
- package/dist/types/services/email.service.d.ts +4 -0
- package/dist/types/services/email.service.d.ts.map +1 -1
- package/dist/types/services/oAuth2.service.d.ts +23 -14
- package/dist/types/services/oAuth2.service.d.ts.map +1 -1
- package/dist/types/services/organization.service.d.ts +6 -12
- package/dist/types/services/organization.service.d.ts.map +1 -1
- package/dist/types/services/project.service.d.ts +5 -5
- package/dist/types/services/project.service.d.ts.map +1 -1
- package/dist/types/services/projectAccessKey.service.d.ts +5 -5
- package/dist/types/services/projectAccessKey.service.d.ts.map +1 -1
- package/dist/types/services/subscription.service.d.ts +1 -1
- package/dist/types/services/subscription.service.d.ts.map +1 -1
- package/dist/types/services/tag.service.d.ts +6 -6
- package/dist/types/services/tag.service.d.ts.map +1 -1
- package/dist/types/services/user.service.d.ts +7 -21
- package/dist/types/services/user.service.d.ts.map +1 -1
- package/dist/types/types/dictionary.types.d.ts +11 -9
- package/dist/types/types/dictionary.types.d.ts.map +1 -1
- package/dist/types/types/discussion.types.d.ts +5 -2
- package/dist/types/types/discussion.types.d.ts.map +1 -1
- package/dist/types/types/oAuth2.types.d.ts +5 -2
- package/dist/types/types/oAuth2.types.d.ts.map +1 -1
- package/dist/types/types/organization.types.d.ts +11 -8
- package/dist/types/types/organization.types.d.ts.map +1 -1
- package/dist/types/types/plan.types.d.ts +6 -3
- package/dist/types/types/plan.types.d.ts.map +1 -1
- package/dist/types/types/project.types.d.ts +25 -25
- package/dist/types/types/project.types.d.ts.map +1 -1
- package/dist/types/types/session.types.d.ts +31 -17
- package/dist/types/types/session.types.d.ts.map +1 -1
- package/dist/types/types/tag.types.d.ts +8 -6
- package/dist/types/types/tag.types.d.ts.map +1 -1
- package/dist/types/types/user.types.d.ts +14 -21
- package/dist/types/types/user.types.d.ts.map +1 -1
- package/dist/types/utils/AI/aiSdk.d.ts +2 -2
- package/dist/types/utils/AI/aiSdk.d.ts.map +1 -1
- package/dist/types/utils/AI/askDocQuestion/askDocQuestion.d.ts.map +1 -1
- package/dist/types/utils/AI/autocomplete/index.d.ts +4 -1
- package/dist/types/utils/AI/autocomplete/index.d.ts.map +1 -1
- package/dist/types/utils/access.d.ts +1 -0
- package/dist/types/utils/access.d.ts.map +1 -0
- package/dist/types/utils/accessControl.d.ts +9 -9
- package/dist/types/utils/accessControl.d.ts.map +1 -1
- package/dist/types/utils/auth/getAuth.d.ts +7 -0
- package/dist/types/utils/auth/getAuth.d.ts.map +1 -0
- package/dist/types/utils/cors.d.ts +3 -0
- package/dist/types/utils/cors.d.ts.map +1 -0
- package/dist/types/utils/ensureMongoDocumentToObject.d.ts +2 -2
- package/dist/types/utils/ensureMongoDocumentToObject.d.ts.map +1 -1
- package/dist/types/utils/errors/ErrorHandler.d.ts +1 -1
- package/dist/types/utils/errors/ErrorHandler.d.ts.map +1 -1
- package/dist/types/utils/errors/errorCodes.d.ts +57 -96
- package/dist/types/utils/errors/errorCodes.d.ts.map +1 -1
- package/dist/types/utils/filtersAndPagination/getOrganizationFiltersAndPagination.d.ts +1 -1
- package/dist/types/utils/filtersAndPagination/getOrganizationFiltersAndPagination.d.ts.map +1 -1
- package/dist/types/utils/filtersAndPagination/getProjectFiltersAndPagination.d.ts +1 -1
- package/dist/types/utils/filtersAndPagination/getProjectFiltersAndPagination.d.ts.map +1 -1
- package/dist/types/utils/filtersAndPagination/getTagFiltersAndPagination.d.ts +1 -1
- package/dist/types/utils/filtersAndPagination/getTagFiltersAndPagination.d.ts.map +1 -1
- package/dist/types/utils/filtersAndPagination/getUserFiltersAndPagination.d.ts +1 -1
- package/dist/types/utils/filtersAndPagination/getUserFiltersAndPagination.d.ts.map +1 -1
- package/dist/types/utils/mapper/dictionary.d.ts +1 -1
- package/dist/types/utils/mapper/dictionary.d.ts.map +1 -1
- package/dist/types/utils/mapper/organization.d.ts +3 -2
- package/dist/types/utils/mapper/organization.d.ts.map +1 -1
- package/dist/types/utils/mapper/project.d.ts +4 -5
- package/dist/types/utils/mapper/project.d.ts.map +1 -1
- package/dist/types/utils/mapper/tag.d.ts +1 -1
- package/dist/types/utils/mapper/tag.d.ts.map +1 -1
- package/dist/types/utils/mapper/user.d.ts +2 -2
- package/dist/types/utils/mapper/user.d.ts.map +1 -1
- package/dist/types/utils/mergeFunctionTypes.d.ts +18 -0
- package/dist/types/utils/mergeFunctionTypes.d.ts.map +1 -0
- package/dist/types/utils/mongoDB/connectDB.d.ts +1 -1
- package/dist/types/utils/mongoDB/connectDB.d.ts.map +1 -1
- package/dist/types/utils/mongoDB/types.d.ts +11 -0
- package/dist/types/utils/mongoDB/types.d.ts.map +1 -0
- package/dist/types/utils/permissions.d.ts +115 -0
- package/dist/types/utils/permissions.d.ts.map +1 -0
- package/dist/types/utils/rateLimiter.d.ts +4 -0
- package/dist/types/utils/rateLimiter.d.ts.map +1 -0
- package/package.json +15 -15
- package/dist/cjs/controllers/sessionAuth.controller.cjs +0 -839
- package/dist/cjs/controllers/sessionAuth.controller.cjs.map +0 -1
- package/dist/cjs/routes/sessionAuth.routes.cjs +0 -154
- package/dist/cjs/routes/sessionAuth.routes.cjs.map +0 -1
- package/dist/cjs/services/sessionAuth.service.cjs +0 -385
- package/dist/cjs/services/sessionAuth.service.cjs.map +0 -1
- package/dist/cjs/utils/CSRF.cjs +0 -50
- package/dist/cjs/utils/CSRF.cjs.map +0 -1
- package/dist/cjs/utils/cookies.cjs +0 -59
- package/dist/cjs/utils/cookies.cjs.map +0 -1
- package/dist/esm/controllers/sessionAuth.controller.mjs +0 -790
- package/dist/esm/controllers/sessionAuth.controller.mjs.map +0 -1
- package/dist/esm/routes/sessionAuth.routes.mjs +0 -142
- package/dist/esm/routes/sessionAuth.routes.mjs.map +0 -1
- package/dist/esm/services/sessionAuth.service.mjs +0 -337
- package/dist/esm/services/sessionAuth.service.mjs.map +0 -1
- package/dist/esm/utils/CSRF.mjs +0 -24
- package/dist/esm/utils/CSRF.mjs.map +0 -1
- package/dist/esm/utils/cookies.mjs +0 -32
- package/dist/esm/utils/cookies.mjs.map +0 -1
- package/dist/types/controllers/sessionAuth.controller.d.ts +0 -140
- package/dist/types/controllers/sessionAuth.controller.d.ts.map +0 -1
- package/dist/types/routes/sessionAuth.routes.d.ts +0 -77
- package/dist/types/routes/sessionAuth.routes.d.ts.map +0 -1
- package/dist/types/services/sessionAuth.service.d.ts +0 -141
- package/dist/types/services/sessionAuth.service.d.ts.map +0 -1
- package/dist/types/utils/CSRF.d.ts +0 -3
- package/dist/types/utils/CSRF.d.ts.map +0 -1
- package/dist/types/utils/cookies.d.ts +0 -12
- package/dist/types/utils/cookies.d.ts.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/controllers/sessionAuth.controller.ts"],"sourcesContent":["import crypto from 'crypto';\nimport { logger } from '@logger';\nimport type { ResponseWithInformation } from '@middlewares/sessionAuth.middleware';\nimport { getSessionAuthRoutes } from '@routes/sessionAuth.routes';\nimport { sendEmail } from '@services/email.service';\nimport * as sessionAuthService from '@services/sessionAuth.service';\nimport * as userService from '@services/user.service';\nimport { generateToken } from '@utils/CSRF';\nimport { type AppError, ErrorHandler, GenericError } from '@utils/errors';\nimport { HttpStatusCodes } from '@utils/httpStatusCodes';\nimport { mapOrganizationToAPI } from '@utils/mapper/organization';\nimport { mapProjectToAPI } from '@utils/mapper/project';\nimport { mapUserToAPI } from '@utils/mapper/user';\nimport { formatResponse, type ResponseData } from '@utils/responseData';\nimport type { NextFunction, Request, Response } from 'express';\nimport { t } from 'express-intlayer';\nimport { Types } from 'mongoose';\nimport { v4 as uuidv4 } from 'uuid';\nimport type { OrganizationAPI } from '@/types/organization.types';\nimport type { ProjectAPI } from '@/types/project.types';\nimport type {\n Session,\n GithubSessionProvider,\n GoogleSessionProvider,\n} from '@/types/session.types';\nimport type { User, UserAPI, UserData } from '@/types/user.types';\n\nexport type CSRFTokenData = { csrf_token: string };\nexport type SetCSRFTokenResult = ResponseData<CSRFTokenData>;\n\nexport const setCSRFToken = (\n req: Request,\n res: Response<SetCSRFTokenResult>,\n _next: NextFunction\n) => {\n const csrf_token = generateToken(req, res);\n\n const responseData = formatResponse<CSRFTokenData>({\n data: { csrf_token },\n });\n\n res.locals.csrf_token = csrf_token;\n res.json(responseData);\n};\n\nexport type RegisterBody = { email: string; password?: string };\nexport type RegisterQuery = { callBack_url?: string };\nexport type RegisterResult = ResponseData<UserAPI>;\n\n/**\n * Handles user registration.\n */\nexport const registerEmailPassword = async (\n req: Request<any, any, RegisterBody, RegisterQuery>,\n res: ResponseWithInformation<RegisterResult>,\n _next: NextFunction\n): Promise<void> => {\n const { user } = res.locals;\n const { callBack_url } = req.query;\n\n if (user) {\n ErrorHandler.handleGenericErrorResponse(res, 'USER_ALREADY_LOGGED_IN');\n return;\n }\n\n if (callBack_url && !callBack_url.startsWith(process.env.CLIENT_URL ?? '')) {\n ErrorHandler.handleGenericErrorResponse(res, 'CALLBACK_URL_NOT_VALID');\n return;\n }\n\n const userData = req.body;\n\n try {\n let user = await userService.getUserByEmail(userData.email);\n\n if (user) {\n const emailProvider = user.provider?.find(\n (provider) => provider.provider === 'email'\n );\n\n if (emailProvider?.emailValidated) {\n ErrorHandler.handleGenericErrorResponse(\n res,\n 'EMAIL_ALREADY_REGISTERED'\n );\n return;\n } else if (emailProvider) {\n user = await sessionAuthService.updateUserProvider(user._id, 'email', {\n provider: 'email',\n emailValidated: undefined,\n secret: uuidv4(),\n });\n } else {\n user = await sessionAuthService.addUserProvider(user._id, {\n provider: 'email',\n emailValidated: undefined,\n secret: uuidv4(),\n });\n }\n } else {\n user = await userService.createUser({\n ...userData,\n provider: [\n {\n provider: 'email',\n emailValidated: undefined,\n secret: uuidv4(),\n },\n ],\n });\n\n logger.info(`New registration: ${user.name} - ${user.email}`);\n }\n\n if (!user) {\n ErrorHandler.handleGenericErrorResponse(res, 'USER_CREATION_FAILED', {\n email: userData.email,\n });\n return;\n }\n\n await sendEmail({\n type: 'validate',\n to: user.email,\n username: user.name ?? user.email.split('@')[0],\n validationLink: getSessionAuthRoutes().validEmail.url({\n userId: String(user._id),\n secret:\n user.provider?.find((provider) => provider.provider === 'email')\n ?.secret ?? '',\n callBack_url,\n }),\n });\n\n const formattedUser = mapUserToAPI(user);\n const responseData = formatResponse<UserAPI>({\n message: t({\n en: 'User registered successfully',\n fr: 'Utilisateur enregistré avec succès',\n es: 'Usuario registrado con éxito',\n }),\n description: t({\n en: 'Your user has been registered successfully. Please check your email to validate your account.',\n fr: 'Votre utilisateur a été enregistré avec succès. Veuillez vérifier votre e-mail pour valider votre compte.',\n es: 'Su usuario ha sido registrado con éxito. Por favor, revise su correo electrónico para validar su cuenta.',\n }),\n data: formattedUser,\n });\n\n res.json(responseData);\n return;\n } catch (error) {\n ErrorHandler.handleAppErrorResponse(res, error as AppError);\n return;\n }\n};\n\nexport type LoginBody = {\n email: string;\n password: string;\n};\nexport type LoginResult = ResponseData<UserAPI>;\n\n/**\n * Handles user login.\n */\nexport const loginEmailPassword = async (\n req: Request<any, any, LoginBody>,\n res: ResponseWithInformation<LoginResult>,\n _next: NextFunction\n): Promise<void> => {\n const { user } = res.locals;\n\n if (user) {\n ErrorHandler.handleGenericErrorResponse(res, 'USER_ALREADY_LOGGED_IN');\n return;\n }\n\n const { email, password } = req.body;\n\n try {\n const { user: loggedInUser, error } =\n await sessionAuthService.testUserPassword(email, password);\n\n if (error) {\n if (!user) {\n ErrorHandler.handleGenericErrorResponse(res, 'LOGIN_FAILED');\n return;\n }\n }\n\n if (!loggedInUser) {\n ErrorHandler.handleGenericErrorResponse(res, 'USER_NOT_FOUND');\n return;\n }\n\n await sessionAuthService.setUserAuth(res, loggedInUser);\n\n const formattedUser = mapUserToAPI(loggedInUser);\n const responseData = formatResponse<UserAPI>({\n message: t({\n en: 'User logged in successfully',\n fr: 'Utilisateur connecté avec succès',\n es: 'Usuario conectado con éxito',\n }),\n description: t({\n en: 'Your user has been logged in successfully',\n fr: 'Votre utilisateur a été connecté avec succès',\n es: 'Su usuario ha sido conectado con éxito',\n }),\n data: formattedUser,\n });\n\n logger.info(`Login: ${loggedInUser.email}`);\n\n res.json(responseData);\n return;\n } catch (error) {\n ErrorHandler.handleAppErrorResponse(res, error as AppError);\n return;\n }\n};\n\nexport type LogoutResult = ResponseData<undefined>;\n\n/**\n * Handles user logout and clears cookies.\n */\nexport const logOut = async (\n _req: Request,\n res: ResponseWithInformation<LogoutResult>,\n _next: NextFunction\n): Promise<void> => {\n const { user } = res.locals;\n\n if (!user) {\n ErrorHandler.handleGenericErrorResponse(res, 'USER_NOT_DEFINED');\n return;\n }\n\n await sessionAuthService.clearUserAuth(res);\n sessionAuthService.clearOrganizationAuth(res);\n sessionAuthService.clearProjectAuth(res);\n\n logger.info(`Logout: ${user.name} - ${user.email}`);\n\n const responseData = formatResponse<undefined>({\n message: t({\n en: 'User logged out successfully',\n fr: 'Utilisateur déconnecté avec succès',\n es: 'Usuario desconectado con éxito',\n }),\n description: t({\n en: 'Your user has been logged out successfully',\n fr: 'Votre utilisateur a été déconnecté avec succès',\n es: 'Su usuario ha sido desconectado con éxito',\n }),\n data: undefined,\n });\n\n res.json(responseData);\n};\n\nexport type UpdatePasswordBody = {\n oldPassword?: string;\n newPassword: string;\n};\nexport type UpdatePasswordResult = ResponseData<UserAPI>;\n\n/**\n * Updates the user's password.\n */\nexport const updatePassword = async (\n req: Request<undefined, any, UpdatePasswordBody>,\n res: ResponseWithInformation<UpdatePasswordResult>,\n _next: NextFunction\n): Promise<void> => {\n const { oldPassword, newPassword } = req.body;\n let { user } = res.locals;\n\n if (!user) {\n ErrorHandler.handleGenericErrorResponse(res, 'USER_NOT_DEFINED');\n return;\n }\n\n const userEmailProvider = user.provider?.find(\n (provider) => provider.provider === 'email'\n );\n\n if (!userEmailProvider) {\n ErrorHandler.handleGenericErrorResponse(res, 'USER_PROVIDER_NOT_FOUND', {\n provider: 'email',\n });\n return;\n }\n\n if (userEmailProvider.passwordHash && !oldPassword) {\n ErrorHandler.handleGenericErrorResponse(\n res,\n 'USER_PREVIOUS_PASSWORD_NOT_PROVIDED'\n );\n return;\n }\n\n try {\n if (oldPassword) {\n const { error } = await sessionAuthService.testUserPassword(\n user.email,\n oldPassword\n );\n\n if (error) {\n ErrorHandler.handleGenericErrorResponse(res, 'LOGIN_FAILED');\n return;\n }\n }\n\n user = await sessionAuthService.changeUserPassword(user._id, newPassword);\n\n if (!user || typeof user !== 'object') {\n ErrorHandler.handleGenericErrorResponse(res, 'USER_DATA_NOT_FOUND');\n return;\n }\n\n logger.info(\n `Password changed - User : Name : ${user.name}, id : ${String(user._id)}`\n );\n\n const formattedUser = mapUserToAPI(user);\n\n const responseData = formatResponse<UserAPI>({\n message: t({\n en: 'Password changed successfully',\n fr: 'Mot de passe modifié avec succès',\n es: 'Contraseña cambiada con éxito',\n }),\n description: t({\n en: 'Your password has been changed successfully',\n fr: 'Votre mot de passe a été modifié avec succès',\n es: 'Su contraseña ha sido cambiada con éxito',\n }),\n data: formattedUser,\n });\n\n res.json(responseData);\n return;\n } catch (error) {\n ErrorHandler.handleAppErrorResponse(res, error as AppError);\n return;\n }\n};\n\nlet clients: Array<{ id: number; userId: string; res: Response }> = [];\n\nexport const sendVerificationUpdate = (user: User) => {\n const filteredClients = clients.filter(\n (client) => String(client.userId) === String(user._id)\n );\n\n for (const client of filteredClients) {\n const provider = user.provider?.find(\n (provider) => provider.provider === 'email'\n );\n\n if (provider?.emailValidated) {\n client.res.write(\n `data: ${JSON.stringify({ userId: user._id, status: 'verified' })}\\n\\n`\n );\n continue;\n }\n\n client.res.write(\n `data: ${JSON.stringify({ userId: user._id, status: 'waiting' })}\\n\\n`\n );\n }\n};\n\ntype CheckIfUserHasPasswordResultData = {\n hasPassword: boolean;\n};\nexport type CheckIfUserHasPasswordResult =\n ResponseData<CheckIfUserHasPasswordResultData>;\n\nexport const checkIfUserHasPassword = async (\n _req: Request,\n res: ResponseWithInformation<CheckIfUserHasPasswordResult>,\n _next: NextFunction\n): Promise<void> => {\n const { user } = res.locals;\n\n if (!user) {\n ErrorHandler.handleGenericErrorResponse(res, 'USER_NOT_DEFINED');\n return;\n }\n\n try {\n const userProvider = user.provider?.find(\n (provider) => provider.provider === 'email'\n );\n\n const responseData = formatResponse<CheckIfUserHasPasswordResultData>({\n data: {\n hasPassword: Boolean(userProvider?.passwordHash),\n },\n });\n\n res.json(responseData);\n return;\n } catch (error) {\n ErrorHandler.handleAppErrorResponse(res, error as AppError);\n return;\n }\n};\n\nexport type ValidEmailParams = { secret: string; userId: string };\nexport type ValidEmailQuery = { callBack_url?: string };\nexport type ValidEmailResult = ResponseData<UserAPI>;\n\n/**\n * Validates a user's email based on the provided secret and user ID.\n */\nexport const validEmail = async (\n req: Request<ValidEmailParams, any, any, ValidEmailQuery>,\n res: ResponseWithInformation<ValidEmailResult>,\n _next: NextFunction\n): Promise<void> => {\n const { userId, secret } = req.params;\n const callBack_url = `${req.query.callBack_url ?? `${process.env.CLIENT_URL}/auth/login`}?userId=${userId}`;\n\n if (!Types.ObjectId.isValid(userId.toString())) {\n ErrorHandler.handleGenericErrorResponse(res, 'INVALID_USER_ID');\n return;\n }\n\n const user = await userService.getUserById(userId);\n\n if (!user) {\n ErrorHandler.handleGenericErrorResponse(res, 'USER_NOT_DEFINED', {\n userId,\n });\n return;\n }\n\n if (callBack_url && !callBack_url.startsWith(process.env.CLIENT_URL ?? '')) {\n ErrorHandler.handleGenericErrorResponse(res, 'CALLBACK_URL_NOT_VALID');\n return;\n }\n\n const provider = user.provider?.find(\n (provider) => provider.provider === 'email'\n );\n\n if (provider?.emailValidated) {\n res.redirect(callBack_url);\n }\n\n if (!provider?.secret) {\n throw new GenericError('USER_PROVIDER_SECRET_NOT_DEFINED', { userId });\n }\n\n if (\n !crypto.timingSafeEqual(Buffer.from(provider.secret), Buffer.from(secret))\n ) {\n throw new GenericError('USER_PROVIDER_SECRET_NOT_VALID', { userId });\n }\n\n await sessionAuthService.updateUserProvider(userId, 'email', {\n secret: undefined,\n emailValidated: new Date(),\n });\n\n logger.info(\n `User activated - User: Name: ${user.name}, id: ${String(user._id)}`\n );\n\n sendVerificationUpdate(user);\n\n await sessionAuthService.setUserAuth(res, user);\n\n await sendEmail({\n type: 'welcome',\n to: user.email,\n username: user.name,\n loginLink: callBack_url,\n });\n\n res.redirect(callBack_url);\n};\n\nexport type VerifyEmailStatusSSEParams = { userId: string };\n\n/**\n * SSE to check the email verification status\n */\nexport const verifyEmailStatusSSE = async (\n req: Request<VerifyEmailStatusSSEParams, any, any>,\n res: ResponseWithInformation\n) => {\n // Set headers for SSE\n res.setHeader('Content-Type', 'text/event-stream;charset=utf-8');\n res.setHeader('Cache-Control', 'no-cache, no-transform');\n res.setHeader('Connection', 'keep-alive');\n res.setHeader('X-Accel-Buffering', 'no'); // For Nginx buffering\n\n // Send initial data to ensure the connection is open\n res.write(':\\n\\n'); // Comment to keep connection alive\n res.flushHeaders();\n\n const { userId } = req.params; // Get user ID from query parameters\n const clientId = Date.now();\n\n const user = await userService.getUserById(userId);\n\n if (!user) {\n logger.error(`User not found - User ID: ${userId}`);\n res.write(`data: ${JSON.stringify({ userId, status: 'error' })}\\n\\n`);\n res.end();\n return;\n }\n\n // Add client to the list\n const newClient = { id: clientId, userId, res };\n clients.push(newClient);\n\n sendVerificationUpdate(user);\n\n // Remove client on connection close\n req.on('close', () => {\n clients = clients.filter((client) => client.id !== clientId);\n });\n};\n\nexport type AskResetPasswordBody = {\n email: string;\n};\nexport type AskResetPasswordResult = ResponseData<undefined>;\n\n/**\n * Requests a password reset for a user.\n */\nexport const askResetPassword = async (\n req: Request<undefined, any, AskResetPasswordBody>,\n res: ResponseWithInformation<AskResetPasswordResult>,\n _next: NextFunction\n): Promise<void> => {\n const { email } = req.body as Partial<AskResetPasswordBody>;\n\n if (!email) {\n ErrorHandler.handleGenericErrorResponse(res, 'EMAIL_NOT_PROVIDED');\n return;\n }\n\n try {\n const updatedUser = await sessionAuthService.requestPasswordReset(email);\n\n if (!updatedUser) {\n ErrorHandler.handleGenericErrorResponse(res, 'USER_NOT_FOUND', { email });\n return;\n }\n\n logger.info(\n `Ask changing password - User: Name: ${updatedUser.name}, id: ${String(updatedUser._id)}`\n );\n\n await sendEmail({\n type: 'resetPassword',\n to: updatedUser.email,\n username: updatedUser.name,\n resetLink: `${process.env.CLIENT_URL}/auth/password/reset/${String(updatedUser._id)}/${\n updatedUser.provider?.find((provider) => provider.provider === 'email')\n ?.secret ?? ''\n }`,\n });\n\n const responseData = formatResponse<undefined>({\n message: t({\n en: 'Password reset request sent successfully',\n fr: 'Demande de réinitialisation de mot de passe envoyée avec succès',\n es: 'Solicitud de restablecimiento de contraseña enviada con éxito',\n }),\n description: t({\n en: 'Your password reset request has been sent successfully. Please check your email to reset your password.',\n fr: 'Votre demande de réinitialisation de mot de passe a été envoyée avec succès. Veuillez vérifier votre e-mail pour réinitialiser votre mot de passe.',\n es: 'Su solicitud de restablecimiento de contraseña ha sido enviada con éxito. Por favor, revise su correo electrónico para restablecer su contraseña.',\n }),\n data: undefined,\n });\n\n res.json(responseData);\n return;\n } catch (error) {\n ErrorHandler.handleAppErrorResponse(res, error as AppError);\n return;\n }\n};\n\nexport type DefinePasswordBody = {\n password: string;\n secret: string;\n userId: string;\n};\nexport type DefinePasswordResult = ResponseData<UserAPI>;\n\n/**\n * Resets a user's password based on the provided secret and user ID.\n */\nexport const definePassword = async (\n req: Request<undefined, any, DefinePasswordBody>,\n res: Response<DefinePasswordResult>,\n _next: NextFunction\n): Promise<void> => {\n const { secret, userId, password } = req.body;\n\n const userIdString = String(userId);\n\n if (!userId || !userIdString || !Types.ObjectId.isValid(userIdString)) {\n ErrorHandler.handleGenericErrorResponse(res, 'INVALID_USER_ID', { userId });\n return;\n }\n\n if (!secret) {\n ErrorHandler.handleGenericErrorResponse(res, 'SECRET_NOT_PROVIDED');\n return;\n }\n\n try {\n const updatedUser = await sessionAuthService.resetUserPassword(\n userId,\n secret,\n password\n );\n\n logger.info(\n `Password changed - User: Name: ${updatedUser.name}, id: ${String(updatedUser._id)}`\n );\n\n await sendEmail({\n type: 'passwordChangeConfirmation',\n to: updatedUser.email,\n username: updatedUser.name,\n });\n\n const formattedUser = mapUserToAPI(updatedUser);\n const responseData = formatResponse<UserAPI>({\n message: t({\n en: 'Password reset successfully',\n fr: 'Réinitialisation du mot de passe réussie',\n es: 'Restablecimiento de contraseña exitoso',\n }),\n description: t({\n en: 'Your password has been reset successfully. You can now log in with your new password',\n fr: 'Votre mot de passe a été réinitialisé avec succès. Vous pouvez maintenant vous connecter avec votre nouveau mot de passe',\n es: 'Su contraseña ha sido restablecida con éxito. Ahora puede iniciar sesión con su nueva contraseña',\n }),\n data: formattedUser,\n });\n\n res.json(responseData);\n return;\n } catch (error) {\n ErrorHandler.handleAppErrorResponse(res, error as AppError);\n return;\n }\n};\n\nexport type CreateSessionBody = {\n sessionToken: string;\n userId: string;\n expires: Date;\n};\nexport type CreateSessionResult = ResponseData<Session>;\n\nexport type GetSessionInformationQuery = {\n session_token?: string;\n};\ntype SessionInformation = {\n user: UserAPI | null;\n organization: OrganizationAPI | null;\n project: ProjectAPI | null;\n session: Session | null;\n};\nexport type GetSessionInformationResult = ResponseData<SessionInformation>;\n\n/**\n * Gets information about a session for a user.\n */\nexport const getSessionInformation = async (\n req: Request<undefined, undefined, undefined, GetSessionInformationQuery>,\n res: ResponseWithInformation<GetSessionInformationResult>,\n _next: NextFunction\n): Promise<void> => {\n const { session_token: sessionToken } = req.query;\n\n let { user } = res.locals;\n const { organization, project, isOrganizationAdmin, isProjectAdmin } =\n res.locals;\n\n try {\n if (sessionToken) {\n user = await userService.getUserBySession(sessionToken);\n }\n\n if (!user || !user?.session) {\n const responseData = formatResponse<SessionInformation>({\n data: {\n session: null,\n user: null,\n organization: organization?._id\n ? mapOrganizationToAPI(organization, isOrganizationAdmin)\n : null,\n project: project?._id\n ? mapProjectToAPI(project, user, isProjectAdmin)\n : null,\n },\n });\n\n res.json(responseData);\n\n return;\n }\n\n const session = user.session;\n\n const formattedUser: SessionInformation['user'] = {\n ...mapUserToAPI(user),\n role: 'user',\n };\n\n const responseData = formatResponse<SessionInformation>({\n data: {\n session,\n user: formattedUser,\n organization: organization?._id\n ? mapOrganizationToAPI(organization, isOrganizationAdmin)\n : null,\n project: project?._id\n ? mapProjectToAPI(project, user, isProjectAdmin)\n : null,\n },\n });\n\n res.json(responseData);\n return;\n } catch (error) {\n ErrorHandler.handleAppErrorResponse(res, error as AppError);\n return;\n }\n};\n\nexport type GithubLoginQueryParams = {\n origin: string;\n};\nexport type GithubLoginQueryResult = ResponseData<undefined>;\n\nexport const githubLoginQuery = (\n req: Request<undefined, undefined, undefined, GithubLoginQueryParams>,\n res: ResponseWithInformation<GithubLoginQueryResult>,\n _next: NextFunction\n): void => {\n const { origin } = req.query;\n const { user } = res.locals;\n\n if (user) {\n ErrorHandler.handleGenericErrorResponse(res, 'USER_ALREADY_LOGGED_IN');\n return;\n }\n\n if (origin && !origin.startsWith(process.env.CLIENT_URL ?? '')) {\n ErrorHandler.handleGenericErrorResponse(res, 'CALLBACK_URL_NOT_VALID');\n return;\n }\n\n const encodedOrigin = encodeURIComponent(origin);\n\n const redirectURI = `${process.env.BACKEND_URL}/api/auth/callback/github?redirect_uri=${encodedOrigin}`;\n const encodedRedirectURI = encodeURIComponent(redirectURI);\n\n res.redirect(\n `https://github.com/login/oauth/authorize?client_id=${process.env.GITHUB_CLIENT_ID}&redirect_uri=${encodedRedirectURI}&scope=user:email`\n );\n};\n\nexport type GithubCallbackQuery = {\n code: string;\n redirect_uri: string;\n};\n\nexport type GithubCallbackResult = ResponseData<UserAPI>;\n\n/**\n * Handles GitHub OAuth callback.\n */\nexport const githubCallback = async (\n req: Request<undefined, undefined, undefined, GithubCallbackQuery>,\n res: ResponseWithInformation<GithubCallbackResult>,\n _next: NextFunction\n): Promise<void> => {\n const { code, redirect_uri } = req.query;\n\n if (!code) {\n const errorMessage = 'Code not provided';\n\n logger.error(errorMessage);\n\n res.redirect(redirect_uri);\n return;\n }\n\n if (!redirect_uri) {\n const errorMessage = 'Redirect URI not provided';\n\n logger.error(errorMessage);\n\n res.redirect(redirect_uri);\n return;\n }\n\n if (redirect_uri && !redirect_uri.startsWith(process.env.CLIENT_URL ?? '')) {\n ErrorHandler.handleGenericErrorResponse(res, 'CALLBACK_URL_NOT_VALID');\n return;\n }\n\n try {\n const tokenResponse = await fetch(\n 'https://github.com/login/oauth/access_token',\n {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n Accept: 'application/json',\n },\n body: JSON.stringify({\n client_id: process.env.GITHUB_CLIENT_ID,\n client_secret: process.env.GITHUB_CLIENT_SECRET,\n code,\n }),\n }\n );\n\n const tokenData = await tokenResponse.json();\n\n const userResponse = await fetch('https://api.github.com/user', {\n method: 'GET',\n headers: {\n Authorization: `Bearer ${tokenData.access_token}`,\n Accept: 'application/vnd.github.v3+json',\n },\n });\n\n if (!userResponse.ok) {\n throw new GenericError('GITHUB_FETCH_USER_DATA_FAILED', { userResponse });\n }\n\n const userData = await userResponse.json();\n\n const emailResponse = await fetch('https://api.github.com/user/emails', {\n method: 'GET',\n headers: {\n Authorization: `Bearer ${tokenData.access_token}`,\n Accept: 'application/vnd.github.v3+json',\n },\n });\n\n if (!emailResponse.ok) {\n throw new GenericError('GIT_HUB_FETCH_USER_EMAIL_FAILED', {\n emailResponse,\n });\n }\n\n const emails: { primary: boolean; email: string }[] =\n await emailResponse.json();\n\n const primaryEmail = emails.find((email) => email.primary)?.email;\n\n if (!primaryEmail) {\n const errorMessage = 'Primary email not found';\n\n logger.error(errorMessage);\n\n const responseCode = HttpStatusCodes.NOT_FOUND_404;\n\n res.redirect(responseCode, redirect_uri);\n return;\n }\n\n let existingUser = await userService.getUserByEmail(primaryEmail);\n\n if (existingUser) {\n const existingProvider = await sessionAuthService.getUserProvider(\n existingUser._id,\n 'github'\n );\n\n if (existingProvider?.providerAccountId !== userData.id) {\n const updatedUser = await sessionAuthService.updateUserProvider(\n existingUser._id,\n 'github',\n {\n providerAccountId: userData.id,\n }\n );\n\n logger.info(\n `GitHub login provider updated - User: Name: ${updatedUser.name}, id: ${String(updatedUser._id)}`\n );\n\n if (updatedUser) {\n existingUser = updatedUser;\n }\n }\n\n const updatedUser = await userService.updateUserById(existingUser._id, {\n name: existingUser.name ?? userData.name,\n });\n\n await sessionAuthService.setUserAuth(res, updatedUser);\n\n res.redirect(redirect_uri);\n return;\n }\n\n const userInformation: UserData = {\n name: userData.name,\n email: primaryEmail,\n };\n\n const userProvider: GithubSessionProvider = {\n provider: 'github',\n providerAccountId: userData.id,\n };\n\n const user = await userService.createUser({\n ...userInformation,\n provider: [userProvider],\n });\n\n await sessionAuthService.setUserAuth(res, user);\n\n logger.info(\n `GitHub login - User: Name: ${user.name}, id: ${String(user._id)}`\n );\n\n await sendEmail({\n type: 'welcome',\n to: user.email,\n username: user.name,\n loginLink: `${process.env.CLIENT_URL}/auth/login`,\n });\n\n res.redirect(redirect_uri);\n } catch (error) {\n ErrorHandler.handleAppErrorResponse(res, error as AppError);\n return;\n }\n};\n\nexport type GoogleLoginQueryParams = {\n origin: string;\n};\n\nexport type GoogleLoginResult = ResponseData<undefined>;\n\nexport const googleLoginQuery = (\n req: Request<undefined, undefined, undefined, GoogleLoginQueryParams>,\n res: ResponseWithInformation<GoogleLoginResult>,\n _next: NextFunction\n): void => {\n const { origin } = req.query;\n const { user } = res.locals;\n\n if (user) {\n const errorMessage = `User already logged in - ${user?.email}`;\n\n logger.error(errorMessage);\n\n res.redirect(origin);\n return;\n }\n\n if (origin && !origin.startsWith(process.env.CLIENT_URL ?? '')) {\n ErrorHandler.handleGenericErrorResponse(res, 'CALLBACK_URL_NOT_VALID');\n return;\n }\n\n const responseType = 'code';\n const scope = [\n 'https%3A//www.googleapis.com/auth/userinfo.email',\n 'https%3A//www.googleapis.com/auth/userinfo.profile',\n ].join(' ');\n const includeGrantedScopes = 'false';\n\n const encodedOrigin = encodeURIComponent(origin);\n const state = JSON.stringify({ redirect_uri: encodedOrigin });\n\n const redirectURI = `${process.env.BACKEND_URL}/api/auth/callback/google`;\n\n res.redirect(\n `https://accounts.google.com/o/oauth2/v2/auth?client_id=${process.env.GOOGLE_CLIENT_ID}&redirect_uri=${redirectURI}&response_type=${responseType}&scope=${scope}&include_granted_scopes=${includeGrantedScopes}&state=${state}`\n );\n};\n\nexport type GoogleCallbackQuery = {\n code: string;\n state: string;\n};\n\nexport type GoogleCallbackResult = ResponseData<UserAPI>;\n\n/**\n * Handles Google OAuth 2 callback.\n */\nexport const googleCallback = async (\n req: Request<undefined, undefined, undefined, GoogleCallbackQuery>,\n res: ResponseWithInformation<GoogleCallbackResult>,\n _next: NextFunction\n): Promise<void> => {\n const { code, state } = req.query;\n\n const decodedState = decodeURIComponent(state);\n const { redirect_uri } = JSON.parse(decodedState);\n\n if (!code) {\n const errorMessage = 'code not provided';\n\n logger.error(errorMessage);\n\n const responseCode = HttpStatusCodes.BAD_REQUEST_400;\n\n res.redirect(responseCode, redirect_uri);\n return;\n }\n\n if (!redirect_uri) {\n const errorMessage = 'Redirect URI not provided';\n\n logger.error(errorMessage);\n\n const responseCode = HttpStatusCodes.BAD_REQUEST_400;\n\n res.redirect(responseCode, redirect_uri);\n return;\n }\n\n if (redirect_uri && !redirect_uri.startsWith(process.env.CLIENT_URL ?? '')) {\n ErrorHandler.handleGenericErrorResponse(res, 'CALLBACK_URL_NOT_VALID');\n return;\n }\n\n try {\n // Exchange the authorization code for an access token\n const tokenResponse = await fetch('https://oauth2.googleapis.com/token', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/x-www-form-urlencoded',\n },\n body: new URLSearchParams({\n code,\n redirect_uri: `${process.env.BACKEND_URL}/api/auth/callback/google`,\n client_id: process.env.GOOGLE_CLIENT_ID!,\n client_secret: process.env.GOOGLE_CLIENT_SECRET!,\n grant_type: 'authorization_code',\n }),\n });\n\n const responseData = await tokenResponse.json();\n\n const { access_token: accessToken } = responseData;\n\n if (!accessToken) {\n const errorMessage = 'Failed to fetch access_token';\n\n logger.error(errorMessage);\n\n const responseCode = HttpStatusCodes.INTERNAL_SERVER_ERROR_500;\n\n res.redirect(responseCode, redirect_uri);\n return;\n }\n\n const userResponse = await fetch(\n 'https://www.googleapis.com/oauth2/v3/userinfo',\n {\n method: 'GET',\n headers: {\n Authorization: `Bearer ${accessToken}`,\n },\n }\n );\n\n const userData = await userResponse.json();\n\n if (!userData.email) {\n const errorMessage = 'Failed to fetch user data from Google';\n\n logger.error(errorMessage);\n\n const responseCode = HttpStatusCodes.INTERNAL_SERVER_ERROR_500;\n\n res.redirect(responseCode, redirect_uri);\n return;\n }\n\n let existingUser = await userService.getUserByEmail(userData.email);\n\n if (existingUser) {\n const existingProvider = await sessionAuthService.getUserProvider(\n existingUser._id,\n 'google'\n );\n\n if (existingProvider?.providerAccountId !== userData.sub) {\n const updatedUser = await sessionAuthService.updateUserProvider(\n existingUser._id,\n 'google',\n {\n providerAccountId: userData.id,\n }\n );\n\n logger.info(\n `Google login provider updated - User: Name: ${updatedUser.name}, id: ${String(updatedUser._id)}`\n );\n\n if (updatedUser) {\n existingUser = updatedUser;\n }\n }\n\n const updatedUser = await userService.updateUserById(existingUser._id, {\n name: existingUser.name ?? userData.name,\n });\n\n await sessionAuthService.setUserAuth(res, updatedUser);\n\n res.redirect(redirect_uri);\n return;\n }\n\n const userInformation: UserData = {\n name: userData.name,\n email: userData.email,\n };\n\n const userProvider: GoogleSessionProvider = {\n provider: 'google',\n providerAccountId: userData.id,\n };\n\n const user = await userService.createUser({\n ...userInformation,\n provider: [userProvider],\n });\n\n await sessionAuthService.setUserAuth(res, user);\n\n logger.info(\n `Google login - User: Name: ${user.name}, id: ${String(user._id)}`\n );\n\n await sendEmail({\n type: 'welcome',\n to: user.email,\n username: user.name,\n loginLink: `${process.env.CLIENT_URL}/auth/login`,\n });\n\n res.redirect(redirect_uri);\n } catch (error) {\n ErrorHandler.handleAppErrorResponse(res, error as AppError);\n return;\n }\n};\n"],"mappings":"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","names":["user","uuidv4","provider","crypto","responseData","updatedUser"]}
|
|
@@ -1,154 +0,0 @@
|
|
|
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 sessionAuth_routes_exports = {};
|
|
20
|
-
__export(sessionAuth_routes_exports, {
|
|
21
|
-
getSessionAuthRoutes: () => getSessionAuthRoutes,
|
|
22
|
-
sessionAuthRoute: () => sessionAuthRoute,
|
|
23
|
-
sessionAuthRouter: () => sessionAuthRouter
|
|
24
|
-
});
|
|
25
|
-
module.exports = __toCommonJS(sessionAuth_routes_exports);
|
|
26
|
-
var import_sessionAuth = require('./../controllers/sessionAuth.controller.cjs');
|
|
27
|
-
var import_express = require("express");
|
|
28
|
-
const sessionAuthRouter = (0, import_express.Router)();
|
|
29
|
-
const sessionAuthRoute = "/api/auth";
|
|
30
|
-
const baseURL = () => `${process.env.BACKEND_URL}${sessionAuthRoute}`;
|
|
31
|
-
const getSessionAuthRoutes = () => ({
|
|
32
|
-
registerEmailPassword: {
|
|
33
|
-
urlModel: "/register",
|
|
34
|
-
url: `${baseURL}/register`,
|
|
35
|
-
method: "POST"
|
|
36
|
-
},
|
|
37
|
-
loginEmailPassword: {
|
|
38
|
-
urlModel: "/login",
|
|
39
|
-
url: `${baseURL()}/login`,
|
|
40
|
-
method: "POST"
|
|
41
|
-
},
|
|
42
|
-
logOut: {
|
|
43
|
-
urlModel: "/logout",
|
|
44
|
-
url: `${baseURL()}/logout`,
|
|
45
|
-
method: "POST"
|
|
46
|
-
},
|
|
47
|
-
updatePassword: {
|
|
48
|
-
urlModel: "/password",
|
|
49
|
-
url: `${baseURL()}/password`,
|
|
50
|
-
method: "PUT"
|
|
51
|
-
},
|
|
52
|
-
askResetPassword: {
|
|
53
|
-
urlModel: "/password/reset",
|
|
54
|
-
url: `${baseURL()}/password/reset`,
|
|
55
|
-
method: "POST"
|
|
56
|
-
},
|
|
57
|
-
defineNewPassword: {
|
|
58
|
-
urlModel: "/password/define",
|
|
59
|
-
url: `${baseURL()}/password/define`,
|
|
60
|
-
method: "POST"
|
|
61
|
-
},
|
|
62
|
-
checkIfUserHasPassword: {
|
|
63
|
-
urlModel: "/password/has",
|
|
64
|
-
url: `${baseURL()}/password/has`,
|
|
65
|
-
method: "GET"
|
|
66
|
-
},
|
|
67
|
-
validEmail: {
|
|
68
|
-
urlModel: "/:userId/active/:secret",
|
|
69
|
-
url: ({
|
|
70
|
-
userId,
|
|
71
|
-
secret,
|
|
72
|
-
callBack_url
|
|
73
|
-
}) => `${baseURL()}/${userId}/active/${secret}${callBack_url ? `?callBack_url=${callBack_url}` : ""}`,
|
|
74
|
-
method: "GET"
|
|
75
|
-
},
|
|
76
|
-
verifyEmailStatusSSE: {
|
|
77
|
-
urlModel: "/verify-email-status/:userId",
|
|
78
|
-
url: ({ userId }) => `${baseURL()}/verify-email-status/${userId}`,
|
|
79
|
-
method: "GET"
|
|
80
|
-
},
|
|
81
|
-
githubLoginQuery: {
|
|
82
|
-
urlModel: "/login/github",
|
|
83
|
-
url: `${baseURL()}/login/github`,
|
|
84
|
-
method: "GET"
|
|
85
|
-
},
|
|
86
|
-
githubCallback: {
|
|
87
|
-
urlModel: "/callback/github",
|
|
88
|
-
url: `${baseURL()}/callback/github`,
|
|
89
|
-
method: "GET"
|
|
90
|
-
},
|
|
91
|
-
googleLoginQuery: {
|
|
92
|
-
urlModel: "/login/google",
|
|
93
|
-
url: `${baseURL()}/login/google`,
|
|
94
|
-
method: "GET"
|
|
95
|
-
},
|
|
96
|
-
googleCallback: {
|
|
97
|
-
urlModel: "/callback/google",
|
|
98
|
-
url: `${baseURL()}/callback/google`,
|
|
99
|
-
method: "GET"
|
|
100
|
-
}
|
|
101
|
-
});
|
|
102
|
-
sessionAuthRouter.post(
|
|
103
|
-
getSessionAuthRoutes().registerEmailPassword.urlModel,
|
|
104
|
-
import_sessionAuth.registerEmailPassword
|
|
105
|
-
);
|
|
106
|
-
sessionAuthRouter.post(
|
|
107
|
-
getSessionAuthRoutes().loginEmailPassword.urlModel,
|
|
108
|
-
import_sessionAuth.loginEmailPassword
|
|
109
|
-
);
|
|
110
|
-
sessionAuthRouter.post(getSessionAuthRoutes().logOut.urlModel, import_sessionAuth.logOut);
|
|
111
|
-
sessionAuthRouter.put(
|
|
112
|
-
getSessionAuthRoutes().updatePassword.urlModel,
|
|
113
|
-
import_sessionAuth.updatePassword
|
|
114
|
-
);
|
|
115
|
-
sessionAuthRouter.post(
|
|
116
|
-
getSessionAuthRoutes().askResetPassword.urlModel,
|
|
117
|
-
import_sessionAuth.askResetPassword
|
|
118
|
-
);
|
|
119
|
-
sessionAuthRouter.post(
|
|
120
|
-
getSessionAuthRoutes().defineNewPassword.urlModel,
|
|
121
|
-
import_sessionAuth.definePassword
|
|
122
|
-
);
|
|
123
|
-
sessionAuthRouter.get(
|
|
124
|
-
getSessionAuthRoutes().checkIfUserHasPassword.urlModel,
|
|
125
|
-
import_sessionAuth.checkIfUserHasPassword
|
|
126
|
-
);
|
|
127
|
-
sessionAuthRouter.get(getSessionAuthRoutes().validEmail.urlModel, import_sessionAuth.validEmail);
|
|
128
|
-
sessionAuthRouter.get(
|
|
129
|
-
getSessionAuthRoutes().verifyEmailStatusSSE.urlModel,
|
|
130
|
-
import_sessionAuth.verifyEmailStatusSSE
|
|
131
|
-
);
|
|
132
|
-
sessionAuthRouter.get(
|
|
133
|
-
getSessionAuthRoutes().githubLoginQuery.urlModel,
|
|
134
|
-
import_sessionAuth.githubLoginQuery
|
|
135
|
-
);
|
|
136
|
-
sessionAuthRouter.get(
|
|
137
|
-
getSessionAuthRoutes().githubCallback.urlModel,
|
|
138
|
-
import_sessionAuth.githubCallback
|
|
139
|
-
);
|
|
140
|
-
sessionAuthRouter.get(
|
|
141
|
-
getSessionAuthRoutes().googleLoginQuery.urlModel,
|
|
142
|
-
import_sessionAuth.googleLoginQuery
|
|
143
|
-
);
|
|
144
|
-
sessionAuthRouter.get(
|
|
145
|
-
getSessionAuthRoutes().googleCallback.urlModel,
|
|
146
|
-
import_sessionAuth.googleCallback
|
|
147
|
-
);
|
|
148
|
-
// Annotate the CommonJS export names for ESM import in node:
|
|
149
|
-
0 && (module.exports = {
|
|
150
|
-
getSessionAuthRoutes,
|
|
151
|
-
sessionAuthRoute,
|
|
152
|
-
sessionAuthRouter
|
|
153
|
-
});
|
|
154
|
-
//# sourceMappingURL=sessionAuth.routes.cjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/routes/sessionAuth.routes.ts"],"sourcesContent":["import type { Routes } from '@/types/Routes';\nimport {\n askResetPassword,\n checkIfUserHasPassword,\n definePassword,\n githubCallback,\n githubLoginQuery,\n googleCallback,\n googleLoginQuery,\n loginEmailPassword,\n logOut,\n registerEmailPassword,\n updatePassword,\n validEmail,\n verifyEmailStatusSSE,\n} from '@controllers/sessionAuth.controller';\nimport { Router } from 'express';\n\nexport const sessionAuthRouter: Router = Router();\n\nexport const sessionAuthRoute = '/api/auth';\n\nconst baseURL = () => `${process.env.BACKEND_URL}${sessionAuthRoute}`;\n\nexport const getSessionAuthRoutes = () =>\n ({\n registerEmailPassword: {\n urlModel: '/register',\n url: `${baseURL}/register`,\n method: 'POST',\n },\n loginEmailPassword: {\n urlModel: '/login',\n url: `${baseURL()}/login`,\n method: 'POST',\n },\n logOut: {\n urlModel: '/logout',\n url: `${baseURL()}/logout`,\n method: 'POST',\n },\n updatePassword: {\n urlModel: '/password',\n url: `${baseURL()}/password`,\n method: 'PUT',\n },\n askResetPassword: {\n urlModel: '/password/reset',\n url: `${baseURL()}/password/reset`,\n method: 'POST',\n },\n defineNewPassword: {\n urlModel: '/password/define',\n url: `${baseURL()}/password/define`,\n method: 'POST',\n },\n checkIfUserHasPassword: {\n urlModel: '/password/has',\n url: `${baseURL()}/password/has`,\n method: 'GET',\n },\n validEmail: {\n urlModel: '/:userId/active/:secret',\n url: ({\n userId,\n secret,\n callBack_url,\n }: {\n userId: string;\n secret: string;\n callBack_url?: string;\n }) =>\n `${baseURL()}/${userId}/active/${secret}${\n callBack_url ? `?callBack_url=${callBack_url}` : ''\n }`,\n method: 'GET',\n },\n verifyEmailStatusSSE: {\n urlModel: '/verify-email-status/:userId',\n url: ({ userId }: { userId: string }) =>\n `${baseURL()}/verify-email-status/${userId}`,\n method: 'GET',\n },\n githubLoginQuery: {\n urlModel: '/login/github',\n url: `${baseURL()}/login/github`,\n method: 'GET',\n },\n githubCallback: {\n urlModel: '/callback/github',\n url: `${baseURL()}/callback/github`,\n method: 'GET',\n },\n googleLoginQuery: {\n urlModel: '/login/google',\n url: `${baseURL()}/login/google`,\n method: 'GET',\n },\n googleCallback: {\n urlModel: '/callback/google',\n url: `${baseURL()}/callback/google`,\n method: 'GET',\n },\n }) satisfies Routes;\n\n// Authentication\nsessionAuthRouter.post(\n getSessionAuthRoutes().registerEmailPassword.urlModel,\n registerEmailPassword\n);\nsessionAuthRouter.post(\n getSessionAuthRoutes().loginEmailPassword.urlModel,\n loginEmailPassword\n);\nsessionAuthRouter.post(getSessionAuthRoutes().logOut.urlModel, logOut);\n\n// Password\nsessionAuthRouter.put(\n getSessionAuthRoutes().updatePassword.urlModel,\n updatePassword\n);\nsessionAuthRouter.post(\n getSessionAuthRoutes().askResetPassword.urlModel,\n askResetPassword\n);\nsessionAuthRouter.post(\n getSessionAuthRoutes().defineNewPassword.urlModel,\n definePassword\n);\n\nsessionAuthRouter.get(\n getSessionAuthRoutes().checkIfUserHasPassword.urlModel,\n checkIfUserHasPassword\n);\n\n// Email validation\nsessionAuthRouter.get(getSessionAuthRoutes().validEmail.urlModel, validEmail);\n\n// Verify email status\nsessionAuthRouter.get(\n getSessionAuthRoutes().verifyEmailStatusSSE.urlModel,\n verifyEmailStatusSSE\n);\n\n// Github auth\nsessionAuthRouter.get(\n getSessionAuthRoutes().githubLoginQuery.urlModel,\n githubLoginQuery\n);\nsessionAuthRouter.get(\n getSessionAuthRoutes().githubCallback.urlModel,\n githubCallback\n);\n\n// Google auth\nsessionAuthRouter.get(\n getSessionAuthRoutes().googleLoginQuery.urlModel,\n googleLoginQuery\n);\nsessionAuthRouter.get(\n getSessionAuthRoutes().googleCallback.urlModel,\n googleCallback\n);\n"],"mappings":"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","names":[]}
|
|
@@ -1,385 +0,0 @@
|
|
|
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
|
-
addSession: () => addSession,
|
|
32
|
-
addUserProvider: () => addUserProvider,
|
|
33
|
-
changeUserPassword: () => changeUserPassword,
|
|
34
|
-
clearOrganizationAuth: () => clearOrganizationAuth,
|
|
35
|
-
clearProjectAuth: () => clearProjectAuth,
|
|
36
|
-
clearUserAuth: () => clearUserAuth,
|
|
37
|
-
formatUserProviderUpdate: () => formatUserProviderUpdate,
|
|
38
|
-
generateSecret: () => generateSecret,
|
|
39
|
-
getUserProvider: () => getUserProvider,
|
|
40
|
-
hashUserPassword: () => hashUserPassword,
|
|
41
|
-
removeSession: () => removeSession,
|
|
42
|
-
removeUserProvider: () => removeUserProvider,
|
|
43
|
-
requestPasswordReset: () => requestPasswordReset,
|
|
44
|
-
resetPassword: () => resetPassword,
|
|
45
|
-
resetUserPassword: () => resetUserPassword,
|
|
46
|
-
setOrganizationAuth: () => setOrganizationAuth,
|
|
47
|
-
setProjectAuth: () => setProjectAuth,
|
|
48
|
-
setUserAuth: () => setUserAuth,
|
|
49
|
-
testUserPassword: () => testUserPassword,
|
|
50
|
-
updateUserProvider: () => updateUserProvider
|
|
51
|
-
});
|
|
52
|
-
module.exports = __toCommonJS(sessionAuth_service_exports);
|
|
53
|
-
var import_logger = require('./../logger/index.cjs');
|
|
54
|
-
var import_cookies = require('./../utils/cookies.cjs');
|
|
55
|
-
var import_ensureMongoDocumentToObject = require('./../utils/ensureMongoDocumentToObject.cjs');
|
|
56
|
-
var import_errors = require('./../utils/errors/index.cjs');
|
|
57
|
-
var import_user = require('./../utils/mapper/user.cjs');
|
|
58
|
-
var import_bcryptjs = require("bcryptjs");
|
|
59
|
-
var import_crypto = __toESM(require("crypto"), 1);
|
|
60
|
-
var import_express_intlayer = require("express-intlayer");
|
|
61
|
-
var import_jsonwebtoken = __toESM(require("jsonwebtoken"), 1);
|
|
62
|
-
var import_uuid = require("uuid");
|
|
63
|
-
var import_user2 = require('./user.service.cjs');
|
|
64
|
-
const addSession = async (user) => {
|
|
65
|
-
const userSessionToken = (0, import_uuid.v4)();
|
|
66
|
-
const session = {
|
|
67
|
-
sessionToken: userSessionToken,
|
|
68
|
-
expires: new Date(Date.now() + import_cookies.MAX_AGE)
|
|
69
|
-
};
|
|
70
|
-
const updatedUser = await (0, import_user2.updateUserById)(user._id, { session });
|
|
71
|
-
return updatedUser;
|
|
72
|
-
};
|
|
73
|
-
const removeSession = async (user) => {
|
|
74
|
-
const session = void 0;
|
|
75
|
-
const updatedUser = await (0, import_user2.updateUserById)(user._id, { session });
|
|
76
|
-
return updatedUser;
|
|
77
|
-
};
|
|
78
|
-
const setUserAuth = async (res, user) => {
|
|
79
|
-
const formattedUser = (0, import_user.mapUserToAPI)(user);
|
|
80
|
-
const userToken = import_jsonwebtoken.default.sign(formattedUser, process.env.JWT_TOKEN_SECRET, {
|
|
81
|
-
expiresIn: import_cookies.MAX_AGE
|
|
82
|
-
});
|
|
83
|
-
if (!userToken) {
|
|
84
|
-
throw new import_errors.GenericError("JWT_TOKEN_CREATION_FAILED_USER", { user });
|
|
85
|
-
}
|
|
86
|
-
const cookieOptions = (0, import_cookies.getCookieOptions)();
|
|
87
|
-
res.cookie(import_cookies.Cookies.JWT_USER, userToken, cookieOptions);
|
|
88
|
-
const userWithSession = await addSession(user);
|
|
89
|
-
const userSessionToken = userWithSession.session?.sessionToken;
|
|
90
|
-
res.cookie(import_cookies.Cookies.JWT_AUTH, userSessionToken, cookieOptions);
|
|
91
|
-
res.locals.user = user;
|
|
92
|
-
import_logger.logger.info(
|
|
93
|
-
`User logged in - User: Name: ${user.name}, id: ${String(user._id)}`
|
|
94
|
-
);
|
|
95
|
-
};
|
|
96
|
-
const clearUserAuth = async (res) => {
|
|
97
|
-
const { user } = res.locals;
|
|
98
|
-
const cookiesOptions = (0, import_cookies.getClearCookieOptions)();
|
|
99
|
-
if (user) {
|
|
100
|
-
await removeSession(user);
|
|
101
|
-
}
|
|
102
|
-
res.cookie(import_cookies.Cookies.JWT_AUTH, "", cookiesOptions);
|
|
103
|
-
res.cookie(import_cookies.Cookies.JWT_USER, "", cookiesOptions);
|
|
104
|
-
res.locals.user = null;
|
|
105
|
-
res.locals.authType = null;
|
|
106
|
-
};
|
|
107
|
-
const setOrganizationAuth = (res, organization) => {
|
|
108
|
-
const organizationData = {
|
|
109
|
-
_id: organization._id,
|
|
110
|
-
name: organization.name
|
|
111
|
-
};
|
|
112
|
-
const organizationToken = import_jsonwebtoken.default.sign(
|
|
113
|
-
organizationData,
|
|
114
|
-
process.env.JWT_TOKEN_SECRET,
|
|
115
|
-
{
|
|
116
|
-
expiresIn: import_cookies.MAX_AGE
|
|
117
|
-
}
|
|
118
|
-
);
|
|
119
|
-
if (!organizationToken) {
|
|
120
|
-
throw new import_errors.GenericError("JWT_TOKEN_CREATION_FAILED_ORGANIZATION", {
|
|
121
|
-
organization
|
|
122
|
-
});
|
|
123
|
-
}
|
|
124
|
-
res.cookie(import_cookies.Cookies.JWT_ORGANIZATION, organizationToken, (0, import_cookies.getCookieOptions)());
|
|
125
|
-
res.locals.organization = organization;
|
|
126
|
-
};
|
|
127
|
-
const clearOrganizationAuth = (res) => {
|
|
128
|
-
res.locals.organization = null;
|
|
129
|
-
res.cookie(import_cookies.Cookies.JWT_ORGANIZATION, "", (0, import_cookies.getClearCookieOptions)());
|
|
130
|
-
};
|
|
131
|
-
const setProjectAuth = (res, project) => {
|
|
132
|
-
const { organization } = res.locals;
|
|
133
|
-
const projectData = {
|
|
134
|
-
_id: project._id,
|
|
135
|
-
name: project.name
|
|
136
|
-
};
|
|
137
|
-
const projectToken = import_jsonwebtoken.default.sign(projectData, process.env.JWT_TOKEN_SECRET, {
|
|
138
|
-
expiresIn: import_cookies.MAX_AGE
|
|
139
|
-
});
|
|
140
|
-
if (!projectToken) {
|
|
141
|
-
throw new import_errors.GenericError("JWT_TOKEN_CREATION_FAILED_PROJECT", {
|
|
142
|
-
project
|
|
143
|
-
});
|
|
144
|
-
}
|
|
145
|
-
res.cookie(import_cookies.Cookies.JWT_PROJECT, projectToken, (0, import_cookies.getCookieOptions)());
|
|
146
|
-
if (!organization) {
|
|
147
|
-
throw new import_errors.GenericError("ORGANIZATION_NOT_FOUND", {
|
|
148
|
-
project
|
|
149
|
-
});
|
|
150
|
-
}
|
|
151
|
-
if (
|
|
152
|
-
// if the project is not in the organization's projects
|
|
153
|
-
String(organization._id) !== String(project.organizationId)
|
|
154
|
-
) {
|
|
155
|
-
throw new import_errors.GenericError("JWT_TOKEN_ORGANIZATION_MISMATCH_PROJECT", {
|
|
156
|
-
project
|
|
157
|
-
});
|
|
158
|
-
}
|
|
159
|
-
res.locals.project = project;
|
|
160
|
-
};
|
|
161
|
-
const clearProjectAuth = (res) => {
|
|
162
|
-
res.locals.project = null;
|
|
163
|
-
res.cookie(import_cookies.Cookies.JWT_PROJECT, "", (0, import_cookies.getClearCookieOptions)());
|
|
164
|
-
};
|
|
165
|
-
const generateSecret = (length) => {
|
|
166
|
-
const characters = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
|
|
167
|
-
return Array.from(
|
|
168
|
-
{ length },
|
|
169
|
-
() => characters.charAt(Math.floor(Math.random() * characters.length))
|
|
170
|
-
).join("");
|
|
171
|
-
};
|
|
172
|
-
const requestPasswordReset = async (email) => {
|
|
173
|
-
const user = await (0, import_user2.getUserByEmail)(email);
|
|
174
|
-
if (!user) {
|
|
175
|
-
throw new import_errors.GenericError("USER_NOT_FOUND", { email });
|
|
176
|
-
}
|
|
177
|
-
return updateUserProvider(user._id, "email", {
|
|
178
|
-
secret: generateSecret(35)
|
|
179
|
-
});
|
|
180
|
-
};
|
|
181
|
-
const resetUserPassword = async (userId, secret, newPassword) => {
|
|
182
|
-
const emailAndPasswordProvider = await getUserProvider(userId, "email");
|
|
183
|
-
if (!emailAndPasswordProvider) {
|
|
184
|
-
throw new import_errors.GenericError("USER_PROVIDER_NOT_FOUND", { userId });
|
|
185
|
-
}
|
|
186
|
-
if (!emailAndPasswordProvider.secret) {
|
|
187
|
-
throw new import_errors.GenericError("USER_PROVIDER_SECRET_NOT_DEFINED", { userId });
|
|
188
|
-
}
|
|
189
|
-
if (!import_crypto.default.timingSafeEqual(
|
|
190
|
-
Buffer.from(emailAndPasswordProvider.secret),
|
|
191
|
-
Buffer.from(secret)
|
|
192
|
-
)) {
|
|
193
|
-
throw new import_errors.GenericError("USER_PROVIDER_SECRET_NOT_VALID", { userId });
|
|
194
|
-
}
|
|
195
|
-
const updatedUser = await updateUserProvider(userId, "email", {
|
|
196
|
-
passwordHash: await (0, import_bcryptjs.hash)(newPassword, await (0, import_bcryptjs.genSalt)()),
|
|
197
|
-
secret
|
|
198
|
-
});
|
|
199
|
-
return updatedUser;
|
|
200
|
-
};
|
|
201
|
-
const getUserProvider = async (userId, provider, providerAccountId) => {
|
|
202
|
-
const user = await (0, import_user2.getUserById)(userId);
|
|
203
|
-
if (!user) {
|
|
204
|
-
throw new import_errors.GenericError("USER_NOT_FOUND", { userId });
|
|
205
|
-
}
|
|
206
|
-
const userProvider = user.provider?.find(
|
|
207
|
-
(providerEl) => providerEl.provider === provider && !providerAccountId || providerAccountId && providerEl.providerAccountId === providerAccountId
|
|
208
|
-
);
|
|
209
|
-
return userProvider ?? null;
|
|
210
|
-
};
|
|
211
|
-
const formatUserProviderUpdate = (provider, user, providerUpdate) => {
|
|
212
|
-
const userProvider = (0, import_ensureMongoDocumentToObject.ensureMongoDocumentToObject)(user.provider ?? []);
|
|
213
|
-
const userProviderToUpdate = userProvider?.find(
|
|
214
|
-
(providerEl) => providerEl.provider === provider
|
|
215
|
-
);
|
|
216
|
-
let updatedProvider;
|
|
217
|
-
if (userProviderToUpdate) {
|
|
218
|
-
const otherProviders = user.provider?.filter((p) => p.provider !== provider) ?? [];
|
|
219
|
-
updatedProvider = [
|
|
220
|
-
...otherProviders,
|
|
221
|
-
{ ...userProviderToUpdate, ...providerUpdate, provider }
|
|
222
|
-
];
|
|
223
|
-
} else {
|
|
224
|
-
updatedProvider = [
|
|
225
|
-
...user.provider ?? [],
|
|
226
|
-
{ ...providerUpdate, provider }
|
|
227
|
-
];
|
|
228
|
-
}
|
|
229
|
-
return updatedProvider;
|
|
230
|
-
};
|
|
231
|
-
const updateUserProvider = async (userId, provider, providerUpdate) => {
|
|
232
|
-
const user = await (0, import_user2.getUserById)(userId);
|
|
233
|
-
if (!user) {
|
|
234
|
-
throw new import_errors.GenericError("USER_NOT_FOUND", { userId });
|
|
235
|
-
}
|
|
236
|
-
const formattedProviderToUpdate = formatUserProviderUpdate(
|
|
237
|
-
provider,
|
|
238
|
-
user,
|
|
239
|
-
providerUpdate
|
|
240
|
-
);
|
|
241
|
-
const updatedUser = await (0, import_user2.updateUserById)(userId, {
|
|
242
|
-
provider: formattedProviderToUpdate
|
|
243
|
-
});
|
|
244
|
-
import_logger.logger.info(
|
|
245
|
-
`User provider updated - User: Name: ${updatedUser.name}, id: ${String(updatedUser._id)} - Provider: ${provider}`
|
|
246
|
-
);
|
|
247
|
-
return updatedUser;
|
|
248
|
-
};
|
|
249
|
-
const addUserProvider = async (userId, provider) => {
|
|
250
|
-
const user = await (0, import_user2.getUserById)(userId);
|
|
251
|
-
if (!user) {
|
|
252
|
-
throw new import_errors.GenericError("USER_NOT_FOUND", { userId });
|
|
253
|
-
}
|
|
254
|
-
const existingProvider = await getUserProvider(userId, provider.provider);
|
|
255
|
-
if (existingProvider) {
|
|
256
|
-
throw new import_errors.GenericError("USER_PROVIDER_ALREADY_EXISTS", {
|
|
257
|
-
userId,
|
|
258
|
-
provider
|
|
259
|
-
});
|
|
260
|
-
}
|
|
261
|
-
const updatedProvider = [...user.provider ?? [], provider];
|
|
262
|
-
const updatedUser = await (0, import_user2.updateUserById)(userId, {
|
|
263
|
-
provider: updatedProvider
|
|
264
|
-
});
|
|
265
|
-
import_logger.logger.info(
|
|
266
|
-
`User provider added - User: Name: ${updatedUser.name}, id: ${String(updatedUser._id)} - Provider: ${provider.provider}`
|
|
267
|
-
);
|
|
268
|
-
return updatedUser;
|
|
269
|
-
};
|
|
270
|
-
const removeUserProvider = async (userId, provider, providerAccountId) => {
|
|
271
|
-
const user = await (0, import_user2.getUserById)(userId);
|
|
272
|
-
if (!user) {
|
|
273
|
-
throw new import_errors.GenericError("USER_NOT_FOUND", { userId });
|
|
274
|
-
}
|
|
275
|
-
const existingProvider = await getUserProvider(
|
|
276
|
-
userId,
|
|
277
|
-
provider,
|
|
278
|
-
providerAccountId
|
|
279
|
-
);
|
|
280
|
-
if (!existingProvider) {
|
|
281
|
-
throw new import_errors.GenericError("USER_PROVIDER_NOT_FOUND", {
|
|
282
|
-
userId,
|
|
283
|
-
provider
|
|
284
|
-
});
|
|
285
|
-
}
|
|
286
|
-
const updatedProvider = user.provider?.filter(
|
|
287
|
-
(p) => p.provider !== provider && (!providerAccountId || providerAccountId && p.providerAccountId !== providerAccountId)
|
|
288
|
-
);
|
|
289
|
-
return await (0, import_user2.updateUserById)(userId, {
|
|
290
|
-
provider: updatedProvider
|
|
291
|
-
});
|
|
292
|
-
};
|
|
293
|
-
const testUserPassword = async (email, password) => {
|
|
294
|
-
const user = await (0, import_user2.getUserByEmail)(email);
|
|
295
|
-
if (!user) {
|
|
296
|
-
const errorMessages = {
|
|
297
|
-
en: `User not found - ${email}`,
|
|
298
|
-
fr: `Utilisateur non trouv\xE9 - ${email}`,
|
|
299
|
-
es: `Usuario no encontrado - ${email}`
|
|
300
|
-
};
|
|
301
|
-
return { user: null, error: (0, import_express_intlayer.t)(errorMessages) };
|
|
302
|
-
}
|
|
303
|
-
const userEmailPasswordProvider = user.provider?.find(
|
|
304
|
-
(provider) => provider.provider === "email"
|
|
305
|
-
);
|
|
306
|
-
if (!userEmailPasswordProvider?.passwordHash) {
|
|
307
|
-
const errorMessages = {
|
|
308
|
-
en: `User request to login but no password defined: ${user.email}`,
|
|
309
|
-
fr: `Demande de connexion d'utilisateur mais pas de mot de passe d\xE9fini : ${user.email}`,
|
|
310
|
-
es: `Solicitud de inicio de sesi\xF3n de usuario pero no se define la contrase\xF1a : ${user.email}`
|
|
311
|
-
};
|
|
312
|
-
return { user: null, error: (0, import_express_intlayer.t)(errorMessages) };
|
|
313
|
-
}
|
|
314
|
-
const isMatch = await (0, import_bcryptjs.compare)(
|
|
315
|
-
password,
|
|
316
|
-
userEmailPasswordProvider.passwordHash
|
|
317
|
-
);
|
|
318
|
-
if (!isMatch) {
|
|
319
|
-
const errorMessages = {
|
|
320
|
-
en: `Incorrect email or password: ${email}`,
|
|
321
|
-
fr: `Email ou mot de passe incorrect : ${email}`,
|
|
322
|
-
es: `Correo electr\xF3nico o contrase\xF1a incorrecta : ${email}`
|
|
323
|
-
};
|
|
324
|
-
import_logger.logger.error(errorMessages.en);
|
|
325
|
-
const randomNumber = Math.floor(Math.random() * 1e3) + 1e3;
|
|
326
|
-
await new Promise((resolve) => setTimeout(resolve, randomNumber));
|
|
327
|
-
return { user: null, error: (0, import_express_intlayer.t)(errorMessages) };
|
|
328
|
-
}
|
|
329
|
-
return { user };
|
|
330
|
-
};
|
|
331
|
-
const hashUserPassword = async (userWithPasswordNotHashed) => {
|
|
332
|
-
const { password, ...user } = userWithPasswordNotHashed;
|
|
333
|
-
if (!password) {
|
|
334
|
-
throw new import_errors.GenericError("USER_PASSWORD_NOT_DEFINED", { user });
|
|
335
|
-
}
|
|
336
|
-
const userProvider = formatUserProviderUpdate("email", user, {
|
|
337
|
-
passwordHash: await (0, import_bcryptjs.hash)(password, await (0, import_bcryptjs.genSalt)()),
|
|
338
|
-
secret: generateSecret(35)
|
|
339
|
-
});
|
|
340
|
-
return { ...user, provider: userProvider };
|
|
341
|
-
};
|
|
342
|
-
const changeUserPassword = async (userId, newPassword) => {
|
|
343
|
-
const user = await (0, import_user2.getUserById)(userId);
|
|
344
|
-
if (!user) {
|
|
345
|
-
throw new import_errors.GenericError("USER_NOT_FOUND", { userId });
|
|
346
|
-
}
|
|
347
|
-
const updatedUser = await updateUserProvider(userId, "email", {
|
|
348
|
-
passwordHash: await (0, import_bcryptjs.hash)(newPassword, await (0, import_bcryptjs.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_bcryptjs.hash)(password, await (0, import_bcryptjs.genSalt)())
|
|
359
|
-
});
|
|
360
|
-
return updatedUser;
|
|
361
|
-
};
|
|
362
|
-
// Annotate the CommonJS export names for ESM import in node:
|
|
363
|
-
0 && (module.exports = {
|
|
364
|
-
addSession,
|
|
365
|
-
addUserProvider,
|
|
366
|
-
changeUserPassword,
|
|
367
|
-
clearOrganizationAuth,
|
|
368
|
-
clearProjectAuth,
|
|
369
|
-
clearUserAuth,
|
|
370
|
-
formatUserProviderUpdate,
|
|
371
|
-
generateSecret,
|
|
372
|
-
getUserProvider,
|
|
373
|
-
hashUserPassword,
|
|
374
|
-
removeSession,
|
|
375
|
-
removeUserProvider,
|
|
376
|
-
requestPasswordReset,
|
|
377
|
-
resetPassword,
|
|
378
|
-
resetUserPassword,
|
|
379
|
-
setOrganizationAuth,
|
|
380
|
-
setProjectAuth,
|
|
381
|
-
setUserAuth,
|
|
382
|
-
testUserPassword,
|
|
383
|
-
updateUserProvider
|
|
384
|
-
});
|
|
385
|
-
//# sourceMappingURL=sessionAuth.service.cjs.map
|