@axiumine/koa-utils 3.7.3
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 +236 -0
- package/dist/dataSources/MariaDB.d.mts +4 -0
- package/dist/dataSources/MariaDB.mjs +74 -0
- package/dist/dataSources/MariaDB.mjs.map +1 -0
- package/dist/dataSources/MongoDB.d.mts +2 -0
- package/dist/dataSources/MongoDB.mjs +35 -0
- package/dist/dataSources/MongoDB.mjs.map +1 -0
- package/dist/dataSources/PostgreSQL.d.mts +17 -0
- package/dist/dataSources/PostgreSQL.mjs +109 -0
- package/dist/dataSources/PostgreSQL.mjs.map +1 -0
- package/dist/dataSources/Redis.d.mts +4629 -0
- package/dist/dataSources/Redis.mjs +44 -0
- package/dist/dataSources/Redis.mjs.map +1 -0
- package/dist/email/SocketLabsLib.d.mts +109 -0
- package/dist/email/SocketLabsLib.mjs +500 -0
- package/dist/email/SocketLabsLib.mjs.map +1 -0
- package/dist/files/IUploadTemp.d.mts +4 -0
- package/dist/files/IUploadTemp.mjs +2 -0
- package/dist/files/IUploadTemp.mjs.map +1 -0
- package/dist/files/checkForNSFW.d.mts +1 -0
- package/dist/files/checkForNSFW.mjs +22 -0
- package/dist/files/checkForNSFW.mjs.map +1 -0
- package/dist/files/fileConst.d.mts +7 -0
- package/dist/files/fileConst.mjs +4 -0
- package/dist/files/fileConst.mjs.map +1 -0
- package/dist/files/moveFileStaticDomain.d.mts +8 -0
- package/dist/files/moveFileStaticDomain.mjs +13 -0
- package/dist/files/moveFileStaticDomain.mjs.map +1 -0
- package/dist/files/moveImageFile.d.mts +1 -0
- package/dist/files/moveImageFile.mjs +7 -0
- package/dist/files/moveImageFile.mjs.map +1 -0
- package/dist/files/moveTempFile.d.mts +7 -0
- package/dist/files/moveTempFile.mjs +18 -0
- package/dist/files/moveTempFile.mjs.map +1 -0
- package/dist/files/reEncodeToJpeg.d.mts +1 -0
- package/dist/files/reEncodeToJpeg.mjs +5 -0
- package/dist/files/reEncodeToJpeg.mjs.map +1 -0
- package/dist/files/reEncodeToPng.d.mts +1 -0
- package/dist/files/reEncodeToPng.mjs +5 -0
- package/dist/files/reEncodeToPng.mjs.map +1 -0
- package/dist/files/reEncodeToWebp.d.mts +1 -0
- package/dist/files/reEncodeToWebp.mjs +5 -0
- package/dist/files/reEncodeToWebp.mjs.map +1 -0
- package/dist/files/scanVirus.d.mts +6 -0
- package/dist/files/scanVirus.mjs +56 -0
- package/dist/files/scanVirus.mjs.map +1 -0
- package/dist/files/storeUploadAsTemp.d.mts +3 -0
- package/dist/files/storeUploadAsTemp.mjs +54 -0
- package/dist/files/storeUploadAsTemp.mjs.map +1 -0
- package/dist/files/uploadTempImage.d.mts +8 -0
- package/dist/files/uploadTempImage.mjs +42 -0
- package/dist/files/uploadTempImage.mjs.map +1 -0
- package/dist/files/uploadTempPdf.d.mts +8 -0
- package/dist/files/uploadTempPdf.mjs +42 -0
- package/dist/files/uploadTempPdf.mjs.map +1 -0
- package/dist/files/validateExtension.d.mts +6 -0
- package/dist/files/validateExtension.mjs +11 -0
- package/dist/files/validateExtension.mjs.map +1 -0
- package/dist/files/validateJpgPngExtension.d.mts +1 -0
- package/dist/files/validateJpgPngExtension.mjs +9 -0
- package/dist/files/validateJpgPngExtension.mjs.map +1 -0
- package/dist/files/validateMimeType.d.mts +6 -0
- package/dist/files/validateMimeType.mjs +18 -0
- package/dist/files/validateMimeType.mjs.map +1 -0
- package/dist/files/validateMimeTypeImages.d.mts +5 -0
- package/dist/files/validateMimeTypeImages.mjs +9 -0
- package/dist/files/validateMimeTypeImages.mjs.map +1 -0
- package/dist/files/validateMimeTypePdf.d.mts +5 -0
- package/dist/files/validateMimeTypePdf.mjs +9 -0
- package/dist/files/validateMimeTypePdf.mjs.map +1 -0
- package/dist/files/validatePdfExtension.d.mts +1 -0
- package/dist/files/validatePdfExtension.mjs +9 -0
- package/dist/files/validatePdfExtension.mjs.map +1 -0
- package/dist/graphQL/models/MongoDB/UserBase.d.mts +61 -0
- package/dist/graphQL/models/MongoDB/UserBase.mjs +112 -0
- package/dist/graphQL/models/MongoDB/UserBase.mjs.map +1 -0
- package/dist/graphQL/models/MongoDB/log/DevStatsGraphQLCalls.d.mts +25 -0
- package/dist/graphQL/models/MongoDB/log/DevStatsGraphQLCalls.mjs +36 -0
- package/dist/graphQL/models/MongoDB/log/DevStatsGraphQLCalls.mjs.map +1 -0
- package/dist/graphQL/models/MongoDB/log/LogGlobalError.d.mts +16 -0
- package/dist/graphQL/models/MongoDB/log/LogGlobalError.mjs +25 -0
- package/dist/graphQL/models/MongoDB/log/LogGlobalError.mjs.map +1 -0
- package/dist/graphQL/models/MongoDB/log/LogStatsGraphql.d.mts +18 -0
- package/dist/graphQL/models/MongoDB/log/LogStatsGraphql.mjs +33 -0
- package/dist/graphQL/models/MongoDB/log/LogStatsGraphql.mjs.map +1 -0
- package/dist/graphQL/models/MongoDB/log/LogThrow.d.mts +17 -0
- package/dist/graphQL/models/MongoDB/log/LogThrow.mjs +28 -0
- package/dist/graphQL/models/MongoDB/log/LogThrow.mjs.map +1 -0
- package/dist/graphQL/schema/GraphQLInput/GraphQLInputLogin.d.mts +2 -0
- package/dist/graphQL/schema/GraphQLInput/GraphQLInputLogin.mjs +9 -0
- package/dist/graphQL/schema/GraphQLInput/GraphQLInputLogin.mjs.map +1 -0
- package/dist/graphQL/schema/context/IContextAuthenticatedResource.d.mts +16 -0
- package/dist/graphQL/schema/context/IContextAuthenticatedResource.mjs +2 -0
- package/dist/graphQL/schema/context/IContextAuthenticatedResource.mjs.map +1 -0
- package/dist/graphQL/schema/context/IContextKoaErrorHandler.d.mts +11 -0
- package/dist/graphQL/schema/context/IContextKoaErrorHandler.mjs +2 -0
- package/dist/graphQL/schema/context/IContextKoaErrorHandler.mjs.map +1 -0
- package/dist/graphQL/schema/context/IContextLogin.d.mts +4 -0
- package/dist/graphQL/schema/context/IContextLogin.mjs +2 -0
- package/dist/graphQL/schema/context/IContextLogin.mjs.map +1 -0
- package/dist/graphQL/schema/context/IContextLogout.d.mts +18 -0
- package/dist/graphQL/schema/context/IContextLogout.mjs +2 -0
- package/dist/graphQL/schema/context/IContextLogout.mjs.map +1 -0
- package/dist/graphQL/schema/context/IContextRefresh.d.mts +19 -0
- package/dist/graphQL/schema/context/IContextRefresh.mjs +2 -0
- package/dist/graphQL/schema/context/IContextRefresh.mjs.map +1 -0
- package/dist/graphQL/schema/context/TCommonHeaders.d.mts +15 -0
- package/dist/graphQL/schema/context/TCommonHeaders.mjs +2 -0
- package/dist/graphQL/schema/context/TCommonHeaders.mjs.map +1 -0
- package/dist/graphQL/schema/interfaces/IFindAndUpdate.d.mts +16 -0
- package/dist/graphQL/schema/interfaces/IFindAndUpdate.mjs +2 -0
- package/dist/graphQL/schema/interfaces/IFindAndUpdate.mjs.map +1 -0
- package/dist/graphQL/schema/mutations/emailChangeHashVerify.d.mts +22 -0
- package/dist/graphQL/schema/mutations/emailChangeHashVerify.mjs +94 -0
- package/dist/graphQL/schema/mutations/emailChangeHashVerify.mjs.map +1 -0
- package/dist/graphQL/schema/mutations/login4Ever.d.mts +22 -0
- package/dist/graphQL/schema/mutations/login4Ever.mjs +60 -0
- package/dist/graphQL/schema/mutations/login4Ever.mjs.map +1 -0
- package/dist/graphQL/schema/mutations/loginAdmin.d.mts +29 -0
- package/dist/graphQL/schema/mutations/loginAdmin.mjs +59 -0
- package/dist/graphQL/schema/mutations/loginAdmin.mjs.map +1 -0
- package/dist/graphQL/schema/mutations/loginRememberme.d.mts +26 -0
- package/dist/graphQL/schema/mutations/loginRememberme.mjs +54 -0
- package/dist/graphQL/schema/mutations/loginRememberme.mjs.map +1 -0
- package/dist/graphQL/schema/mutations/logout.d.mts +7 -0
- package/dist/graphQL/schema/mutations/logout.mjs +28 -0
- package/dist/graphQL/schema/mutations/logout.mjs.map +1 -0
- package/dist/graphQL/schema/mutations/refresh.d.mts +10 -0
- package/dist/graphQL/schema/mutations/refresh.mjs +59 -0
- package/dist/graphQL/schema/mutations/refresh.mjs.map +1 -0
- package/dist/graphQL/schema/mutations/resetPwd.d.mts +19 -0
- package/dist/graphQL/schema/mutations/resetPwd.mjs +91 -0
- package/dist/graphQL/schema/mutations/resetPwd.mjs.map +1 -0
- package/dist/graphQL/schema/mutations/signUp.d.mts +19 -0
- package/dist/graphQL/schema/mutations/signUp.mjs +55 -0
- package/dist/graphQL/schema/mutations/signUp.mjs.map +1 -0
- package/dist/graphQL/schema/mutations/updatePassword.d.mts +23 -0
- package/dist/graphQL/schema/mutations/updatePassword.mjs +70 -0
- package/dist/graphQL/schema/mutations/updatePassword.mjs.map +1 -0
- package/dist/graphQL/schema/types/DeleteType.d.mts +6 -0
- package/dist/graphQL/schema/types/DeleteType.mjs +13 -0
- package/dist/graphQL/schema/types/DeleteType.mjs.map +1 -0
- package/dist/graphQL/schema/types/DoneType.d.mts +2 -0
- package/dist/graphQL/schema/types/DoneType.mjs +10 -0
- package/dist/graphQL/schema/types/DoneType.mjs.map +1 -0
- package/dist/graphQL/schema/types/FindOneAndUpdateType.d.mts +2 -0
- package/dist/graphQL/schema/types/FindOneAndUpdateType.mjs +15 -0
- package/dist/graphQL/schema/types/FindOneAndUpdateType.mjs.map +1 -0
- package/dist/graphQL/schema/types/LoginAppType.d.mts +2 -0
- package/dist/graphQL/schema/types/LoginAppType.mjs +11 -0
- package/dist/graphQL/schema/types/LoginAppType.mjs.map +1 -0
- package/dist/graphQL/schema/types/LoginType.d.mts +2 -0
- package/dist/graphQL/schema/types/LoginType.mjs +9 -0
- package/dist/graphQL/schema/types/LoginType.mjs.map +1 -0
- package/dist/graphQL/schema/types/MidNameType.d.mts +5 -0
- package/dist/graphQL/schema/types/MidNameType.mjs +12 -0
- package/dist/graphQL/schema/types/MidNameType.mjs.map +1 -0
- package/dist/graphQL/schema/types/OnlyIdType.d.mts +2 -0
- package/dist/graphQL/schema/types/OnlyIdType.mjs +8 -0
- package/dist/graphQL/schema/types/OnlyIdType.mjs.map +1 -0
- package/dist/graphQL/schema/types/RefreshType.d.mts +2 -0
- package/dist/graphQL/schema/types/RefreshType.mjs +10 -0
- package/dist/graphQL/schema/types/RefreshType.mjs.map +1 -0
- package/dist/graphQL/schema/types/RetStatusMexType.d.mts +2 -0
- package/dist/graphQL/schema/types/RetStatusMexType.mjs +9 -0
- package/dist/graphQL/schema/types/RetStatusMexType.mjs.map +1 -0
- package/dist/graphQL/schema/types/RetStatusType.d.mts +2 -0
- package/dist/graphQL/schema/types/RetStatusType.mjs +8 -0
- package/dist/graphQL/schema/types/RetStatusType.mjs.map +1 -0
- package/dist/graphQL/schema/types/SaveType.d.mts +2 -0
- package/dist/graphQL/schema/types/SaveType.mjs +9 -0
- package/dist/graphQL/schema/types/SaveType.mjs.map +1 -0
- package/dist/graphQL/schema/types/SidNameType.d.mts +5 -0
- package/dist/graphQL/schema/types/SidNameType.mjs +12 -0
- package/dist/graphQL/schema/types/SidNameType.mjs.map +1 -0
- package/dist/graphQL/schema/types/SidNomeType.d.mts +5 -0
- package/dist/graphQL/schema/types/SidNomeType.mjs +12 -0
- package/dist/graphQL/schema/types/SidNomeType.mjs.map +1 -0
- package/dist/graphQL/schema/types/UpdateResultType.d.mts +2 -0
- package/dist/graphQL/schema/types/UpdateResultType.mjs +9 -0
- package/dist/graphQL/schema/types/UpdateResultType.mjs.map +1 -0
- package/dist/graphQL/status.d.mts +7 -0
- package/dist/graphQL/status.mjs +8 -0
- package/dist/graphQL/status.mjs.map +1 -0
- package/dist/graphQL/throw/throwAccessTokenExpiredOrDeleted.d.mts +1 -0
- package/dist/graphQL/throw/throwAccessTokenExpiredOrDeleted.mjs +5 -0
- package/dist/graphQL/throw/throwAccessTokenExpiredOrDeleted.mjs.map +1 -0
- package/dist/graphQL/throw/throwAccessTokenRequired.d.mts +1 -0
- package/dist/graphQL/throw/throwAccessTokenRequired.mjs +5 -0
- package/dist/graphQL/throw/throwAccessTokenRequired.mjs.map +1 -0
- package/dist/graphQL/throw/throwAlreadyDone.d.mts +4 -0
- package/dist/graphQL/throw/throwAlreadyDone.mjs +8 -0
- package/dist/graphQL/throw/throwAlreadyDone.mjs.map +1 -0
- package/dist/graphQL/throw/throwAlreadyTakenError.d.mts +1 -0
- package/dist/graphQL/throw/throwAlreadyTakenError.mjs +6 -0
- package/dist/graphQL/throw/throwAlreadyTakenError.mjs.map +1 -0
- package/dist/graphQL/throw/throwConflictError.d.mts +1 -0
- package/dist/graphQL/throw/throwConflictError.mjs +6 -0
- package/dist/graphQL/throw/throwConflictError.mjs.map +1 -0
- package/dist/graphQL/throw/throwErrorWrongUserInput.d.mts +1 -0
- package/dist/graphQL/throw/throwErrorWrongUserInput.mjs +5 -0
- package/dist/graphQL/throw/throwErrorWrongUserInput.mjs.map +1 -0
- package/dist/graphQL/throw/throwForbiddenError.d.mts +1 -0
- package/dist/graphQL/throw/throwForbiddenError.mjs +5 -0
- package/dist/graphQL/throw/throwForbiddenError.mjs.map +1 -0
- package/dist/graphQL/throw/throwGoneError.d.mts +1 -0
- package/dist/graphQL/throw/throwGoneError.mjs +6 -0
- package/dist/graphQL/throw/throwGoneError.mjs.map +1 -0
- package/dist/graphQL/throw/throwGraphQLError.d.mts +1 -0
- package/dist/graphQL/throw/throwGraphQLError.mjs +10 -0
- package/dist/graphQL/throw/throwGraphQLError.mjs.map +1 -0
- package/dist/graphQL/throw/throwInternalError.d.mts +1 -0
- package/dist/graphQL/throw/throwInternalError.mjs +5 -0
- package/dist/graphQL/throw/throwInternalError.mjs.map +1 -0
- package/dist/graphQL/throw/throwMethodNotAllowedError.d.mts +1 -0
- package/dist/graphQL/throw/throwMethodNotAllowedError.mjs +6 -0
- package/dist/graphQL/throw/throwMethodNotAllowedError.mjs.map +1 -0
- package/dist/graphQL/throw/throwMissingMalformedInvalidToken.d.mts +1 -0
- package/dist/graphQL/throw/throwMissingMalformedInvalidToken.mjs +5 -0
- package/dist/graphQL/throw/throwMissingMalformedInvalidToken.mjs.map +1 -0
- package/dist/graphQL/throw/throwNotAcceptableError.d.mts +1 -0
- package/dist/graphQL/throw/throwNotAcceptableError.mjs +6 -0
- package/dist/graphQL/throw/throwNotAcceptableError.mjs.map +1 -0
- package/dist/graphQL/throw/throwNotFoundError.d.mts +1 -0
- package/dist/graphQL/throw/throwNotFoundError.mjs +6 -0
- package/dist/graphQL/throw/throwNotFoundError.mjs.map +1 -0
- package/dist/graphQL/throw/throwNotImplementedError.d.mts +1 -0
- package/dist/graphQL/throw/throwNotImplementedError.mjs +6 -0
- package/dist/graphQL/throw/throwNotImplementedError.mjs.map +1 -0
- package/dist/graphQL/throw/throwPaymentRequiredError.d.mts +1 -0
- package/dist/graphQL/throw/throwPaymentRequiredError.mjs +5 -0
- package/dist/graphQL/throw/throwPaymentRequiredError.mjs.map +1 -0
- package/dist/graphQL/throw/throwPreconditionFailedNoAuthCookie.d.mts +1 -0
- package/dist/graphQL/throw/throwPreconditionFailedNoAuthCookie.mjs +5 -0
- package/dist/graphQL/throw/throwPreconditionFailedNoAuthCookie.mjs.map +1 -0
- package/dist/graphQL/throw/throwPreconditionFailedNoAuthHeader.d.mts +1 -0
- package/dist/graphQL/throw/throwPreconditionFailedNoAuthHeader.mjs +5 -0
- package/dist/graphQL/throw/throwPreconditionFailedNoAuthHeader.mjs.map +1 -0
- package/dist/graphQL/throw/throwRefreshTokenExpiredOrDeleted.d.mts +1 -0
- package/dist/graphQL/throw/throwRefreshTokenExpiredOrDeleted.mjs +5 -0
- package/dist/graphQL/throw/throwRefreshTokenExpiredOrDeleted.mjs.map +1 -0
- package/dist/graphQL/throw/throwRefreshTokenRequired.d.mts +1 -0
- package/dist/graphQL/throw/throwRefreshTokenRequired.mjs +5 -0
- package/dist/graphQL/throw/throwRefreshTokenRequired.mjs.map +1 -0
- package/dist/graphQL/throw/throwRefreshTokenSignatureRequired.d.mts +1 -0
- package/dist/graphQL/throw/throwRefreshTokenSignatureRequired.mjs +5 -0
- package/dist/graphQL/throw/throwRefreshTokenSignatureRequired.mjs.map +1 -0
- package/dist/graphQL/throw/throwTooManyRequestsError.d.mts +1 -0
- package/dist/graphQL/throw/throwTooManyRequestsError.mjs +5 -0
- package/dist/graphQL/throw/throwTooManyRequestsError.mjs.map +1 -0
- package/dist/graphQL/throw/throwUnauthorizedError.d.mts +1 -0
- package/dist/graphQL/throw/throwUnauthorizedError.mjs +5 -0
- package/dist/graphQL/throw/throwUnauthorizedError.mjs.map +1 -0
- package/dist/graphQL/throw/throwUnprocessableContentError.d.mts +1 -0
- package/dist/graphQL/throw/throwUnprocessableContentError.mjs +5 -0
- package/dist/graphQL/throw/throwUnprocessableContentError.mjs.map +1 -0
- package/dist/graphQL/throw/throwUnsupportedMediaTypeError.d.mts +1 -0
- package/dist/graphQL/throw/throwUnsupportedMediaTypeError.mjs +5 -0
- package/dist/graphQL/throw/throwUnsupportedMediaTypeError.mjs.map +1 -0
- package/dist/koa/IFileUpload.d.mts +6 -0
- package/dist/koa/IFileUpload.mjs +2 -0
- package/dist/koa/IFileUpload.mjs.map +1 -0
- package/dist/koa/IKoaError.d.mts +15 -0
- package/dist/koa/IKoaError.mjs +2 -0
- package/dist/koa/IKoaError.mjs.map +1 -0
- package/dist/koa/customFormatErrorFn.d.mts +2 -0
- package/dist/koa/customFormatErrorFn.mjs +10 -0
- package/dist/koa/customFormatErrorFn.mjs.map +1 -0
- package/dist/koa/logRequestToDb.d.mts +3 -0
- package/dist/koa/logRequestToDb.mjs +16 -0
- package/dist/koa/logRequestToDb.mjs.map +1 -0
- package/dist/koa/middleware/authenticatedAuthorizationHandler/TCookieRefreshToken.d.mts +4 -0
- package/dist/koa/middleware/authenticatedAuthorizationHandler/TCookieRefreshToken.mjs +2 -0
- package/dist/koa/middleware/authenticatedAuthorizationHandler/TCookieRefreshToken.mjs.map +1 -0
- package/dist/koa/middleware/authenticatedAuthorizationHandler/index.d.mts +4 -0
- package/dist/koa/middleware/authenticatedAuthorizationHandler/index.mjs +35 -0
- package/dist/koa/middleware/authenticatedAuthorizationHandler/index.mjs.map +1 -0
- package/dist/koa/middleware/authenticatedAuthorizationHandler/verifySignedRefreshToken.d.mts +3 -0
- package/dist/koa/middleware/authenticatedAuthorizationHandler/verifySignedRefreshToken.mjs +41 -0
- package/dist/koa/middleware/authenticatedAuthorizationHandler/verifySignedRefreshToken.mjs.map +1 -0
- package/dist/koa/middleware/authenticatedLogoutHandler/index.d.mts +4 -0
- package/dist/koa/middleware/authenticatedLogoutHandler/index.mjs +65 -0
- package/dist/koa/middleware/authenticatedLogoutHandler/index.mjs.map +1 -0
- package/dist/koa/middleware/authenticatedResourceHandler/index.d.mts +6 -0
- package/dist/koa/middleware/authenticatedResourceHandler/index.mjs +47 -0
- package/dist/koa/middleware/authenticatedResourceHandler/index.mjs.map +1 -0
- package/dist/koa/middleware/debug/index.d.mts +3 -0
- package/dist/koa/middleware/debug/index.mjs +9 -0
- package/dist/koa/middleware/debug/index.mjs.map +1 -0
- package/dist/koa/router/verifyEmail.d.mts +2 -0
- package/dist/koa/router/verifyEmail.mjs +46 -0
- package/dist/koa/router/verifyEmail.mjs.map +1 -0
- package/dist/koa/tdwKoaErrorHandler.d.mts +3 -0
- package/dist/koa/tdwKoaErrorHandler.mjs +40 -0
- package/dist/koa/tdwKoaErrorHandler.mjs.map +1 -0
- package/dist/lib/ArrayLib.d.mts +4 -0
- package/dist/lib/ArrayLib.mjs +10 -0
- package/dist/lib/ArrayLib.mjs.map +1 -0
- package/dist/lib/Constants.d.mts +7 -0
- package/dist/lib/Constants.mjs +8 -0
- package/dist/lib/Constants.mjs.map +1 -0
- package/dist/lib/DateLib.d.mts +9 -0
- package/dist/lib/DateLib.mjs +36 -0
- package/dist/lib/DateLib.mjs.map +1 -0
- package/dist/lib/IAuthorizationDisDel.d.mts +4 -0
- package/dist/lib/IAuthorizationDisDel.mjs +2 -0
- package/dist/lib/IAuthorizationDisDel.mjs.map +1 -0
- package/dist/lib/ICookies.d.mts +13 -0
- package/dist/lib/ICookies.mjs +2 -0
- package/dist/lib/ICookies.mjs.map +1 -0
- package/dist/lib/MariaDB/IMariaDBErr.d.mts +6 -0
- package/dist/lib/MariaDB/IMariaDBErr.mjs +2 -0
- package/dist/lib/MariaDB/IMariaDBErr.mjs.map +1 -0
- package/dist/lib/MariaDB/MariaDBErrType.d.mts +3 -0
- package/dist/lib/MariaDB/MariaDBErrType.mjs +6 -0
- package/dist/lib/MariaDB/MariaDBErrType.mjs.map +1 -0
- package/dist/lib/MariaDB/throwSqlErrors.d.mts +2 -0
- package/dist/lib/MariaDB/throwSqlErrors.mjs +22 -0
- package/dist/lib/MariaDB/throwSqlErrors.mjs.map +1 -0
- package/dist/lib/MongoDB/IMongoDBError.d.mts +12 -0
- package/dist/lib/MongoDB/IMongoDBError.mjs +2 -0
- package/dist/lib/MongoDB/IMongoDBError.mjs.map +1 -0
- package/dist/lib/MongoDB/IOnboarding.d.mts +4 -0
- package/dist/lib/MongoDB/IOnboarding.mjs +2 -0
- package/dist/lib/MongoDB/IOnboarding.mjs.map +1 -0
- package/dist/lib/MongoDB/MongoDBErrType.d.mts +3 -0
- package/dist/lib/MongoDB/MongoDBErrType.mjs +5 -0
- package/dist/lib/MongoDB/MongoDBErrType.mjs.map +1 -0
- package/dist/lib/MongoDB/throwIfMongoErr.d.mts +2 -0
- package/dist/lib/MongoDB/throwIfMongoErr.mjs +16 -0
- package/dist/lib/MongoDB/throwIfMongoErr.mjs.map +1 -0
- package/dist/lib/MongoDB/throwMongoErrors.d.mts +2 -0
- package/dist/lib/MongoDB/throwMongoErrors.mjs +10 -0
- package/dist/lib/MongoDB/throwMongoErrors.mjs.map +1 -0
- package/dist/lib/NumLib.d.mts +10 -0
- package/dist/lib/NumLib.mjs +14 -0
- package/dist/lib/NumLib.mjs.map +1 -0
- package/dist/lib/PostgreSQL/IPostgresError.d.mts +6 -0
- package/dist/lib/PostgreSQL/IPostgresError.mjs +2 -0
- package/dist/lib/PostgreSQL/IPostgresError.mjs.map +1 -0
- package/dist/lib/PostgreSQL/IPostgresErrorCodes.d.mts +3 -0
- package/dist/lib/PostgreSQL/IPostgresErrorCodes.mjs +5 -0
- package/dist/lib/PostgreSQL/IPostgresErrorCodes.mjs.map +1 -0
- package/dist/lib/PostgreSQL/makePostgreSqlLogError.d.mts +2 -0
- package/dist/lib/PostgreSQL/makePostgreSqlLogError.mjs +4 -0
- package/dist/lib/PostgreSQL/makePostgreSqlLogError.mjs.map +1 -0
- package/dist/lib/Redis/RedisBoolean.d.mts +4 -0
- package/dist/lib/Redis/RedisBoolean.mjs +6 -0
- package/dist/lib/Redis/RedisBoolean.mjs.map +1 -0
- package/dist/lib/Redis/fromRedisBooleanValue.d.mts +2 -0
- package/dist/lib/Redis/fromRedisBooleanValue.mjs +5 -0
- package/dist/lib/Redis/fromRedisBooleanValue.mjs.map +1 -0
- package/dist/lib/Redis/toRedisBooleanValue.d.mts +2 -0
- package/dist/lib/Redis/toRedisBooleanValue.mjs +5 -0
- package/dist/lib/Redis/toRedisBooleanValue.mjs.map +1 -0
- package/dist/lib/StringLib.d.mts +16 -0
- package/dist/lib/StringLib.mjs +58 -0
- package/dist/lib/StringLib.mjs.map +1 -0
- package/dist/lib/checkEmailLen.d.mts +1 -0
- package/dist/lib/checkEmailLen.mjs +11 -0
- package/dist/lib/checkEmailLen.mjs.map +1 -0
- package/dist/lib/checkPwdLen.d.mts +1 -0
- package/dist/lib/checkPwdLen.mjs +13 -0
- package/dist/lib/checkPwdLen.mjs.map +1 -0
- package/dist/lib/db/log/hitStat.d.mts +1 -0
- package/dist/lib/db/log/hitStat.mjs +13 -0
- package/dist/lib/db/log/hitStat.mjs.map +1 -0
- package/dist/lib/db/log/logGlobalError.d.mts +6 -0
- package/dist/lib/db/log/logGlobalError.mjs +12 -0
- package/dist/lib/db/log/logGlobalError.mjs.map +1 -0
- package/dist/lib/db/log/logGraphql.d.mts +9 -0
- package/dist/lib/db/log/logGraphql.mjs +27 -0
- package/dist/lib/db/log/logGraphql.mjs.map +1 -0
- package/dist/lib/db/log/logThrow.d.mts +1 -0
- package/dist/lib/db/log/logThrow.mjs +15 -0
- package/dist/lib/db/log/logThrow.mjs.map +1 -0
- package/dist/lib/db/login/ILoginSet.d.mts +7 -0
- package/dist/lib/db/login/ILoginSet.mjs +2 -0
- package/dist/lib/db/login/ILoginSet.mjs.map +1 -0
- package/dist/lib/db/login/ILoginUnset.d.mts +5 -0
- package/dist/lib/db/login/ILoginUnset.mjs +2 -0
- package/dist/lib/db/login/ILoginUnset.mjs.map +1 -0
- package/dist/lib/db/registerNewUser.d.mts +2 -0
- package/dist/lib/db/registerNewUser.mjs +33 -0
- package/dist/lib/db/registerNewUser.mjs.map +1 -0
- package/dist/lib/db/userExist.d.mts +2 -0
- package/dist/lib/db/userExist.mjs +8 -0
- package/dist/lib/db/userExist.mjs.map +1 -0
- package/dist/lib/emailHash.d.mts +1 -0
- package/dist/lib/emailHash.mjs +7 -0
- package/dist/lib/emailHash.mjs.map +1 -0
- package/dist/lib/encryptPassword.d.mts +1 -0
- package/dist/lib/encryptPassword.mjs +6 -0
- package/dist/lib/encryptPassword.mjs.map +1 -0
- package/dist/lib/hash.d.mts +6 -0
- package/dist/lib/hash.mjs +15 -0
- package/dist/lib/hash.mjs.map +1 -0
- package/dist/lib/makeOnboardingData.d.mts +2 -0
- package/dist/lib/makeOnboardingData.mjs +4 -0
- package/dist/lib/makeOnboardingData.mjs.map +1 -0
- package/dist/lib/setLoginCookies.d.mts +2 -0
- package/dist/lib/setLoginCookies.mjs +10 -0
- package/dist/lib/setLoginCookies.mjs.map +1 -0
- package/dist/lib/sleepMs.d.mts +1 -0
- package/dist/lib/sleepMs.mjs +2 -0
- package/dist/lib/sleepMs.mjs.map +1 -0
- package/dist/lib/throwIfNotValidEnumValue.d.mts +1 -0
- package/dist/lib/throwIfNotValidEnumValue.mjs +8 -0
- package/dist/lib/throwIfNotValidEnumValue.mjs.map +1 -0
- package/dist/lib/tokenOptions.d.mts +12 -0
- package/dist/lib/tokenOptions.mjs +17 -0
- package/dist/lib/tokenOptions.mjs.map +1 -0
- package/dist/lib/tokens.d.mts +4 -0
- package/dist/lib/tokens.mjs +22 -0
- package/dist/lib/tokens.mjs.map +1 -0
- package/dist/lib/tryCatchRethrow.d.mts +2 -0
- package/dist/lib/tryCatchRethrow.mjs +20 -0
- package/dist/lib/tryCatchRethrow.mjs.map +1 -0
- package/dist/private/files/_validateMimeType.d.mts +6 -0
- package/dist/private/files/_validateMimeType.mjs +21 -0
- package/dist/private/files/_validateMimeType.mjs.map +1 -0
- package/dist/private/files/reEncode.d.mts +10 -0
- package/dist/private/files/reEncode.mjs +61 -0
- package/dist/private/files/reEncode.mjs.map +1 -0
- package/dist/private/graphQL/Consts.d.mts +2 -0
- package/dist/private/graphQL/Consts.mjs +3 -0
- package/dist/private/graphQL/Consts.mjs.map +1 -0
- package/dist/private/graphQL/models/MongoDB/private/UserAdminKoaUtils.d.mts +58 -0
- package/dist/private/graphQL/models/MongoDB/private/UserAdminKoaUtils.mjs +107 -0
- package/dist/private/graphQL/models/MongoDB/private/UserAdminKoaUtils.mjs.map +1 -0
- package/dist/private/graphQL/schema/context/IContextLog.d.mts +15 -0
- package/dist/private/graphQL/schema/context/IContextLog.mjs +2 -0
- package/dist/private/graphQL/schema/context/IContextLog.mjs.map +1 -0
- package/dist/private/graphQL/schema/context/IContextVerifyEmail.d.mts +7 -0
- package/dist/private/graphQL/schema/context/IContextVerifyEmail.mjs +2 -0
- package/dist/private/graphQL/schema/context/IContextVerifyEmail.mjs.map +1 -0
- package/dist/private/graphQL/schema/mutations/checkUserAdminLoginAuthorization.d.mts +5 -0
- package/dist/private/graphQL/schema/mutations/checkUserAdminLoginAuthorization.mjs +30 -0
- package/dist/private/graphQL/schema/mutations/checkUserAdminLoginAuthorization.mjs.map +1 -0
- package/dist/private/graphQL/schema/mutations/checkUserLoginAuthorization.d.mts +5 -0
- package/dist/private/graphQL/schema/mutations/checkUserLoginAuthorization.mjs +32 -0
- package/dist/private/graphQL/schema/mutations/checkUserLoginAuthorization.mjs.map +1 -0
- package/dist/private/graphQL/schema/mutations/infoUserAdminForLogin.d.mts +3 -0
- package/dist/private/graphQL/schema/mutations/infoUserAdminForLogin.mjs +14 -0
- package/dist/private/graphQL/schema/mutations/infoUserAdminForLogin.mjs.map +1 -0
- package/dist/private/graphQL/schema/mutations/infoUserForLogin.d.mts +3 -0
- package/dist/private/graphQL/schema/mutations/infoUserForLogin.mjs +14 -0
- package/dist/private/graphQL/schema/mutations/infoUserForLogin.mjs.map +1 -0
- package/dist/private/graphQL/schema/mutations/infoUserForLoginSQL.d.mts +8 -0
- package/dist/private/graphQL/schema/mutations/infoUserForLoginSQL.mjs +16 -0
- package/dist/private/graphQL/schema/mutations/infoUserForLoginSQL.mjs.map +1 -0
- package/dist/private/graphQL/schema/mutations/setLastLoginSQL.d.mts +1 -0
- package/dist/private/graphQL/schema/mutations/setLastLoginSQL.mjs +25 -0
- package/dist/private/graphQL/schema/mutations/setLastLoginSQL.mjs.map +1 -0
- package/dist/private/graphQL/schema/mutations/setRedisLoginSession.d.mts +2 -0
- package/dist/private/graphQL/schema/mutations/setRedisLoginSession.mjs +33 -0
- package/dist/private/graphQL/schema/mutations/setRedisLoginSession.mjs.map +1 -0
- package/dist/private/graphQL/schema/mutations/updateAdminLoginStats.d.mts +2 -0
- package/dist/private/graphQL/schema/mutations/updateAdminLoginStats.mjs +27 -0
- package/dist/private/graphQL/schema/mutations/updateAdminLoginStats.mjs.map +1 -0
- package/dist/private/graphQL/schema/mutations/updateLoginStats4ever.d.mts +2 -0
- package/dist/private/graphQL/schema/mutations/updateLoginStats4ever.mjs +18 -0
- package/dist/private/graphQL/schema/mutations/updateLoginStats4ever.mjs.map +1 -0
- package/dist/private/graphQL/schema/mutations/updateLoginStatsRememberme.d.mts +2 -0
- package/dist/private/graphQL/schema/mutations/updateLoginStatsRememberme.mjs +27 -0
- package/dist/private/graphQL/schema/mutations/updateLoginStatsRememberme.mjs.map +1 -0
- package/dist/private/lib/access/Constants.d.mts +2 -0
- package/dist/private/lib/access/Constants.mjs +4 -0
- package/dist/private/lib/access/Constants.mjs.map +1 -0
- package/dist/private/lib/access/db/confirmNewEmail.d.mts +2 -0
- package/dist/private/lib/access/db/confirmNewEmail.mjs +13 -0
- package/dist/private/lib/access/db/confirmNewEmail.mjs.map +1 -0
- package/dist/private/lib/access/db/deleteUserByEmail.d.mts +1 -0
- package/dist/private/lib/access/db/deleteUserByEmail.mjs +8 -0
- package/dist/private/lib/access/db/deleteUserByEmail.mjs.map +1 -0
- package/dist/private/lib/access/db/enableEmailAccess.d.mts +2 -0
- package/dist/private/lib/access/db/enableEmailAccess.mjs +17 -0
- package/dist/private/lib/access/db/enableEmailAccess.mjs.map +1 -0
- package/dist/private/lib/access/db/getResetPwd.d.mts +7 -0
- package/dist/private/lib/access/db/getResetPwd.mjs +24 -0
- package/dist/private/lib/access/db/getResetPwd.mjs.map +1 -0
- package/dist/private/lib/access/db/incReqTimes.d.mts +2 -0
- package/dist/private/lib/access/db/incReqTimes.mjs +5 -0
- package/dist/private/lib/access/db/incReqTimes.mjs.map +1 -0
- package/dist/private/lib/access/db/removeResetReq.d.mts +2 -0
- package/dist/private/lib/access/db/removeResetReq.mjs +7 -0
- package/dist/private/lib/access/db/removeResetReq.mjs.map +1 -0
- package/dist/private/lib/access/db/saveResetReq.d.mts +2 -0
- package/dist/private/lib/access/db/saveResetReq.mjs +17 -0
- package/dist/private/lib/access/db/saveResetReq.mjs.map +1 -0
- package/dist/private/lib/access/db/setEmailHash.d.mts +2 -0
- package/dist/private/lib/access/db/setEmailHash.mjs +16 -0
- package/dist/private/lib/access/db/setEmailHash.mjs.map +1 -0
- package/dist/private/lib/access/db/updatePasswordDb.d.mts +2 -0
- package/dist/private/lib/access/db/updatePasswordDb.mjs +8 -0
- package/dist/private/lib/access/db/updatePasswordDb.mjs.map +1 -0
- package/dist/private/lib/access/db/userData4VerifyEmail.d.mts +3 -0
- package/dist/private/lib/access/db/userData4VerifyEmail.mjs +16 -0
- package/dist/private/lib/access/db/userData4VerifyEmail.mjs.map +1 -0
- package/dist/private/lib/access/handleBadDB.d.mts +1 -0
- package/dist/private/lib/access/handleBadDB.mjs +9 -0
- package/dist/private/lib/access/handleBadDB.mjs.map +1 -0
- package/dist/private/lib/access/handleIfAccountDeleted.d.mts +1 -0
- package/dist/private/lib/access/handleIfAccountDeleted.mjs +10 -0
- package/dist/private/lib/access/handleIfAccountDeleted.mjs.map +1 -0
- package/dist/private/lib/access/handleIfAccountDisabled.d.mts +1 -0
- package/dist/private/lib/access/handleIfAccountDisabled.mjs +10 -0
- package/dist/private/lib/access/handleIfAccountDisabled.mjs.map +1 -0
- package/dist/private/lib/access/handleIfEmailAlreadyValid.d.mts +1 -0
- package/dist/private/lib/access/handleIfEmailAlreadyValid.mjs +10 -0
- package/dist/private/lib/access/handleIfEmailAlreadyValid.mjs.map +1 -0
- package/dist/private/lib/access/handleIfHashBad.d.mts +11 -0
- package/dist/private/lib/access/handleIfHashBad.mjs +22 -0
- package/dist/private/lib/access/handleIfHashBad.mjs.map +1 -0
- package/dist/private/lib/access/handleIfMoreThan3DaysPassed.d.mts +1 -0
- package/dist/private/lib/access/handleIfMoreThan3DaysPassed.mjs +23 -0
- package/dist/private/lib/access/handleIfMoreThan3DaysPassed.mjs.map +1 -0
- package/dist/private/lib/access/handleIfTooMuchRequestsTimes.d.mts +1 -0
- package/dist/private/lib/access/handleIfTooMuchRequestsTimes.mjs +13 -0
- package/dist/private/lib/access/handleIfTooMuchRequestsTimes.mjs.map +1 -0
- package/dist/private/lib/makeBodyJson.d.mts +1 -0
- package/dist/private/lib/makeBodyJson.mjs +7 -0
- package/dist/private/lib/makeBodyJson.mjs.map +1 -0
- package/package.json +656 -0
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
import { SocketLabsLib } from "../../../email/SocketLabsLib.mjs";
|
|
2
|
+
import { StringLib } from "../../../lib/StringLib.mjs";
|
|
3
|
+
import { UserBase } from "../../models/MongoDB/UserBase.mjs";
|
|
4
|
+
import confirmNewEmail from "../../../private/lib/access/db/confirmNewEmail.mjs";
|
|
5
|
+
import { incReqTimes } from "../../../private/lib/access/db/incReqTimes.mjs";
|
|
6
|
+
import { throwInternalError } from "../../throw/throwInternalError.mjs";
|
|
7
|
+
import { GraphQLBoolean, GraphQLNonNull, GraphQLString } from 'graphql';
|
|
8
|
+
/**
|
|
9
|
+
* Change email - Verify match between email and hash
|
|
10
|
+
*/
|
|
11
|
+
export const emailChangeHashVerify = {
|
|
12
|
+
description: 'Change email - Verify match between email and hash',
|
|
13
|
+
type: new GraphQLNonNull(GraphQLBoolean),
|
|
14
|
+
args: {
|
|
15
|
+
email: { type: new GraphQLNonNull(GraphQLString) },
|
|
16
|
+
hash: { type: new GraphQLNonNull(GraphQLString) }
|
|
17
|
+
},
|
|
18
|
+
async resolve(_, args) {
|
|
19
|
+
const { email, hash } = args;
|
|
20
|
+
const uEmail = email.toLowerCase();
|
|
21
|
+
// search if the email exists
|
|
22
|
+
const user = await UserBase.findOne({ 'account.email.newEmailTmp': uEmail })
|
|
23
|
+
.select('_id account.email.hash account.email.dateLastReq account.deleted account.disabled')
|
|
24
|
+
.lean();
|
|
25
|
+
// if email not found, return
|
|
26
|
+
if (user === null) {
|
|
27
|
+
// <- not found or wrong, do not say to the user the real problem !
|
|
28
|
+
console.debug('email NON trovata ', uEmail);
|
|
29
|
+
return false; // @fixme throw
|
|
30
|
+
}
|
|
31
|
+
console.debug('email trovata');
|
|
32
|
+
const SocketLabsObj = new SocketLabsLib();
|
|
33
|
+
const StrLibObj = new StringLib();
|
|
34
|
+
console.debug('comparo hash ');
|
|
35
|
+
const accountEmail = user.account.email;
|
|
36
|
+
if (hash === accountEmail.hash) {
|
|
37
|
+
if (typeof accountEmail.dateLastReq === 'undefined') {
|
|
38
|
+
// @fixme sentry 'dateLastReq è undefined'
|
|
39
|
+
throw throwInternalError();
|
|
40
|
+
}
|
|
41
|
+
console.debug('hash link di attivazione è valido');
|
|
42
|
+
/****************************************************
|
|
43
|
+
* if dateLastReq too old then 3 days send email
|
|
44
|
+
*/
|
|
45
|
+
const now = new Date();
|
|
46
|
+
const day3ago = new Date(now.setDate(now.getDate() - 3));
|
|
47
|
+
const tsReq = StrLibObj.isoToTimestamp(accountEmail.dateLastReq);
|
|
48
|
+
const ts3DayAgo = StrLibObj.isoToTimestamp(day3ago);
|
|
49
|
+
if (ts3DayAgo > tsReq) {
|
|
50
|
+
// dateLastReq too old then 3 days
|
|
51
|
+
console.debug('but link is too old');
|
|
52
|
+
// noinspection ES6MissingAwait
|
|
53
|
+
SocketLabsObj.hashReqTooOld(uEmail);
|
|
54
|
+
return false;
|
|
55
|
+
}
|
|
56
|
+
// account is deleted -> maybe by admin for any reason
|
|
57
|
+
else if (user.account.deleted) {
|
|
58
|
+
return false;
|
|
59
|
+
}
|
|
60
|
+
// if account is disabled, for any reason
|
|
61
|
+
else if (user.account.disabled) {
|
|
62
|
+
// noinspection ES6MissingAwait
|
|
63
|
+
SocketLabsObj.accountDisabled(uEmail);
|
|
64
|
+
return false;
|
|
65
|
+
}
|
|
66
|
+
else {
|
|
67
|
+
// valid request. is this email free ?
|
|
68
|
+
// nel frattempo si è registrato qualche utente con questo indirizzo email ??
|
|
69
|
+
const qty = await UserBase.countDocuments({ 'login.email': uEmail });
|
|
70
|
+
if (qty === 0) {
|
|
71
|
+
// accept new email
|
|
72
|
+
await confirmNewEmail(user._id, uEmail);
|
|
73
|
+
return true;
|
|
74
|
+
}
|
|
75
|
+
else {
|
|
76
|
+
return false;
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
else {
|
|
81
|
+
// hash failed
|
|
82
|
+
console.debug('HASH FAILED');
|
|
83
|
+
const requestTimes = accountEmail.requestTimes;
|
|
84
|
+
if (typeof requestTimes === 'undefined') {
|
|
85
|
+
throw throwInternalError();
|
|
86
|
+
}
|
|
87
|
+
await incReqTimes(user._id);
|
|
88
|
+
// noinspection ES6MissingAwait
|
|
89
|
+
SocketLabsObj.wrongHash(uEmail, requestTimes);
|
|
90
|
+
return false;
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
};
|
|
94
|
+
//# sourceMappingURL=emailChangeHashVerify.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"emailChangeHashVerify.mjs","sourceRoot":"","sources":["../../../../../src/graphQL/schema/mutations/emailChangeHashVerify.mts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { IContextLogin } from "../context/IContextLogin.mjs";
|
|
2
|
+
import { GraphQLNonNull } from 'graphql';
|
|
3
|
+
interface IArgs {
|
|
4
|
+
email: string;
|
|
5
|
+
password: string;
|
|
6
|
+
}
|
|
7
|
+
export declare const login4Ever: {
|
|
8
|
+
description: string;
|
|
9
|
+
type: GraphQLNonNull<import("graphql").GraphQLObjectType<any, any>>;
|
|
10
|
+
args: {
|
|
11
|
+
email: {
|
|
12
|
+
type: GraphQLNonNull<import("graphql").GraphQLScalarType<string, string>>;
|
|
13
|
+
};
|
|
14
|
+
password: {
|
|
15
|
+
type: GraphQLNonNull<import("graphql").GraphQLScalarType<string, string>>;
|
|
16
|
+
};
|
|
17
|
+
};
|
|
18
|
+
resolve(_: unknown, args: IArgs, ctx: IContextLogin): Promise<{
|
|
19
|
+
accessToken: string;
|
|
20
|
+
}>;
|
|
21
|
+
};
|
|
22
|
+
export {};
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import { checkEmailLen } from "../../../lib/checkEmailLen.mjs";
|
|
2
|
+
import { checkPwdLen } from "../../../lib/checkPwdLen.mjs";
|
|
3
|
+
import { setLoginCookies } from "../../../lib/setLoginCookies.mjs";
|
|
4
|
+
import { accessTokenExpiry, generateAccessToken, generateRefreshToken } from "../../../lib/tokens.mjs";
|
|
5
|
+
import { tryCatchRethrow } from "../../../lib/tryCatchRethrow.mjs";
|
|
6
|
+
import { checkUserLoginAuthorization } from "../../../private/graphQL/schema/mutations/checkUserLoginAuthorization.mjs";
|
|
7
|
+
import { setRedisLoginSession } from "../../../private/graphQL/schema/mutations/setRedisLoginSession.mjs";
|
|
8
|
+
import { updateLoginStats4ever } from "../../../private/graphQL/schema/mutations/updateLoginStats4ever.mjs";
|
|
9
|
+
import * as Sentry from '@sentry/node';
|
|
10
|
+
import { LoginType } from "../types/LoginType.mjs";
|
|
11
|
+
import { GraphQLNonNull, GraphQLString } from 'graphql';
|
|
12
|
+
import mongoose from 'mongoose';
|
|
13
|
+
export const login4Ever = {
|
|
14
|
+
description: 'login in platform WITHOUT remember me flag',
|
|
15
|
+
type: new GraphQLNonNull(LoginType),
|
|
16
|
+
args: {
|
|
17
|
+
email: { type: new GraphQLNonNull(GraphQLString) },
|
|
18
|
+
password: { type: new GraphQLNonNull(GraphQLString) }
|
|
19
|
+
},
|
|
20
|
+
async resolve(_, args, ctx) {
|
|
21
|
+
const { email, password } = args;
|
|
22
|
+
//console.debug('[login4Ever]')
|
|
23
|
+
const uEmail = email.toLowerCase().trim();
|
|
24
|
+
checkEmailLen(uEmail);
|
|
25
|
+
checkPwdLen(password);
|
|
26
|
+
//console.debug('[login4Ever] data ok')
|
|
27
|
+
let accessToken = '';
|
|
28
|
+
const session = await mongoose.startSession();
|
|
29
|
+
try {
|
|
30
|
+
await session.withTransaction(async () => {
|
|
31
|
+
// search if the email exists
|
|
32
|
+
const user = await checkUserLoginAuthorization(uEmail, password, session);
|
|
33
|
+
//console.debug('[login4Ever] auth ok')
|
|
34
|
+
// pwd valid
|
|
35
|
+
const uId = user.userId;
|
|
36
|
+
await updateLoginStats4ever(uId, user.lastLogin, session);
|
|
37
|
+
//console.debug('[login4Ever] update ok')
|
|
38
|
+
// console.debug('[login] lastlogin ok')
|
|
39
|
+
accessToken = generateAccessToken();
|
|
40
|
+
const refreshToken = generateRefreshToken();
|
|
41
|
+
const accTokenExp = accessTokenExpiry();
|
|
42
|
+
await setRedisLoginSession(uId, accessToken, accTokenExp, refreshToken);
|
|
43
|
+
//console.debug('[login4Ever] redis ok')
|
|
44
|
+
setLoginCookies(ctx, refreshToken);
|
|
45
|
+
//console.debug('[login4Ever] login cookie ok')
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
catch (e) {
|
|
49
|
+
accessToken = '';
|
|
50
|
+
Sentry.captureException(e);
|
|
51
|
+
tryCatchRethrow(e);
|
|
52
|
+
}
|
|
53
|
+
finally {
|
|
54
|
+
await session.endSession();
|
|
55
|
+
}
|
|
56
|
+
//console.debug('[login4Ever] return accessToken', accessToken)
|
|
57
|
+
return { accessToken };
|
|
58
|
+
}
|
|
59
|
+
};
|
|
60
|
+
//# sourceMappingURL=login4Ever.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"login4Ever.mjs","sourceRoot":"","sources":["../../../../../src/graphQL/schema/mutations/login4Ever.mts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,uCAA8B;AACtD,OAAO,EAAE,WAAW,EAAE,qCAA4B;AAClD,OAAO,EAAE,eAAe,EAAE,yCAAgC;AAC1D,OAAO,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,gCAAuB;AAC9F,OAAO,EAAE,eAAe,EAAE,yCAAgC;AAC1D,OAAO,EAAE,2BAA2B,EAAE,kFAAyE;AAC/G,OAAO,EAAE,oBAAoB,EAAE,2EAAkE;AACjG,OAAO,EAAE,qBAAqB,EAAE,4EAAmE;AACnG,OAAO,KAAK,MAAM,MAAM,cAAc,CAAA;AACtC,OAAO,EAAE,SAAS,EAAE,+BAA6B;AACjD,OAAO,EAAgB,cAAc,EAAE,aAAa,EAAE,MAAM,SAAS,CAAA;AACrE,OAAO,QAAQ,MAAM,UAAU,CAAA;AAO/B,MAAM,CAAC,MAAM,UAAU,GAAG;IACzB,WAAW,EAAE,4CAA4C;IACzD,IAAI,EAAE,IAAI,cAAc,CAAC,SAAS,CAAC;IACnC,IAAI,EAAE;QACL,KAAK,EAAE,EAAE,IAAI,EAAE,IAAI,cAAc,CAAC,aAAa,CAAC,EAAE;QAClD,QAAQ,EAAE,EAAE,IAAI,EAAE,IAAI,cAAc,CAAC,aAAa,CAAC,EAAE;KACrD;IACD,KAAK,CAAC,OAAO,CAAC,CAAU,EAAE,IAAW,EAAE,GAAkB;QACxD,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAA;QAEhC,+BAA+B;QAE/B,MAAM,MAAM,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE,CAAA;QACzC,aAAa,CAAC,MAAM,CAAC,CAAA;QACrB,WAAW,CAAC,QAAQ,CAAC,CAAA;QACrB,uCAAuC;QAEvC,IAAI,WAAW,GAAG,EAAE,CAAA;QAEpB,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,YAAY,EAAE,CAAA;QAC7C,IAAI,CAAC;YACJ,MAAM,OAAO,CAAC,eAAe,CAAC,KAAK,IAAI,EAAE;gBACxC,6BAA6B;gBAC7B,MAAM,IAAI,GAAG,MAAM,2BAA2B,CAC7C,MAAM,EACN,QAAQ,EACR,OAAO,CACP,CAAA;gBACD,uCAAuC;gBAEvC,YAAY;gBACZ,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAA;gBACvB,MAAM,qBAAqB,CAAC,GAAG,EAAE,IAAI,CAAC,SAAS,EAAE,OAAO,CAAC,CAAA;gBACzD,yCAAyC;gBACzC,wCAAwC;gBAExC,WAAW,GAAG,mBAAmB,EAAE,CAAA;gBACnC,MAAM,YAAY,GAAG,oBAAoB,EAAE,CAAA;gBAC3C,MAAM,WAAW,GAAG,iBAAiB,EAAE,CAAA;gBAEvC,MAAM,oBAAoB,CAAC,GAAG,EAAE,WAAW,EAAE,WAAW,EAAE,YAAY,CAAC,CAAA;gBACvE,wCAAwC;gBACxC,eAAe,CAAC,GAAG,EAAE,YAAY,CAAC,CAAA;gBAClC,+CAA+C;YAChD,CAAC,CAAC,CAAA;QACH,CAAC;QAAC,OAAO,CAAU,EAAE,CAAC;YACrB,WAAW,GAAG,EAAE,CAAA;YAChB,MAAM,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAA;YAC1B,eAAe,CAAC,CAAyB,CAAC,CAAA;QAC3C,CAAC;gBAAS,CAAC;YACV,MAAM,OAAO,CAAC,UAAU,EAAE,CAAA;QAC3B,CAAC;QACD,+DAA+D;QAC/D,OAAO,EAAE,WAAW,EAAE,CAAA;IACvB,CAAC;CACD,CAAA"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { IContextLogin } from "../context/IContextLogin.mjs";
|
|
2
|
+
import { GraphQLNonNull } from 'graphql';
|
|
3
|
+
interface IArgs {
|
|
4
|
+
email: string;
|
|
5
|
+
password: string;
|
|
6
|
+
rememberMe: boolean;
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
*
|
|
10
|
+
*/
|
|
11
|
+
export declare const loginAdmin: {
|
|
12
|
+
description: string;
|
|
13
|
+
type: GraphQLNonNull<import("graphql").GraphQLObjectType<any, any>>;
|
|
14
|
+
args: {
|
|
15
|
+
email: {
|
|
16
|
+
type: GraphQLNonNull<import("graphql").GraphQLScalarType<string, string>>;
|
|
17
|
+
};
|
|
18
|
+
password: {
|
|
19
|
+
type: GraphQLNonNull<import("graphql").GraphQLScalarType<string, string>>;
|
|
20
|
+
};
|
|
21
|
+
rememberMe: {
|
|
22
|
+
type: GraphQLNonNull<import("graphql").GraphQLScalarType<boolean, boolean>>;
|
|
23
|
+
};
|
|
24
|
+
};
|
|
25
|
+
resolve(_: unknown, args: IArgs, ctx: IContextLogin): Promise<{
|
|
26
|
+
accessToken: string;
|
|
27
|
+
}>;
|
|
28
|
+
};
|
|
29
|
+
export {};
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import { checkEmailLen } from "../../../lib/checkEmailLen.mjs";
|
|
2
|
+
import { checkPwdLen } from "../../../lib/checkPwdLen.mjs";
|
|
3
|
+
import { setLoginCookies } from "../../../lib/setLoginCookies.mjs";
|
|
4
|
+
import { accessTokenExpiry, generateAccessToken, generateRefreshToken } from "../../../lib/tokens.mjs";
|
|
5
|
+
import { tryCatchRethrow } from "../../../lib/tryCatchRethrow.mjs";
|
|
6
|
+
import { checkUserAdminLoginAuthorization } from "../../../private/graphQL/schema/mutations/checkUserAdminLoginAuthorization.mjs";
|
|
7
|
+
import { setRedisLoginSession } from "../../../private/graphQL/schema/mutations/setRedisLoginSession.mjs";
|
|
8
|
+
import { updateAdminLoginStats } from "../../../private/graphQL/schema/mutations/updateAdminLoginStats.mjs";
|
|
9
|
+
import * as Sentry from '@sentry/node';
|
|
10
|
+
import { LoginType } from "../types/LoginType.mjs";
|
|
11
|
+
import { GraphQLBoolean, GraphQLNonNull, GraphQLString } from 'graphql';
|
|
12
|
+
import mongoose from 'mongoose';
|
|
13
|
+
/**
|
|
14
|
+
*
|
|
15
|
+
*/
|
|
16
|
+
export const loginAdmin = {
|
|
17
|
+
description: 'login admin in platform',
|
|
18
|
+
type: new GraphQLNonNull(LoginType),
|
|
19
|
+
args: {
|
|
20
|
+
email: { type: new GraphQLNonNull(GraphQLString) },
|
|
21
|
+
password: { type: new GraphQLNonNull(GraphQLString) },
|
|
22
|
+
rememberMe: { type: new GraphQLNonNull(GraphQLBoolean) }
|
|
23
|
+
},
|
|
24
|
+
async resolve(_, args, ctx) {
|
|
25
|
+
const { email, password, rememberMe } = args;
|
|
26
|
+
const uEmail = email.toLowerCase().trim();
|
|
27
|
+
checkEmailLen(uEmail);
|
|
28
|
+
checkPwdLen(password);
|
|
29
|
+
let accessToken = '';
|
|
30
|
+
const session = await mongoose.startSession();
|
|
31
|
+
try {
|
|
32
|
+
await session.withTransaction(async () => {
|
|
33
|
+
// search if the email exists
|
|
34
|
+
const user = await checkUserAdminLoginAuthorization(uEmail, password, session);
|
|
35
|
+
// pwd valid
|
|
36
|
+
const uId = user.userId;
|
|
37
|
+
await updateAdminLoginStats(uId, user.lastLogin, rememberMe, session);
|
|
38
|
+
// console.debug('[login] lastlogin ok')
|
|
39
|
+
accessToken = generateAccessToken();
|
|
40
|
+
const refreshToken = generateRefreshToken();
|
|
41
|
+
const accTokenExp = accessTokenExpiry();
|
|
42
|
+
await setRedisLoginSession(uId, accessToken, accTokenExp, refreshToken);
|
|
43
|
+
setLoginCookies(ctx, refreshToken);
|
|
44
|
+
});
|
|
45
|
+
}
|
|
46
|
+
catch (e) {
|
|
47
|
+
accessToken = '';
|
|
48
|
+
Sentry.captureException(e);
|
|
49
|
+
tryCatchRethrow(e);
|
|
50
|
+
}
|
|
51
|
+
finally {
|
|
52
|
+
await session.endSession();
|
|
53
|
+
}
|
|
54
|
+
return {
|
|
55
|
+
accessToken
|
|
56
|
+
};
|
|
57
|
+
}
|
|
58
|
+
};
|
|
59
|
+
//# sourceMappingURL=loginAdmin.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"loginAdmin.mjs","sourceRoot":"","sources":["../../../../../src/graphQL/schema/mutations/loginAdmin.mts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,uCAA8B;AACtD,OAAO,EAAE,WAAW,EAAE,qCAA4B;AAClD,OAAO,EAAE,eAAe,EAAE,yCAAgC;AAC1D,OAAO,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,gCAAuB;AAC9F,OAAO,EAAE,eAAe,EAAE,yCAAgC;AAC1D,OAAO,EACN,gCAAgC,EAChC,uFAA8E;AAC/E,OAAO,EAAE,oBAAoB,EAAE,2EAAkE;AACjG,OAAO,EAAE,qBAAqB,EAAE,4EAAmE;AACnG,OAAO,KAAK,MAAM,MAAM,cAAc,CAAA;AACtC,OAAO,EAAE,SAAS,EAAE,+BAA6B;AACjD,OAAO,EAAE,cAAc,EAAgB,cAAc,EAAE,aAAa,EAAE,MAAM,SAAS,CAAA;AACrF,OAAO,QAAQ,MAAM,UAAU,CAAA;AAQ/B;;GAEG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG;IACzB,WAAW,EAAE,yBAAyB;IACtC,IAAI,EAAE,IAAI,cAAc,CAAC,SAAS,CAAC;IACnC,IAAI,EAAE;QACL,KAAK,EAAE,EAAE,IAAI,EAAE,IAAI,cAAc,CAAC,aAAa,CAAC,EAAE;QAClD,QAAQ,EAAE,EAAE,IAAI,EAAE,IAAI,cAAc,CAAC,aAAa,CAAC,EAAE;QACrD,UAAU,EAAE,EAAE,IAAI,EAAE,IAAI,cAAc,CAAC,cAAc,CAAC,EAAE;KACxD;IACD,KAAK,CAAC,OAAO,CAAC,CAAU,EAAE,IAAW,EAAE,GAAkB;QACxD,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE,GAAG,IAAI,CAAA;QAE5C,MAAM,MAAM,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE,CAAA;QACzC,aAAa,CAAC,MAAM,CAAC,CAAA;QACrB,WAAW,CAAC,QAAQ,CAAC,CAAA;QAErB,IAAI,WAAW,GAAG,EAAE,CAAA;QAEpB,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,YAAY,EAAE,CAAA;QAC7C,IAAI,CAAC;YACJ,MAAM,OAAO,CAAC,eAAe,CAAC,KAAK,IAAI,EAAE;gBACxC,6BAA6B;gBAC7B,MAAM,IAAI,GAAG,MAAM,gCAAgC,CAClD,MAAM,EACN,QAAQ,EACR,OAAO,CACP,CAAA;gBACD,YAAY;gBACZ,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAA;gBACvB,MAAM,qBAAqB,CAAC,GAAG,EAAE,IAAI,CAAC,SAAS,EAAE,UAAU,EAAE,OAAO,CAAC,CAAA;gBACrE,wCAAwC;gBAExC,WAAW,GAAG,mBAAmB,EAAE,CAAA;gBACnC,MAAM,YAAY,GAAG,oBAAoB,EAAE,CAAA;gBAC3C,MAAM,WAAW,GAAG,iBAAiB,EAAE,CAAA;gBAEvC,MAAM,oBAAoB,CAAC,GAAG,EAAE,WAAW,EAAE,WAAW,EAAE,YAAY,CAAC,CAAA;gBACvE,eAAe,CAAC,GAAG,EAAE,YAAY,CAAC,CAAA;YACnC,CAAC,CAAC,CAAA;QACH,CAAC;QAAC,OAAO,CAAU,EAAE,CAAC;YACrB,WAAW,GAAG,EAAE,CAAA;YAChB,MAAM,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAA;YAC1B,eAAe,CAAC,CAAyB,CAAC,CAAA;QAC3C,CAAC;gBAAS,CAAC;YACV,MAAM,OAAO,CAAC,UAAU,EAAE,CAAA;QAC3B,CAAC;QAED,OAAO;YACN,WAAW;SACX,CAAA;IACF,CAAC;CACD,CAAA"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { IContextLogin } from "../context/IContextLogin.mjs";
|
|
2
|
+
import { GraphQLNonNull } from 'graphql';
|
|
3
|
+
interface IArgs {
|
|
4
|
+
email: string;
|
|
5
|
+
password: string;
|
|
6
|
+
rememberMe: boolean;
|
|
7
|
+
}
|
|
8
|
+
export declare const loginRememberme: {
|
|
9
|
+
description: string;
|
|
10
|
+
type: GraphQLNonNull<import("graphql").GraphQLObjectType<any, any>>;
|
|
11
|
+
args: {
|
|
12
|
+
email: {
|
|
13
|
+
type: GraphQLNonNull<import("graphql").GraphQLScalarType<string, string>>;
|
|
14
|
+
};
|
|
15
|
+
password: {
|
|
16
|
+
type: GraphQLNonNull<import("graphql").GraphQLScalarType<string, string>>;
|
|
17
|
+
};
|
|
18
|
+
rememberMe: {
|
|
19
|
+
type: GraphQLNonNull<import("graphql").GraphQLScalarType<boolean, boolean>>;
|
|
20
|
+
};
|
|
21
|
+
};
|
|
22
|
+
resolve(_: unknown, args: IArgs, ctx: IContextLogin): Promise<{
|
|
23
|
+
accessToken: string;
|
|
24
|
+
}>;
|
|
25
|
+
};
|
|
26
|
+
export {};
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import { checkEmailLen } from "../../../lib/checkEmailLen.mjs";
|
|
2
|
+
import { checkPwdLen } from "../../../lib/checkPwdLen.mjs";
|
|
3
|
+
import { setLoginCookies } from "../../../lib/setLoginCookies.mjs";
|
|
4
|
+
import { accessTokenExpiry, generateAccessToken, generateRefreshToken } from "../../../lib/tokens.mjs";
|
|
5
|
+
import { tryCatchRethrow } from "../../../lib/tryCatchRethrow.mjs";
|
|
6
|
+
import { checkUserLoginAuthorization } from "../../../private/graphQL/schema/mutations/checkUserLoginAuthorization.mjs";
|
|
7
|
+
import { setRedisLoginSession } from "../../../private/graphQL/schema/mutations/setRedisLoginSession.mjs";
|
|
8
|
+
import { updateLoginStatsRememberme } from "../../../private/graphQL/schema/mutations/updateLoginStatsRememberme.mjs";
|
|
9
|
+
import * as Sentry from '@sentry/node';
|
|
10
|
+
import { LoginType } from "../types/LoginType.mjs";
|
|
11
|
+
import { GraphQLBoolean, GraphQLNonNull, GraphQLString } from 'graphql';
|
|
12
|
+
import mongoose from 'mongoose';
|
|
13
|
+
export const loginRememberme = {
|
|
14
|
+
description: 'login in platform with remember me flag',
|
|
15
|
+
type: new GraphQLNonNull(LoginType),
|
|
16
|
+
args: {
|
|
17
|
+
email: { type: new GraphQLNonNull(GraphQLString) },
|
|
18
|
+
password: { type: new GraphQLNonNull(GraphQLString) },
|
|
19
|
+
rememberMe: { type: new GraphQLNonNull(GraphQLBoolean) }
|
|
20
|
+
},
|
|
21
|
+
async resolve(_, args, ctx) {
|
|
22
|
+
const { email, password, rememberMe } = args;
|
|
23
|
+
const uEmail = email.toLowerCase().trim();
|
|
24
|
+
checkEmailLen(uEmail);
|
|
25
|
+
checkPwdLen(password);
|
|
26
|
+
let accessToken = '';
|
|
27
|
+
const session = await mongoose.startSession();
|
|
28
|
+
try {
|
|
29
|
+
await session.withTransaction(async () => {
|
|
30
|
+
// search if the email exists
|
|
31
|
+
const user = await checkUserLoginAuthorization(uEmail, password, session);
|
|
32
|
+
// pwd valid
|
|
33
|
+
const uId = user.userId;
|
|
34
|
+
await updateLoginStatsRememberme(uId, user.lastLogin, rememberMe, session);
|
|
35
|
+
// console.debug('[login] lastlogin ok')
|
|
36
|
+
accessToken = generateAccessToken();
|
|
37
|
+
const refreshToken = generateRefreshToken();
|
|
38
|
+
const accTokenExp = accessTokenExpiry();
|
|
39
|
+
await setRedisLoginSession(uId, accessToken, accTokenExp, refreshToken);
|
|
40
|
+
setLoginCookies(ctx, refreshToken);
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
catch (e) {
|
|
44
|
+
accessToken = '';
|
|
45
|
+
Sentry.captureException(e);
|
|
46
|
+
tryCatchRethrow(e);
|
|
47
|
+
}
|
|
48
|
+
finally {
|
|
49
|
+
await session.endSession();
|
|
50
|
+
}
|
|
51
|
+
return { accessToken };
|
|
52
|
+
}
|
|
53
|
+
};
|
|
54
|
+
//# sourceMappingURL=loginRememberme.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"loginRememberme.mjs","sourceRoot":"","sources":["../../../../../src/graphQL/schema/mutations/loginRememberme.mts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,uCAA8B;AACtD,OAAO,EAAE,WAAW,EAAE,qCAA4B;AAClD,OAAO,EAAE,eAAe,EAAE,yCAAgC;AAC1D,OAAO,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,gCAAuB;AAC9F,OAAO,EAAE,eAAe,EAAE,yCAAgC;AAC1D,OAAO,EAAE,2BAA2B,EAAE,kFAAyE;AAC/G,OAAO,EAAE,oBAAoB,EAAE,2EAAkE;AACjG,OAAO,EAAE,0BAA0B,EAAE,iFAAwE;AAC7G,OAAO,KAAK,MAAM,MAAM,cAAc,CAAA;AACtC,OAAO,EAAE,SAAS,EAAE,+BAA6B;AACjD,OAAO,EAAE,cAAc,EAAgB,cAAc,EAAE,aAAa,EAAE,MAAM,SAAS,CAAA;AACrF,OAAO,QAAQ,MAAM,UAAU,CAAA;AAQ/B,MAAM,CAAC,MAAM,eAAe,GAAG;IAC9B,WAAW,EAAE,yCAAyC;IACtD,IAAI,EAAE,IAAI,cAAc,CAAC,SAAS,CAAC;IACnC,IAAI,EAAE;QACL,KAAK,EAAE,EAAE,IAAI,EAAE,IAAI,cAAc,CAAC,aAAa,CAAC,EAAE;QAClD,QAAQ,EAAE,EAAE,IAAI,EAAE,IAAI,cAAc,CAAC,aAAa,CAAC,EAAE;QACrD,UAAU,EAAE,EAAE,IAAI,EAAE,IAAI,cAAc,CAAC,cAAc,CAAC,EAAE;KACxD;IACD,KAAK,CAAC,OAAO,CAAC,CAAU,EAAE,IAAW,EAAE,GAAkB;QACxD,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE,GAAG,IAAI,CAAA;QAE5C,MAAM,MAAM,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE,CAAA;QACzC,aAAa,CAAC,MAAM,CAAC,CAAA;QACrB,WAAW,CAAC,QAAQ,CAAC,CAAA;QAErB,IAAI,WAAW,GAAG,EAAE,CAAA;QAEpB,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,YAAY,EAAE,CAAA;QAC7C,IAAI,CAAC;YACJ,MAAM,OAAO,CAAC,eAAe,CAAC,KAAK,IAAI,EAAE;gBACxC,6BAA6B;gBAC7B,MAAM,IAAI,GAAG,MAAM,2BAA2B,CAC7C,MAAM,EACN,QAAQ,EACR,OAAO,CACP,CAAA;gBACD,YAAY;gBACZ,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAA;gBACvB,MAAM,0BAA0B,CAAC,GAAG,EAAE,IAAI,CAAC,SAAS,EAAE,UAAU,EAAE,OAAO,CAAC,CAAA;gBAC1E,wCAAwC;gBAExC,WAAW,GAAG,mBAAmB,EAAE,CAAA;gBACnC,MAAM,YAAY,GAAG,oBAAoB,EAAE,CAAA;gBAC3C,MAAM,WAAW,GAAG,iBAAiB,EAAE,CAAA;gBAEvC,MAAM,oBAAoB,CAAC,GAAG,EAAE,WAAW,EAAE,WAAW,EAAE,YAAY,CAAC,CAAA;gBACvE,eAAe,CAAC,GAAG,EAAE,YAAY,CAAC,CAAA;YACnC,CAAC,CAAC,CAAA;QACH,CAAC;QAAC,OAAO,CAAU,EAAE,CAAC;YACrB,WAAW,GAAG,EAAE,CAAA;YAChB,MAAM,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAA;YAC1B,eAAe,CAAC,CAAyB,CAAC,CAAA;QAC3C,CAAC;gBAAS,CAAC;YACV,MAAM,OAAO,CAAC,UAAU,EAAE,CAAA;QAC3B,CAAC;QAED,OAAO,EAAE,WAAW,EAAE,CAAA;IACvB,CAAC;CACD,CAAA"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { IContextLogout } from "../context/IContextLogout.mjs";
|
|
2
|
+
import { GraphQLNonNull } from 'graphql';
|
|
3
|
+
export declare const logout: {
|
|
4
|
+
description: string;
|
|
5
|
+
type: GraphQLNonNull<import("graphql").GraphQLScalarType<boolean, boolean>>;
|
|
6
|
+
resolve(_: unknown, {}: {}, ctx: IContextLogout): Promise<boolean>;
|
|
7
|
+
};
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { redisClient } from "../../../dataSources/Redis.mjs";
|
|
2
|
+
import { refreshTokenOptions } from "../../../lib/tokenOptions.mjs";
|
|
3
|
+
import * as Sentry from '@sentry/node';
|
|
4
|
+
import * as dotenv from 'dotenv';
|
|
5
|
+
import { GraphQLBoolean, GraphQLNonNull } from 'graphql';
|
|
6
|
+
dotenv.config();
|
|
7
|
+
export const logout = {
|
|
8
|
+
description: 'logout',
|
|
9
|
+
type: new GraphQLNonNull(GraphQLBoolean),
|
|
10
|
+
async resolve(_, {}, ctx) {
|
|
11
|
+
try {
|
|
12
|
+
// elimina access token usato per fare questa chiamata
|
|
13
|
+
// e se esiste ancora, anche il refresh token
|
|
14
|
+
await redisClient.del(`${process.env.REDIS_KEY}refresh:${ctx.state.user.refreshToken}`);
|
|
15
|
+
if ((ctx.state.user?.accessToken || '') !== '') {
|
|
16
|
+
await redisClient.del(`${process.env.REDIS_KEY}access:${ctx.state.user.accessToken}`);
|
|
17
|
+
}
|
|
18
|
+
// delete cookies
|
|
19
|
+
ctx.cookies.set('refresh_token', '', refreshTokenOptions);
|
|
20
|
+
}
|
|
21
|
+
catch (e) {
|
|
22
|
+
// ignore errors
|
|
23
|
+
Sentry.captureException(e);
|
|
24
|
+
}
|
|
25
|
+
return true;
|
|
26
|
+
}
|
|
27
|
+
};
|
|
28
|
+
//# sourceMappingURL=logout.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logout.mjs","sourceRoot":"","sources":["../../../../../src/graphQL/schema/mutations/logout.mts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,uCAA8B;AACpD,OAAO,EAAE,mBAAmB,EAAE,sCAA6B;AAC3D,OAAO,KAAK,MAAM,MAAM,cAAc,CAAA;AACtC,OAAO,KAAK,MAAM,MAAM,QAAQ,CAAA;AAChC,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;AAExD,MAAM,CAAC,MAAM,EAAE,CAAA;AAEf,MAAM,CAAC,MAAM,MAAM,GAAG;IACrB,WAAW,EAAE,QAAQ;IACrB,IAAI,EAAE,IAAI,cAAc,CAAC,cAAc,CAAC;IACxC,KAAK,CAAC,OAAO,CAAC,CAAU,EAAE,EAAE,EAAE,GAAmB;QAChD,IAAI,CAAC;YACJ,sDAAsD;YACtD,6CAA6C;YAE7C,MAAM,WAAW,CAAC,GAAG,CACpB,GAAG,OAAO,CAAC,GAAG,CAAC,SAAS,WAAW,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,YAAY,EAAE,CAChE,CAAA;YAED,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,WAAW,IAAI,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC;gBAChD,MAAM,WAAW,CAAC,GAAG,CACpB,GAAG,OAAO,CAAC,GAAG,CAAC,SAAS,UAAU,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE,CAC9D,CAAA;YACF,CAAC;YAED,iBAAiB;YACjB,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,eAAe,EAAE,EAAE,EAAE,mBAAmB,CAAC,CAAA;QAC1D,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACZ,gBAAgB;YAChB,MAAM,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAA;QAC3B,CAAC;QAED,OAAO,IAAI,CAAA;IACZ,CAAC;CACD,CAAA"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { IContextRefresh } from "../context/IContextRefresh.mjs";
|
|
2
|
+
import { GraphQLNonNull } from 'graphql';
|
|
3
|
+
export declare const refresh: {
|
|
4
|
+
description: string;
|
|
5
|
+
type: GraphQLNonNull<import("graphql").GraphQLObjectType<any, any>>;
|
|
6
|
+
resolve(_: unknown, {}: {}, ctx: IContextRefresh): Promise<{
|
|
7
|
+
status: boolean;
|
|
8
|
+
accessToken: string;
|
|
9
|
+
}>;
|
|
10
|
+
};
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import { redisClient } from "../../../dataSources/Redis.mjs";
|
|
2
|
+
import { setLoginCookies } from "../../../lib/setLoginCookies.mjs";
|
|
3
|
+
import { accessTokenExpiry, generateAccessToken, generateRefreshToken, REFRESH_TOKEN_EXPIRY } from "../../../lib/tokens.mjs";
|
|
4
|
+
import { tryCatchRethrow } from "../../../lib/tryCatchRethrow.mjs";
|
|
5
|
+
import * as Sentry from '@sentry/node';
|
|
6
|
+
import { RefreshType } from "../types/RefreshType.mjs";
|
|
7
|
+
import * as dotenv from 'dotenv';
|
|
8
|
+
import { GraphQLNonNull } from 'graphql';
|
|
9
|
+
dotenv.config();
|
|
10
|
+
export const refresh = {
|
|
11
|
+
description: 'refresh token',
|
|
12
|
+
type: new GraphQLNonNull(RefreshType),
|
|
13
|
+
async resolve(_, {}, ctx) {
|
|
14
|
+
// console.debug('refresh')
|
|
15
|
+
let status = false; // default
|
|
16
|
+
// ha il refresh token, access token già scaduto
|
|
17
|
+
// prende id dell'utente già copiato in ctx
|
|
18
|
+
const userId = ctx.state.user.id.toString();
|
|
19
|
+
// genera i 2 nuovi token
|
|
20
|
+
let accessToken = generateAccessToken();
|
|
21
|
+
let refreshToken = generateRefreshToken();
|
|
22
|
+
const keyAccess = `${process.env.REDIS_KEY}access:${accessToken}`;
|
|
23
|
+
const keyRefresh = `${process.env.REDIS_KEY}refresh:${refreshToken}`;
|
|
24
|
+
let accessTokenData = ctx.state.user;
|
|
25
|
+
const oldRefresh = ctx.state.user.refreshToken;
|
|
26
|
+
// @ts-expect-error delete refresh
|
|
27
|
+
delete accessTokenData.refreshToken;
|
|
28
|
+
const refreshTokenData = { id: userId };
|
|
29
|
+
try {
|
|
30
|
+
// Store session in Redis
|
|
31
|
+
await Promise.all([
|
|
32
|
+
redisClient.hSet(keyAccess, accessTokenData),
|
|
33
|
+
redisClient.hSet(keyRefresh, refreshTokenData)
|
|
34
|
+
]);
|
|
35
|
+
// set expiry
|
|
36
|
+
const accTokenExp = accessTokenExpiry();
|
|
37
|
+
await Promise.all([
|
|
38
|
+
redisClient.expire(keyAccess, accTokenExp),
|
|
39
|
+
redisClient.expire(keyRefresh, REFRESH_TOKEN_EXPIRY)
|
|
40
|
+
]);
|
|
41
|
+
setLoginCookies(ctx, refreshToken);
|
|
42
|
+
// elimina refresh token usato per fare questa chiamata
|
|
43
|
+
await redisClient.del(`${process.env.REDIS_KEY}${oldRefresh}`);
|
|
44
|
+
status = true;
|
|
45
|
+
}
|
|
46
|
+
catch (e) {
|
|
47
|
+
Sentry.captureException(e);
|
|
48
|
+
// delete keys
|
|
49
|
+
await Promise.all([redisClient.del(keyAccess), redisClient.del(keyRefresh)]);
|
|
50
|
+
accessToken = '';
|
|
51
|
+
tryCatchRethrow(e);
|
|
52
|
+
}
|
|
53
|
+
return {
|
|
54
|
+
status,
|
|
55
|
+
accessToken
|
|
56
|
+
};
|
|
57
|
+
}
|
|
58
|
+
};
|
|
59
|
+
//# sourceMappingURL=refresh.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"refresh.mjs","sourceRoot":"","sources":["../../../../../src/graphQL/schema/mutations/refresh.mts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,uCAA8B;AACpD,OAAO,EAAE,eAAe,EAAE,yCAAgC;AAC1D,OAAO,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,gCAAuB;AACpH,OAAO,EAAE,eAAe,EAAE,yCAAgC;AAC1D,OAAO,KAAK,MAAM,MAAM,cAAc,CAAA;AACtC,OAAO,EAAE,WAAW,EAAE,iCAA+B;AACrD,OAAO,KAAK,MAAM,MAAM,QAAQ,CAAA;AAChC,OAAO,EAAgB,cAAc,EAAE,MAAM,SAAS,CAAA;AAEtD,MAAM,CAAC,MAAM,EAAE,CAAA;AAEf,MAAM,CAAC,MAAM,OAAO,GAAG;IACtB,WAAW,EAAE,eAAe;IAC5B,IAAI,EAAE,IAAI,cAAc,CAAC,WAAW,CAAC;IACrC,KAAK,CAAC,OAAO,CAAC,CAAU,EAAE,EAAE,EAAE,GAAoB;QACjD,2BAA2B;QAC3B,IAAI,MAAM,GAAG,KAAK,CAAA,CAAC,UAAU;QAE7B,gDAAgD;QAEhD,2CAA2C;QAC3C,MAAM,MAAM,GAAG,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAA;QAG3C,yBAAyB;QACzB,IAAI,WAAW,GAAG,mBAAmB,EAAE,CAAA;QACvC,IAAI,YAAY,GAAG,oBAAoB,EAAE,CAAA;QACzC,MAAM,SAAS,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,SAAS,UAAU,WAAW,EAAE,CAAA;QACjE,MAAM,UAAU,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,SAAS,WAAW,YAAY,EAAE,CAAA;QAEpE,IAAI,eAAe,GAAG,GAAG,CAAC,KAAK,CAAC,IAAI,CAAA;QACpC,MAAM,UAAU,GAAG,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,YAAY,CAAA;QAC9C,kCAAkC;QAClC,OAAO,eAAe,CAAC,YAAY,CAAA;QAEnC,MAAM,gBAAgB,GAAG,EAAE,EAAE,EAAE,MAAM,EAAE,CAAA;QAGvC,IAAI,CAAC;YACJ,yBAAyB;YACzB,MAAM,OAAO,CAAC,GAAG,CAAC;gBACjB,WAAW,CAAC,IAAI,CAAC,SAAS,EAAE,eAAoD,CAAC;gBACjF,WAAW,CAAC,IAAI,CAAC,UAAU,EAAE,gBAAqD,CAAC;aACnF,CAAC,CAAA;YAEF,aAAa;YACb,MAAM,WAAW,GAAG,iBAAiB,EAAE,CAAA;YACvC,MAAM,OAAO,CAAC,GAAG,CAAC;gBACjB,WAAW,CAAC,MAAM,CAAC,SAAS,EAAE,WAAW,CAAC;gBAC1C,WAAW,CAAC,MAAM,CAAC,UAAU,EAAE,oBAAoB,CAAC;aACpD,CAAC,CAAA;YAEF,eAAe,CAAC,GAAG,EAAE,YAAY,CAAC,CAAA;YAElC,uDAAuD;YACvD,MAAM,WAAW,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,SAAS,GAAG,UAAU,EAAE,CAAC,CAAA;YAE9D,MAAM,GAAG,IAAI,CAAA;QACd,CAAC;QAAC,OAAO,CAAU,EAAE,CAAC;YACrB,MAAM,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAA;YAC1B,cAAc;YACd,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,WAAW,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,WAAW,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAA;YAC5E,WAAW,GAAG,EAAE,CAAA;YAChB,eAAe,CAAC,CAAyB,CAAC,CAAA;QAC3C,CAAC;QAED,OAAO;YACN,MAAM;YACN,WAAW;SACX,CAAA;IACF,CAAC;CACD,CAAA"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { GraphQLNonNull } from 'graphql';
|
|
2
|
+
interface IArgs {
|
|
3
|
+
email: string;
|
|
4
|
+
}
|
|
5
|
+
/**
|
|
6
|
+
* Take the user email and send an email with a link for change the password.
|
|
7
|
+
* for privacy, true is returned if given email do not exist
|
|
8
|
+
*/
|
|
9
|
+
export declare const resetPwd: {
|
|
10
|
+
description: string;
|
|
11
|
+
type: GraphQLNonNull<import("graphql").GraphQLScalarType<boolean, boolean>>;
|
|
12
|
+
args: {
|
|
13
|
+
email: {
|
|
14
|
+
type: GraphQLNonNull<import("graphql").GraphQLScalarType<string, string>>;
|
|
15
|
+
};
|
|
16
|
+
};
|
|
17
|
+
resolve(_: unknown, args: IArgs): Promise<boolean>;
|
|
18
|
+
};
|
|
19
|
+
export {};
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
import { SocketLabsLib } from "../../../email/SocketLabsLib.mjs";
|
|
2
|
+
import { checkEmailLen } from "../../../lib/checkEmailLen.mjs";
|
|
3
|
+
import { EMAIL_HASH_LEN } from "../../../lib/Constants.mjs";
|
|
4
|
+
import { DateLib } from "../../../lib/DateLib.mjs";
|
|
5
|
+
import { StringLib } from "../../../lib/StringLib.mjs";
|
|
6
|
+
import { tryCatchRethrow } from "../../../lib/tryCatchRethrow.mjs";
|
|
7
|
+
import { getResetPwd } from "../../../private/lib/access/db/getResetPwd.mjs";
|
|
8
|
+
import { saveResetReq } from "../../../private/lib/access/db/saveResetReq.mjs";
|
|
9
|
+
import { throwTooManyRequestsError } from "../../throw/throwTooManyRequestsError.mjs";
|
|
10
|
+
import { GraphQLBoolean, GraphQLNonNull, GraphQLString } from 'graphql';
|
|
11
|
+
import mongoose from 'mongoose';
|
|
12
|
+
/**
|
|
13
|
+
* Take the user email and send an email with a link for change the password.
|
|
14
|
+
* for privacy, true is returned if given email do not exist
|
|
15
|
+
*/
|
|
16
|
+
export const resetPwd = {
|
|
17
|
+
description: 'send reset password link',
|
|
18
|
+
type: new GraphQLNonNull(GraphQLBoolean),
|
|
19
|
+
args: {
|
|
20
|
+
email: { type: new GraphQLNonNull(GraphQLString) }
|
|
21
|
+
},
|
|
22
|
+
async resolve(_, args) {
|
|
23
|
+
const { email } = args;
|
|
24
|
+
const uEmail = email.toLowerCase().trim();
|
|
25
|
+
checkEmailLen(uEmail);
|
|
26
|
+
const session = await mongoose.startSession();
|
|
27
|
+
try {
|
|
28
|
+
await session.withTransaction(async () => {
|
|
29
|
+
// console.debug('email esiste ?')
|
|
30
|
+
// email esiste ? -> recupera se ci sono gia state richieste di reset -> return 4xx ??
|
|
31
|
+
const resetPwdVal = await getResetPwd(session, uEmail);
|
|
32
|
+
// non facciamo sapere che l'email non è presente, per privacy
|
|
33
|
+
if (resetPwdVal !== null) {
|
|
34
|
+
// console.debug("l'email esiste")
|
|
35
|
+
// ok email esiste
|
|
36
|
+
// -> attendi 10 minuti dall'ultima richiesta di reset della password
|
|
37
|
+
// se c'è già una richiesta di password, legge la data in secondi.
|
|
38
|
+
const lastReq = typeof resetPwdVal.resetDateReq !== 'undefined'
|
|
39
|
+
? new Date('' + resetPwdVal.resetDateReq)
|
|
40
|
+
: null;
|
|
41
|
+
// richiesta già fatta in precedenza ?
|
|
42
|
+
// invia nuova email con link di recupero se inviata meno di 10 minuti fa'
|
|
43
|
+
let elapsedMin = 0;
|
|
44
|
+
const nowDt = new Date();
|
|
45
|
+
let calculateHash = false;
|
|
46
|
+
if (lastReq !== null) {
|
|
47
|
+
// console.debug('richiesta di reset gia eseguita')
|
|
48
|
+
elapsedMin = DateLib.minElapsed(lastReq);
|
|
49
|
+
// console.debug('precedente richiesta di reset della pwd: ' + lastReq + ' ora sono le ' + now + ' e sono passati ' + elapsedMin + ' minuti')
|
|
50
|
+
// se c'è gia stata una richiesta di reset pwd, devono essere passati almeno 10 minuti
|
|
51
|
+
if (elapsedMin < 10) {
|
|
52
|
+
// console.debug('last req < 10 min')
|
|
53
|
+
// Non facciamo sapere che l'email è stata trovata e
|
|
54
|
+
elapsedMin = 10 - elapsedMin;
|
|
55
|
+
if (elapsedMin < 0)
|
|
56
|
+
elapsedMin = 1; // per arrotondare i secondi dell'ultimo minuto, imposta minuto = 1
|
|
57
|
+
// console.debug('wait ' + message + ' min ' + uEmail)
|
|
58
|
+
throw throwTooManyRequestsError(elapsedMin.toString());
|
|
59
|
+
}
|
|
60
|
+
else {
|
|
61
|
+
// ok, maggiore di 10 minuti, allora genera hash per nuova email
|
|
62
|
+
calculateHash = true;
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
else {
|
|
66
|
+
//console.debug('prima richiesta di reset')
|
|
67
|
+
calculateHash = true;
|
|
68
|
+
}
|
|
69
|
+
if (calculateHash) {
|
|
70
|
+
// genera hash x reset pwd
|
|
71
|
+
const StrObj = new StringLib();
|
|
72
|
+
const hash = StrObj.randomString(EMAIL_HASH_LEN);
|
|
73
|
+
// imposta hash e data attuale di reset
|
|
74
|
+
await saveResetReq(session, resetPwdVal._id, nowDt, hash);
|
|
75
|
+
// invia email con nuovo hash, ultima req > 10 minuti
|
|
76
|
+
const SocketLabsObj = new SocketLabsLib();
|
|
77
|
+
await SocketLabsObj.sendEmailReset(uEmail, hash, resetPwdVal.name);
|
|
78
|
+
} // calculateHash & sendEmail
|
|
79
|
+
}
|
|
80
|
+
});
|
|
81
|
+
}
|
|
82
|
+
catch (e) {
|
|
83
|
+
tryCatchRethrow(e);
|
|
84
|
+
}
|
|
85
|
+
finally {
|
|
86
|
+
await session.endSession();
|
|
87
|
+
}
|
|
88
|
+
return true;
|
|
89
|
+
}
|
|
90
|
+
};
|
|
91
|
+
//# sourceMappingURL=resetPwd.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resetPwd.mjs","sourceRoot":"","sources":["../../../../../src/graphQL/schema/mutations/resetPwd.mts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { GraphQLNonNull } from 'graphql';
|
|
2
|
+
interface IArgs {
|
|
3
|
+
email: string;
|
|
4
|
+
password: string;
|
|
5
|
+
}
|
|
6
|
+
export declare const signUp: {
|
|
7
|
+
description: string;
|
|
8
|
+
type: GraphQLNonNull<import("graphql").GraphQLScalarType<boolean, boolean>>;
|
|
9
|
+
args: {
|
|
10
|
+
email: {
|
|
11
|
+
type: GraphQLNonNull<import("graphql").GraphQLScalarType<string, string>>;
|
|
12
|
+
};
|
|
13
|
+
password: {
|
|
14
|
+
type: GraphQLNonNull<import("graphql").GraphQLScalarType<string, string>>;
|
|
15
|
+
};
|
|
16
|
+
};
|
|
17
|
+
resolve(_: unknown, args: IArgs): Promise<boolean>;
|
|
18
|
+
};
|
|
19
|
+
export {};
|