payload 3.0.0-alpha.60 → 3.0.0-alpha.61
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/dist/admin/RichText.d.ts +3 -0
- package/dist/admin/RichText.d.ts.map +1 -1
- package/dist/admin/RichText.js.map +1 -1
- package/dist/admin/elements/Cell.js.map +1 -1
- package/dist/admin/elements/DatePicker.js.map +1 -1
- package/dist/admin/elements/PreviewButton.js.map +1 -1
- package/dist/admin/elements/PublishButton.js.map +1 -1
- package/dist/admin/elements/SaveButton.js.map +1 -1
- package/dist/admin/elements/SaveDraftButton.js.map +1 -1
- package/dist/admin/elements/Tab.js.map +1 -1
- package/dist/admin/forms/Error.js.map +1 -1
- package/dist/admin/forms/FieldDescription.d.ts +2 -1
- package/dist/admin/forms/FieldDescription.d.ts.map +1 -1
- package/dist/admin/forms/FieldDescription.js.map +1 -1
- package/dist/admin/forms/FieldTypes.js.map +1 -1
- package/dist/admin/forms/Form.js.map +1 -1
- package/dist/admin/forms/Label.d.ts +2 -1
- package/dist/admin/forms/Label.d.ts.map +1 -1
- package/dist/admin/forms/Label.js.map +1 -1
- package/dist/admin/forms/RowLabel.js.map +1 -1
- package/dist/admin/types.js.map +1 -1
- package/dist/admin/views/types.d.ts +2 -2
- package/dist/admin/views/types.d.ts.map +1 -1
- package/dist/admin/views/types.js.map +1 -1
- package/dist/assets/assets.d.js.map +1 -1
- package/dist/auth/baseFields/accountLock.js.map +1 -1
- package/dist/auth/baseFields/apiKey.d.ts.map +1 -1
- package/dist/auth/baseFields/apiKey.js +3 -7
- package/dist/auth/baseFields/apiKey.js.map +1 -1
- package/dist/auth/baseFields/auth.d.ts.map +1 -1
- package/dist/auth/baseFields/auth.js +1 -5
- package/dist/auth/baseFields/auth.js.map +1 -1
- package/dist/auth/baseFields/verification.d.ts.map +1 -1
- package/dist/auth/baseFields/verification.js +1 -5
- package/dist/auth/baseFields/verification.js.map +1 -1
- package/dist/auth/cookies.js.map +1 -1
- package/dist/auth/crypto.js.map +1 -1
- package/dist/auth/defaultAccess.js.map +1 -1
- package/dist/auth/defaultUser.d.ts.map +1 -1
- package/dist/auth/defaultUser.js +2 -7
- package/dist/auth/defaultUser.js.map +1 -1
- package/dist/auth/executeAccess.js.map +1 -1
- package/dist/auth/executeAuthStrategies.js.map +1 -1
- package/dist/auth/extractJWT.js.map +1 -1
- package/dist/auth/getAccessResults.js.map +1 -1
- package/dist/auth/getFieldsToSign.js.map +1 -1
- package/dist/auth/index.js.map +1 -1
- package/dist/auth/isLocked.js.map +1 -1
- package/dist/auth/operations/access.js.map +1 -1
- package/dist/auth/operations/auth.js.map +1 -1
- package/dist/auth/operations/forgotPassword.js.map +1 -1
- package/dist/auth/operations/init.js.map +1 -1
- package/dist/auth/operations/local/auth.js +1 -1
- package/dist/auth/operations/local/auth.js.map +1 -1
- package/dist/auth/operations/local/forgotPassword.js.map +1 -1
- package/dist/auth/operations/local/index.js.map +1 -1
- package/dist/auth/operations/local/login.js.map +1 -1
- package/dist/auth/operations/local/resetPassword.js.map +1 -1
- package/dist/auth/operations/local/unlock.js.map +1 -1
- package/dist/auth/operations/local/verifyEmail.js.map +1 -1
- package/dist/auth/operations/login.js.map +1 -1
- package/dist/auth/operations/logout.js.map +1 -1
- package/dist/auth/operations/me.js.map +1 -1
- package/dist/auth/operations/refresh.js.map +1 -1
- package/dist/auth/operations/registerFirstUser.js.map +1 -1
- package/dist/auth/operations/resetPassword.js.map +1 -1
- package/dist/auth/operations/unlock.js.map +1 -1
- package/dist/auth/operations/verifyEmail.js.map +1 -1
- package/dist/auth/sendVerificationEmail.js.map +1 -1
- package/dist/auth/strategies/apiKey.js.map +1 -1
- package/dist/auth/strategies/jwt.js.map +1 -1
- package/dist/auth/strategies/local/authenticate.js.map +1 -1
- package/dist/auth/strategies/local/generatePasswordSaltHash.js.map +1 -1
- package/dist/auth/strategies/local/incrementLoginAttempts.js.map +1 -1
- package/dist/auth/strategies/local/register.js.map +1 -1
- package/dist/auth/strategies/local/resetLoginAttempts.js.map +1 -1
- package/dist/auth/types.js.map +1 -1
- package/dist/bin/generateTypes.js.map +1 -1
- package/dist/bin/index.js.map +1 -1
- package/dist/bin/loadEnv.js.map +1 -1
- package/dist/bin/loader/clientExtensions.js.map +1 -1
- package/dist/bin/loader/compile.js.map +1 -1
- package/dist/bin/loader/index.d.ts.map +1 -1
- package/dist/bin/loader/index.js +0 -1
- package/dist/bin/loader/index.js.map +1 -1
- package/dist/bin/loader/read-default-tsconfig.js.map +1 -1
- package/dist/bin/migrate.js.map +1 -1
- package/dist/collections/config/build.js.map +1 -1
- package/dist/collections/config/client.d.ts +11 -4
- package/dist/collections/config/client.d.ts.map +1 -1
- package/dist/collections/config/client.js +18 -3
- package/dist/collections/config/client.js.map +1 -1
- package/dist/collections/config/defaults.js.map +1 -1
- package/dist/collections/config/sanitize.d.ts.map +1 -1
- package/dist/collections/config/sanitize.js +2 -7
- package/dist/collections/config/sanitize.js.map +1 -1
- package/dist/collections/config/schema.js +2 -2
- package/dist/collections/config/schema.js.map +1 -1
- package/dist/collections/config/types.d.ts +3 -3
- package/dist/collections/config/types.d.ts.map +1 -1
- package/dist/collections/config/types.js.map +1 -1
- package/dist/collections/dataloader.js.map +1 -1
- package/dist/collections/operations/create.js.map +1 -1
- package/dist/collections/operations/delete.js.map +1 -1
- package/dist/collections/operations/deleteByID.js.map +1 -1
- package/dist/collections/operations/docAccess.js.map +1 -1
- package/dist/collections/operations/duplicate.js.map +1 -1
- package/dist/collections/operations/find.js.map +1 -1
- package/dist/collections/operations/findByID.js.map +1 -1
- package/dist/collections/operations/findVersionByID.js.map +1 -1
- package/dist/collections/operations/findVersions.js.map +1 -1
- package/dist/collections/operations/local/create.d.ts.map +1 -1
- package/dist/collections/operations/local/create.js +2 -1
- package/dist/collections/operations/local/create.js.map +1 -1
- package/dist/collections/operations/local/delete.js.map +1 -1
- package/dist/collections/operations/local/duplicate.js +1 -1
- package/dist/collections/operations/local/duplicate.js.map +1 -1
- package/dist/collections/operations/local/find.js.map +1 -1
- package/dist/collections/operations/local/findByID.js.map +1 -1
- package/dist/collections/operations/local/findVersionByID.js.map +1 -1
- package/dist/collections/operations/local/findVersions.js.map +1 -1
- package/dist/collections/operations/local/index.js.map +1 -1
- package/dist/collections/operations/local/restoreVersion.js.map +1 -1
- package/dist/collections/operations/local/update.js.map +1 -1
- package/dist/collections/operations/restoreVersion.js.map +1 -1
- package/dist/collections/operations/update.js.map +1 -1
- package/dist/collections/operations/updateByID.js.map +1 -1
- package/dist/collections/operations/utils.js.map +1 -1
- package/dist/config/build.js.map +1 -1
- package/dist/config/client.d.ts +5 -1
- package/dist/config/client.d.ts.map +1 -1
- package/dist/config/client.js +9 -4
- package/dist/config/client.js.map +1 -1
- package/dist/config/defaults.js.map +1 -1
- package/dist/config/find.js.map +1 -1
- package/dist/config/sanitize.d.ts.map +1 -1
- package/dist/config/sanitize.js +5 -3
- package/dist/config/sanitize.js.map +1 -1
- package/dist/config/schema.js.map +1 -1
- package/dist/config/shared/adminViewSchema.js.map +1 -1
- package/dist/config/shared/componentSchema.js.map +1 -1
- package/dist/config/types.d.ts +6 -2
- package/dist/config/types.d.ts.map +1 -1
- package/dist/config/types.js.map +1 -1
- package/dist/config/validate.js.map +1 -1
- package/dist/database/combineQueries.js.map +1 -1
- package/dist/database/createDatabaseAdapter.js.map +1 -1
- package/dist/database/flattenWhereToOperators.js.map +1 -1
- package/dist/database/getLocalizedPaths.js.map +1 -1
- package/dist/database/migrations/createMigration.js.map +1 -1
- package/dist/database/migrations/getMigrations.js.map +1 -1
- package/dist/database/migrations/migrate.js.map +1 -1
- package/dist/database/migrations/migrateDown.js.map +1 -1
- package/dist/database/migrations/migrateRefresh.js.map +1 -1
- package/dist/database/migrations/migrateReset.js.map +1 -1
- package/dist/database/migrations/migrateStatus.js.map +1 -1
- package/dist/database/migrations/migrationTemplate.js.map +1 -1
- package/dist/database/migrations/migrationsCollection.js.map +1 -1
- package/dist/database/migrations/readMigrationFiles.js.map +1 -1
- package/dist/database/queryValidation/types.js.map +1 -1
- package/dist/database/queryValidation/validateQueryPaths.js.map +1 -1
- package/dist/database/queryValidation/validateSearchParams.js.map +1 -1
- package/dist/database/types.js.map +1 -1
- package/dist/email/build.js.map +1 -1
- package/dist/email/defaults.js.map +1 -1
- package/dist/email/mockHandler.js.map +1 -1
- package/dist/email/sendEmail.js.map +1 -1
- package/dist/email/types.js.map +1 -1
- package/dist/errors/APIError.js.map +1 -1
- package/dist/errors/AuthenticationError.js +2 -2
- package/dist/errors/AuthenticationError.js.map +1 -1
- package/dist/errors/DuplicateCollection.js.map +1 -1
- package/dist/errors/DuplicateFieldName.js.map +1 -1
- package/dist/errors/DuplicateGlobal.js.map +1 -1
- package/dist/errors/ErrorDeletingFile.js +2 -2
- package/dist/errors/ErrorDeletingFile.js.map +1 -1
- package/dist/errors/FileUploadError.js +2 -2
- package/dist/errors/FileUploadError.js.map +1 -1
- package/dist/errors/Forbidden.js +2 -2
- package/dist/errors/Forbidden.js.map +1 -1
- package/dist/errors/InvalidConfiguration.js.map +1 -1
- package/dist/errors/InvalidFieldName.js.map +1 -1
- package/dist/errors/InvalidFieldRelationship.js.map +1 -1
- package/dist/errors/InvalidSchema.js.map +1 -1
- package/dist/errors/LockedAuth.js +2 -2
- package/dist/errors/LockedAuth.js.map +1 -1
- package/dist/errors/MissingCollectionLabel.js.map +1 -1
- package/dist/errors/MissingEditorProp.js.map +1 -1
- package/dist/errors/MissingFieldInputOptions.js.map +1 -1
- package/dist/errors/MissingFieldType.js.map +1 -1
- package/dist/errors/MissingFile.js +2 -2
- package/dist/errors/MissingFile.js.map +1 -1
- package/dist/errors/NotFound.js +2 -2
- package/dist/errors/NotFound.js.map +1 -1
- package/dist/errors/QueryError.js.map +1 -1
- package/dist/errors/TimestampsRequired.js.map +1 -1
- package/dist/errors/UnathorizedError.js +2 -2
- package/dist/errors/UnathorizedError.js.map +1 -1
- package/dist/errors/ValidationError.js +2 -2
- package/dist/errors/ValidationError.js.map +1 -1
- package/dist/errors/index.js.map +1 -1
- package/dist/errors/types.js.map +1 -1
- package/dist/exports/auth.js.map +1 -1
- package/dist/exports/components/utilities.js.map +1 -1
- package/dist/exports/config.js.map +1 -1
- package/dist/exports/database.js.map +1 -1
- package/dist/exports/errors.js.map +1 -1
- package/dist/exports/fields/index.js.map +1 -1
- package/dist/exports/fields/validations.js.map +1 -1
- package/dist/exports/node.d.ts +1 -0
- package/dist/exports/node.d.ts.map +1 -1
- package/dist/exports/node.js +1 -0
- package/dist/exports/node.js.map +1 -1
- package/dist/exports/operations.js.map +1 -1
- package/dist/exports/types.js.map +1 -1
- package/dist/exports/uploads.js.map +1 -1
- package/dist/exports/utilities.d.ts +0 -1
- package/dist/exports/utilities.d.ts.map +1 -1
- package/dist/exports/utilities.js +0 -1
- package/dist/exports/utilities.js.map +1 -1
- package/dist/exports/versions.js.map +1 -1
- package/dist/fields/baseFields/baseBlockFields.js.map +1 -1
- package/dist/fields/baseFields/baseIDField.js.map +1 -1
- package/dist/fields/config/client.d.ts +32 -25
- package/dist/fields/config/client.d.ts.map +1 -1
- package/dist/fields/config/client.js +31 -6
- package/dist/fields/config/client.js.map +1 -1
- package/dist/fields/config/sanitize.js.map +1 -1
- package/dist/fields/config/sanitize.spec.js.map +1 -1
- package/dist/fields/config/schema.d.ts.map +1 -1
- package/dist/fields/config/schema.js +3 -3
- package/dist/fields/config/schema.js.map +1 -1
- package/dist/fields/config/types.d.ts +6 -5
- package/dist/fields/config/types.d.ts.map +1 -1
- package/dist/fields/config/types.js.map +1 -1
- package/dist/fields/getDefaultValue.js.map +1 -1
- package/dist/fields/hooks/afterChange/index.js.map +1 -1
- package/dist/fields/hooks/afterChange/promise.js.map +1 -1
- package/dist/fields/hooks/afterChange/traverseFields.js.map +1 -1
- package/dist/fields/hooks/afterRead/index.js.map +1 -1
- package/dist/fields/hooks/afterRead/promise.js.map +1 -1
- package/dist/fields/hooks/afterRead/relationshipPopulationPromise.js.map +1 -1
- package/dist/fields/hooks/afterRead/traverseFields.js.map +1 -1
- package/dist/fields/hooks/beforeChange/beforeDuplicate.js.map +1 -1
- package/dist/fields/hooks/beforeChange/cloneDataFromOriginalDoc.js.map +1 -1
- package/dist/fields/hooks/beforeChange/getExistingRowDoc.js.map +1 -1
- package/dist/fields/hooks/beforeChange/index.js.map +1 -1
- package/dist/fields/hooks/beforeChange/promise.js.map +1 -1
- package/dist/fields/hooks/beforeChange/traverseFields.js.map +1 -1
- package/dist/fields/hooks/beforeValidate/index.js.map +1 -1
- package/dist/fields/hooks/beforeValidate/promise.js.map +1 -1
- package/dist/fields/hooks/beforeValidate/traverseFields.js.map +1 -1
- package/dist/fields/mergeBaseFields.js.map +1 -1
- package/dist/fields/setDefaultBeforeDuplicate.d.ts.map +1 -1
- package/dist/fields/setDefaultBeforeDuplicate.js +2 -6
- package/dist/fields/setDefaultBeforeDuplicate.js.map +1 -1
- package/dist/fields/sortableFieldTypes.js.map +1 -1
- package/dist/fields/validations.js.map +1 -1
- package/dist/fields/validations.spec.js.map +1 -1
- package/dist/globals/config/client.d.ts +9 -2
- package/dist/globals/config/client.d.ts.map +1 -1
- package/dist/globals/config/client.js +9 -3
- package/dist/globals/config/client.js.map +1 -1
- package/dist/globals/config/sanitize.d.ts.map +1 -1
- package/dist/globals/config/sanitize.js +2 -7
- package/dist/globals/config/sanitize.js.map +1 -1
- package/dist/globals/config/schema.d.ts.map +1 -1
- package/dist/globals/config/schema.js +1 -1
- package/dist/globals/config/schema.js.map +1 -1
- package/dist/globals/config/types.js.map +1 -1
- package/dist/globals/operations/docAccess.js.map +1 -1
- package/dist/globals/operations/findOne.js.map +1 -1
- package/dist/globals/operations/findVersionByID.js.map +1 -1
- package/dist/globals/operations/findVersions.js.map +1 -1
- package/dist/globals/operations/local/findOne.js.map +1 -1
- package/dist/globals/operations/local/findVersionByID.d.ts.map +1 -1
- package/dist/globals/operations/local/findVersionByID.js +1 -0
- package/dist/globals/operations/local/findVersionByID.js.map +1 -1
- package/dist/globals/operations/local/findVersions.js.map +1 -1
- package/dist/globals/operations/local/index.js.map +1 -1
- package/dist/globals/operations/local/restoreVersion.js.map +1 -1
- package/dist/globals/operations/local/update.js.map +1 -1
- package/dist/globals/operations/restoreVersion.js.map +1 -1
- package/dist/globals/operations/update.js.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/preferences/deleteUserPreferences.js.map +1 -1
- package/dist/preferences/operations/delete.js.map +1 -1
- package/dist/preferences/operations/findOne.js.map +1 -1
- package/dist/preferences/operations/update.js.map +1 -1
- package/dist/preferences/preferencesCollection.js.map +1 -1
- package/dist/preferences/requestHandlers/delete.js.map +1 -1
- package/dist/preferences/requestHandlers/findOne.js.map +1 -1
- package/dist/preferences/requestHandlers/update.js.map +1 -1
- package/dist/preferences/types.js.map +1 -1
- package/dist/translations/getLocalI18n.d.ts +3 -2
- package/dist/translations/getLocalI18n.d.ts.map +1 -1
- package/dist/translations/getLocalI18n.js +2 -4
- package/dist/translations/getLocalI18n.js.map +1 -1
- package/dist/types/constants.js.map +1 -1
- package/dist/types/index.js.map +1 -1
- package/dist/uploads/canResizeImage.js.map +1 -1
- package/dist/uploads/cropImage.js.map +1 -1
- package/dist/uploads/deleteAssociatedFiles.js.map +1 -1
- package/dist/uploads/docWithFilenameExists.js.map +1 -1
- package/dist/uploads/fileExists.js.map +1 -1
- package/dist/uploads/formatFilesize.js.map +1 -1
- package/dist/uploads/generateFileData.js.map +1 -1
- package/dist/uploads/getBaseFields.d.ts.map +1 -1
- package/dist/uploads/getBaseFields.js +5 -13
- package/dist/uploads/getBaseFields.js.map +1 -1
- package/dist/uploads/getExternalFile.js.map +1 -1
- package/dist/uploads/getFileByPath.js.map +1 -1
- package/dist/uploads/getImageSize.js.map +1 -1
- package/dist/uploads/getSafeFilename.js.map +1 -1
- package/dist/uploads/imageResizer.js.map +1 -1
- package/dist/uploads/isImage.js.map +1 -1
- package/dist/uploads/mimeTypeValidator.js.map +1 -1
- package/dist/uploads/mimeTypeValidator.spec.js.map +1 -1
- package/dist/uploads/saveBufferToFile.js.map +1 -1
- package/dist/uploads/types.js.map +1 -1
- package/dist/uploads/unlinkTempFiles.js.map +1 -1
- package/dist/uploads/uploadFiles.js.map +1 -1
- package/dist/utilities/checkDuplicateCollections.js.map +1 -1
- package/dist/utilities/combineMerge.js.map +1 -1
- package/dist/utilities/commitTransaction.js.map +1 -1
- package/dist/utilities/configToJSONSchema.js.map +1 -1
- package/dist/utilities/configToJSONSchema.spec.js.map +1 -1
- package/dist/utilities/convertData.js.map +1 -1
- package/dist/utilities/createArrayFromCommaDelineated.js.map +1 -1
- package/dist/utilities/createLocalReq.d.ts +1 -1
- package/dist/utilities/createLocalReq.d.ts.map +1 -1
- package/dist/utilities/createLocalReq.js +2 -2
- package/dist/utilities/createLocalReq.js.map +1 -1
- package/dist/utilities/deepCopyObject.js.map +1 -1
- package/dist/utilities/deepMerge.js.map +1 -1
- package/dist/utilities/fieldSchemaToJSON.js.map +1 -1
- package/dist/utilities/flattenTopLevelFields.js.map +1 -1
- package/dist/utilities/formatLabels.js.map +1 -1
- package/dist/utilities/formatLabels.spec.js.map +1 -1
- package/dist/utilities/getCSSVariable.js.map +1 -1
- package/dist/utilities/getCollectionIDFieldTypes.js.map +1 -1
- package/dist/utilities/getEntityPolicies.js.map +1 -1
- package/dist/utilities/getIDType.js.map +1 -1
- package/dist/utilities/getObjectDotNotation.js.map +1 -1
- package/dist/utilities/getUniqueListBy.js.map +1 -1
- package/dist/utilities/importWithoutClientFiles.js.map +1 -1
- package/dist/utilities/initTransaction.js.map +1 -1
- package/dist/utilities/isEntityHidden.js.map +1 -1
- package/dist/utilities/isNumber.js.map +1 -1
- package/dist/utilities/isPlainObject.js.map +1 -1
- package/dist/utilities/isReactComponent.js.map +1 -1
- package/dist/utilities/isValidID.js.map +1 -1
- package/dist/utilities/isolateObjectProperty.js.map +1 -1
- package/dist/utilities/killTransaction.js.map +1 -1
- package/dist/utilities/logger.js.map +1 -1
- package/dist/utilities/mapAsync.js.map +1 -1
- package/dist/utilities/mergeListSearchAndWhere.js.map +1 -1
- package/dist/utilities/overwriteMerge.js.map +1 -1
- package/dist/utilities/parseCookies.js.map +1 -1
- package/dist/utilities/sanitizeInternalFields.js.map +1 -1
- package/dist/utilities/setsAreEqual.js.map +1 -1
- package/dist/utilities/telemetry/events/adminInit.js.map +1 -1
- package/dist/utilities/telemetry/events/serverInit.js.map +1 -1
- package/dist/utilities/telemetry/index.js.map +1 -1
- package/dist/utilities/telemetry/oneWayHash.js.map +1 -1
- package/dist/utilities/timestamp.js.map +1 -1
- package/dist/utilities/toKebabCase.js.map +1 -1
- package/dist/utilities/wait.js.map +1 -1
- package/dist/utilities/wordBoundariesRegex.js.map +1 -1
- package/dist/versions/baseFields.d.ts +3 -1
- package/dist/versions/baseFields.d.ts.map +1 -1
- package/dist/versions/baseFields.js +3 -9
- package/dist/versions/baseFields.js.map +1 -1
- package/dist/versions/buildCollectionFields.js.map +1 -1
- package/dist/versions/buildGlobalFields.js.map +1 -1
- package/dist/versions/deleteCollectionVersions.js.map +1 -1
- package/dist/versions/drafts/appendVersionToQueryKey.js.map +1 -1
- package/dist/versions/drafts/getQueryDraftsSort.js.map +1 -1
- package/dist/versions/drafts/replaceWithDraftIfAvailable.js.map +1 -1
- package/dist/versions/enforceMaxVersions.js.map +1 -1
- package/dist/versions/getLatestCollectionVersion.js.map +1 -1
- package/dist/versions/getLatestGlobalVersion.js.map +1 -1
- package/dist/versions/saveVersion.js.map +1 -1
- package/dist/versions/types.js.map +1 -1
- package/node.d.ts +1 -0
- package/node.js +1 -0
- package/package.json +2 -2
- package/utilities.d.ts +0 -1
- package/utilities.js +0 -1
- package/dist/translations/extractTranslations.d.ts +0 -2
- package/dist/translations/extractTranslations.d.ts.map +0 -1
- package/dist/translations/extractTranslations.js +0 -20
- package/dist/translations/extractTranslations.js.map +0 -1
package/dist/auth/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/auth/index.ts"],"sourcesContent":["export * from './types.js'\n\nexport { extractJWT } from './extractJWT.js'\nexport * from './cookies.js'\n"],"names":["extractJWT"],"mappings":"AAAA,cAAc,aAAY;AAE1B,SAASA,UAAU,QAAQ,kBAAiB;AAC5C,cAAc,eAAc"}
|
|
1
|
+
{"version":3,"sources":["../../src/auth/index.ts"],"sourcesContent":["export * from './types.js'\n\nexport { extractJWT } from './extractJWT.js'\nexport * from './cookies.js'\n"],"names":["extractJWT"],"rangeMappings":";;","mappings":"AAAA,cAAc,aAAY;AAE1B,SAASA,UAAU,QAAQ,kBAAiB;AAC5C,cAAc,eAAc"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/auth/isLocked.ts"],"sourcesContent":["const isLocked = (date: number): boolean => !!(date && date > Date.now())\nexport default isLocked\n"],"names":["isLocked","date","Date","now"],"mappings":"AAAA,MAAMA,WAAW,CAACC,OAA0B,CAAC,CAAEA,CAAAA,QAAQA,OAAOC,KAAKC,GAAG,EAAC;AACvE,eAAeH,SAAQ"}
|
|
1
|
+
{"version":3,"sources":["../../src/auth/isLocked.ts"],"sourcesContent":["const isLocked = (date: number): boolean => !!(date && date > Date.now())\nexport default isLocked\n"],"names":["isLocked","date","Date","now"],"rangeMappings":";","mappings":"AAAA,MAAMA,WAAW,CAACC,OAA0B,CAAC,CAAEA,CAAAA,QAAQA,OAAOC,KAAKC,GAAG,EAAC;AACvE,eAAeH,SAAQ"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/auth/operations/access.ts"],"sourcesContent":["import type { PayloadRequest } from '../../types/index.js'\nimport type { Permissions } from '../types.js'\n\nimport { commitTransaction } from '../../utilities/commitTransaction.js'\nimport { initTransaction } from '../../utilities/initTransaction.js'\nimport { killTransaction } from '../../utilities/killTransaction.js'\nimport { adminInit as adminInitTelemetry } from '../../utilities/telemetry/events/adminInit.js'\nimport { getAccessResults } from '../getAccessResults.js'\n\ntype Arguments = {\n req: PayloadRequest\n}\n\nexport const accessOperation = async (args: Arguments): Promise<Permissions> => {\n const { req } = args\n\n adminInitTelemetry(req)\n\n try {\n const shouldCommit = await initTransaction(req)\n const results = getAccessResults({ req })\n if (shouldCommit) await commitTransaction(req)\n return results\n } catch (e: unknown) {\n await killTransaction(req)\n throw e\n }\n}\n"],"names":["commitTransaction","initTransaction","killTransaction","adminInit","adminInitTelemetry","getAccessResults","accessOperation","args","req","shouldCommit","results","e"],"mappings":"AAGA,SAASA,iBAAiB,QAAQ,uCAAsC;AACxE,SAASC,eAAe,QAAQ,qCAAoC;AACpE,SAASC,eAAe,QAAQ,qCAAoC;AACpE,SAASC,aAAaC,kBAAkB,QAAQ,gDAA+C;AAC/F,SAASC,gBAAgB,QAAQ,yBAAwB;AAMzD,OAAO,MAAMC,kBAAkB,OAAOC;IACpC,MAAM,EAAEC,GAAG,EAAE,GAAGD;IAEhBH,mBAAmBI;IAEnB,IAAI;QACF,MAAMC,eAAe,MAAMR,gBAAgBO;QAC3C,MAAME,UAAUL,iBAAiB;YAAEG;QAAI;QACvC,IAAIC,cAAc,MAAMT,kBAAkBQ;QAC1C,OAAOE;IACT,EAAE,OAAOC,GAAY;QACnB,MAAMT,gBAAgBM;QACtB,MAAMG;IACR;AACF,EAAC"}
|
|
1
|
+
{"version":3,"sources":["../../../src/auth/operations/access.ts"],"sourcesContent":["import type { PayloadRequest } from '../../types/index.js'\nimport type { Permissions } from '../types.js'\n\nimport { commitTransaction } from '../../utilities/commitTransaction.js'\nimport { initTransaction } from '../../utilities/initTransaction.js'\nimport { killTransaction } from '../../utilities/killTransaction.js'\nimport { adminInit as adminInitTelemetry } from '../../utilities/telemetry/events/adminInit.js'\nimport { getAccessResults } from '../getAccessResults.js'\n\ntype Arguments = {\n req: PayloadRequest\n}\n\nexport const accessOperation = async (args: Arguments): Promise<Permissions> => {\n const { req } = args\n\n adminInitTelemetry(req)\n\n try {\n const shouldCommit = await initTransaction(req)\n const results = getAccessResults({ req })\n if (shouldCommit) await commitTransaction(req)\n return results\n } catch (e: unknown) {\n await killTransaction(req)\n throw e\n }\n}\n"],"names":["commitTransaction","initTransaction","killTransaction","adminInit","adminInitTelemetry","getAccessResults","accessOperation","args","req","shouldCommit","results","e"],"rangeMappings":";;;;;;;;;;;;;;;;;;;","mappings":"AAGA,SAASA,iBAAiB,QAAQ,uCAAsC;AACxE,SAASC,eAAe,QAAQ,qCAAoC;AACpE,SAASC,eAAe,QAAQ,qCAAoC;AACpE,SAASC,aAAaC,kBAAkB,QAAQ,gDAA+C;AAC/F,SAASC,gBAAgB,QAAQ,yBAAwB;AAMzD,OAAO,MAAMC,kBAAkB,OAAOC;IACpC,MAAM,EAAEC,GAAG,EAAE,GAAGD;IAEhBH,mBAAmBI;IAEnB,IAAI;QACF,MAAMC,eAAe,MAAMR,gBAAgBO;QAC3C,MAAME,UAAUL,iBAAiB;YAAEG;QAAI;QACvC,IAAIC,cAAc,MAAMT,kBAAkBQ;QAC1C,OAAOE;IACT,EAAE,OAAOC,GAAY;QACnB,MAAMT,gBAAgBM;QACtB,MAAMG;IACR;AACF,EAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/auth/operations/auth.ts"],"sourcesContent":["import type { PayloadRequest } from '../../types/index.js'\nimport type { Permissions, User } from '../types.js'\n\nimport { commitTransaction } from '../../utilities/commitTransaction.js'\nimport { initTransaction } from '../../utilities/initTransaction.js'\nimport { killTransaction } from '../../utilities/killTransaction.js'\nimport { parseCookies } from '../cookies.js'\nimport { executeAuthStrategies } from '../executeAuthStrategies.js'\nimport { getAccessResults } from '../getAccessResults.js'\n\nexport type AuthArgs = {\n headers: Request['headers']\n req: Omit<PayloadRequest, 'user'>\n}\n\nexport type AuthResult = {\n cookies: Map<string, string>\n permissions: Permissions\n user: User | null\n}\n\nexport const auth = async (args: AuthArgs): Promise<AuthResult> => {\n const { headers } = args\n const req = args.req as PayloadRequest\n const { payload } = req\n\n const cookies = parseCookies(headers)\n\n try {\n const shouldCommit = await initTransaction(req)\n\n const user = await executeAuthStrategies({\n cookies,\n headers,\n payload,\n })\n\n req.user = user\n\n const permissions = await getAccessResults({\n req,\n })\n\n if (shouldCommit) await commitTransaction(req)\n\n return {\n cookies,\n permissions,\n user,\n }\n } catch (error: unknown) {\n await killTransaction(req)\n throw error\n }\n}\n"],"names":["commitTransaction","initTransaction","killTransaction","parseCookies","executeAuthStrategies","getAccessResults","auth","args","headers","req","payload","cookies","shouldCommit","user","permissions","error"],"mappings":"AAGA,SAASA,iBAAiB,QAAQ,uCAAsC;AACxE,SAASC,eAAe,QAAQ,qCAAoC;AACpE,SAASC,eAAe,QAAQ,qCAAoC;AACpE,SAASC,YAAY,QAAQ,gBAAe;AAC5C,SAASC,qBAAqB,QAAQ,8BAA6B;AACnE,SAASC,gBAAgB,QAAQ,yBAAwB;AAazD,OAAO,MAAMC,OAAO,OAAOC;IACzB,MAAM,EAAEC,OAAO,EAAE,GAAGD;IACpB,MAAME,MAAMF,KAAKE,GAAG;IACpB,MAAM,EAAEC,OAAO,EAAE,GAAGD;IAEpB,MAAME,UAAUR,aAAaK;IAE7B,IAAI;QACF,MAAMI,eAAe,MAAMX,gBAAgBQ;QAE3C,MAAMI,OAAO,MAAMT,sBAAsB;YACvCO;YACAH;YACAE;QACF;QAEAD,IAAII,IAAI,GAAGA;QAEX,MAAMC,cAAc,MAAMT,iBAAiB;YACzCI;QACF;QAEA,IAAIG,cAAc,MAAMZ,kBAAkBS;QAE1C,OAAO;YACLE;YACAG;YACAD;QACF;IACF,EAAE,OAAOE,OAAgB;QACvB,MAAMb,gBAAgBO;QACtB,MAAMM;IACR;AACF,EAAC"}
|
|
1
|
+
{"version":3,"sources":["../../../src/auth/operations/auth.ts"],"sourcesContent":["import type { PayloadRequest } from '../../types/index.js'\nimport type { Permissions, User } from '../types.js'\n\nimport { commitTransaction } from '../../utilities/commitTransaction.js'\nimport { initTransaction } from '../../utilities/initTransaction.js'\nimport { killTransaction } from '../../utilities/killTransaction.js'\nimport { parseCookies } from '../cookies.js'\nimport { executeAuthStrategies } from '../executeAuthStrategies.js'\nimport { getAccessResults } from '../getAccessResults.js'\n\nexport type AuthArgs = {\n headers: Request['headers']\n req: Omit<PayloadRequest, 'user'>\n}\n\nexport type AuthResult = {\n cookies: Map<string, string>\n permissions: Permissions\n user: User | null\n}\n\nexport const auth = async (args: AuthArgs): Promise<AuthResult> => {\n const { headers } = args\n const req = args.req as PayloadRequest\n const { payload } = req\n\n const cookies = parseCookies(headers)\n\n try {\n const shouldCommit = await initTransaction(req)\n\n const user = await executeAuthStrategies({\n cookies,\n headers,\n payload,\n })\n\n req.user = user\n\n const permissions = await getAccessResults({\n req,\n })\n\n if (shouldCommit) await commitTransaction(req)\n\n return {\n cookies,\n permissions,\n user,\n }\n } catch (error: unknown) {\n await killTransaction(req)\n throw error\n }\n}\n"],"names":["commitTransaction","initTransaction","killTransaction","parseCookies","executeAuthStrategies","getAccessResults","auth","args","headers","req","payload","cookies","shouldCommit","user","permissions","error"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"AAGA,SAASA,iBAAiB,QAAQ,uCAAsC;AACxE,SAASC,eAAe,QAAQ,qCAAoC;AACpE,SAASC,eAAe,QAAQ,qCAAoC;AACpE,SAASC,YAAY,QAAQ,gBAAe;AAC5C,SAASC,qBAAqB,QAAQ,8BAA6B;AACnE,SAASC,gBAAgB,QAAQ,yBAAwB;AAazD,OAAO,MAAMC,OAAO,OAAOC;IACzB,MAAM,EAAEC,OAAO,EAAE,GAAGD;IACpB,MAAME,MAAMF,KAAKE,GAAG;IACpB,MAAM,EAAEC,OAAO,EAAE,GAAGD;IAEpB,MAAME,UAAUR,aAAaK;IAE7B,IAAI;QACF,MAAMI,eAAe,MAAMX,gBAAgBQ;QAE3C,MAAMI,OAAO,MAAMT,sBAAsB;YACvCO;YACAH;YACAE;QACF;QAEAD,IAAII,IAAI,GAAGA;QAEX,MAAMC,cAAc,MAAMT,iBAAiB;YACzCI;QACF;QAEA,IAAIG,cAAc,MAAMZ,kBAAkBS;QAE1C,OAAO;YACLE;YACAG;YACAD;QACF;IACF,EAAE,OAAOE,OAAgB;QACvB,MAAMb,gBAAgBO;QACtB,MAAMM;IACR;AACF,EAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/auth/operations/forgotPassword.ts"],"sourcesContent":["import crypto from 'crypto'\nimport httpStatus from 'http-status'\nimport { URL } from 'url'\n\nimport type { Collection } from '../../collections/config/types.js'\nimport type { PayloadRequest } from '../../types/index.js'\n\nimport { buildAfterOperation } from '../../collections/operations/utils.js'\nimport { APIError } from '../../errors/index.js'\nimport { commitTransaction } from '../../utilities/commitTransaction.js'\nimport { initTransaction } from '../../utilities/initTransaction.js'\nimport { killTransaction } from '../../utilities/killTransaction.js'\n\nexport type Arguments = {\n collection: Collection\n data: {\n [key: string]: unknown\n email: string\n }\n disableEmail?: boolean\n expiration?: number\n req: PayloadRequest\n}\n\nexport type Result = string\n\nexport const forgotPasswordOperation = async (incomingArgs: Arguments): Promise<null | string> => {\n if (!Object.prototype.hasOwnProperty.call(incomingArgs.data, 'email')) {\n throw new APIError('Missing email.', httpStatus.BAD_REQUEST)\n }\n\n let args = incomingArgs\n\n try {\n const shouldCommit = await initTransaction(args.req)\n\n // /////////////////////////////////////\n // beforeOperation - Collection\n // /////////////////////////////////////\n\n await args.collection.config.hooks.beforeOperation.reduce(async (priorHook, hook) => {\n await priorHook\n\n args =\n (await hook({\n args,\n collection: args.collection?.config,\n context: args.req.context,\n operation: 'forgotPassword',\n req: args.req,\n })) || args\n }, Promise.resolve())\n\n const {\n collection: { config: collectionConfig },\n data,\n disableEmail,\n expiration,\n req: {\n payload: { config, emailOptions, sendEmail: email },\n payload,\n },\n req,\n } = args\n\n // /////////////////////////////////////\n // Forget password\n // /////////////////////////////////////\n\n let token: string = crypto.randomBytes(20).toString('hex')\n\n type UserDoc = {\n id: number | string\n resetPasswordExpiration?: string\n resetPasswordToken?: string\n }\n\n if (!data.email) {\n throw new APIError('Missing email.', httpStatus.BAD_REQUEST)\n }\n\n let user = await payload.db.findOne<UserDoc>({\n collection: collectionConfig.slug,\n req,\n where: { email: { equals: data.email.toLowerCase() } },\n })\n\n // We don't want to indicate specifically that an email was not found,\n // as doing so could lead to the exposure of registered emails.\n // Therefore, we prefer to fail silently.\n if (!user) return null\n\n user.resetPasswordToken = token\n user.resetPasswordExpiration = new Date(expiration || Date.now() + 3600000).toISOString() // 1 hour\n\n user = await payload.update({\n id: user.id,\n collection: collectionConfig.slug,\n data: user,\n req,\n })\n\n if (!disableEmail) {\n const protocol = new URL(req.url).protocol\n const serverURL =\n config.serverURL !== null && config.serverURL !== ''\n ? config.serverURL\n : `${protocol}://${req.headers.get('host')}`\n\n let html = `${req.t('authentication:youAreReceivingResetPassword')}\n <a href=\"${serverURL}${config.routes.admin}/reset/${token}\">\n ${serverURL}${config.routes.admin}/reset/${token}\n </a>\n ${req.t('authentication:youDidNotRequestPassword')}`\n\n if (typeof collectionConfig.auth.forgotPassword.generateEmailHTML === 'function') {\n html = await collectionConfig.auth.forgotPassword.generateEmailHTML({\n req,\n token,\n user,\n })\n }\n\n let subject = req.t('authentication:resetYourPassword')\n\n if (typeof collectionConfig.auth.forgotPassword.generateEmailSubject === 'function') {\n subject = await collectionConfig.auth.forgotPassword.generateEmailSubject({\n req,\n token,\n user,\n })\n }\n\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n email({\n from: `\"${emailOptions.fromName}\" <${emailOptions.fromAddress}>`,\n html,\n subject,\n to: data.email,\n })\n }\n\n // /////////////////////////////////////\n // afterForgotPassword - Collection\n // /////////////////////////////////////\n\n await collectionConfig.hooks.afterForgotPassword.reduce(async (priorHook, hook) => {\n await priorHook\n await hook({ args, collection: args.collection?.config, context: req.context })\n }, Promise.resolve())\n\n // /////////////////////////////////////\n // afterOperation - Collection\n // /////////////////////////////////////\n\n token = await buildAfterOperation({\n args,\n collection: args.collection?.config,\n operation: 'forgotPassword',\n result: token,\n })\n\n if (shouldCommit) await commitTransaction(req)\n\n return token\n } catch (error: unknown) {\n await killTransaction(args.req)\n throw error\n }\n}\n"],"names":["crypto","httpStatus","URL","buildAfterOperation","APIError","commitTransaction","initTransaction","killTransaction","forgotPasswordOperation","incomingArgs","Object","prototype","hasOwnProperty","call","data","BAD_REQUEST","args","shouldCommit","req","collection","config","hooks","beforeOperation","reduce","priorHook","hook","context","operation","Promise","resolve","collectionConfig","disableEmail","expiration","payload","emailOptions","sendEmail","email","token","randomBytes","toString","user","db","findOne","slug","where","equals","toLowerCase","resetPasswordToken","resetPasswordExpiration","Date","now","toISOString","update","id","protocol","url","serverURL","headers","get","html","t","routes","admin","auth","forgotPassword","generateEmailHTML","subject","generateEmailSubject","from","fromName","fromAddress","to","afterForgotPassword","result","error"],"mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../../../src/auth/operations/forgotPassword.ts"],"sourcesContent":["import crypto from 'crypto'\nimport httpStatus from 'http-status'\nimport { URL } from 'url'\n\nimport type { Collection } from '../../collections/config/types.js'\nimport type { PayloadRequest } from '../../types/index.js'\n\nimport { buildAfterOperation } from '../../collections/operations/utils.js'\nimport { APIError } from '../../errors/index.js'\nimport { commitTransaction } from '../../utilities/commitTransaction.js'\nimport { initTransaction } from '../../utilities/initTransaction.js'\nimport { killTransaction } from '../../utilities/killTransaction.js'\n\nexport type Arguments = {\n collection: Collection\n data: {\n [key: string]: unknown\n email: string\n }\n disableEmail?: boolean\n expiration?: number\n req: PayloadRequest\n}\n\nexport type Result = string\n\nexport const forgotPasswordOperation = async (incomingArgs: Arguments): Promise<null | string> => {\n if (!Object.prototype.hasOwnProperty.call(incomingArgs.data, 'email')) {\n throw new APIError('Missing email.', httpStatus.BAD_REQUEST)\n }\n\n let args = incomingArgs\n\n try {\n const shouldCommit = await initTransaction(args.req)\n\n // /////////////////////////////////////\n // beforeOperation - Collection\n // /////////////////////////////////////\n\n await args.collection.config.hooks.beforeOperation.reduce(async (priorHook, hook) => {\n await priorHook\n\n args =\n (await hook({\n args,\n collection: args.collection?.config,\n context: args.req.context,\n operation: 'forgotPassword',\n req: args.req,\n })) || args\n }, Promise.resolve())\n\n const {\n collection: { config: collectionConfig },\n data,\n disableEmail,\n expiration,\n req: {\n payload: { config, emailOptions, sendEmail: email },\n payload,\n },\n req,\n } = args\n\n // /////////////////////////////////////\n // Forget password\n // /////////////////////////////////////\n\n let token: string = crypto.randomBytes(20).toString('hex')\n\n type UserDoc = {\n id: number | string\n resetPasswordExpiration?: string\n resetPasswordToken?: string\n }\n\n if (!data.email) {\n throw new APIError('Missing email.', httpStatus.BAD_REQUEST)\n }\n\n let user = await payload.db.findOne<UserDoc>({\n collection: collectionConfig.slug,\n req,\n where: { email: { equals: data.email.toLowerCase() } },\n })\n\n // We don't want to indicate specifically that an email was not found,\n // as doing so could lead to the exposure of registered emails.\n // Therefore, we prefer to fail silently.\n if (!user) return null\n\n user.resetPasswordToken = token\n user.resetPasswordExpiration = new Date(expiration || Date.now() + 3600000).toISOString() // 1 hour\n\n user = await payload.update({\n id: user.id,\n collection: collectionConfig.slug,\n data: user,\n req,\n })\n\n if (!disableEmail) {\n const protocol = new URL(req.url).protocol\n const serverURL =\n config.serverURL !== null && config.serverURL !== ''\n ? config.serverURL\n : `${protocol}://${req.headers.get('host')}`\n\n let html = `${req.t('authentication:youAreReceivingResetPassword')}\n <a href=\"${serverURL}${config.routes.admin}/reset/${token}\">\n ${serverURL}${config.routes.admin}/reset/${token}\n </a>\n ${req.t('authentication:youDidNotRequestPassword')}`\n\n if (typeof collectionConfig.auth.forgotPassword.generateEmailHTML === 'function') {\n html = await collectionConfig.auth.forgotPassword.generateEmailHTML({\n req,\n token,\n user,\n })\n }\n\n let subject = req.t('authentication:resetYourPassword')\n\n if (typeof collectionConfig.auth.forgotPassword.generateEmailSubject === 'function') {\n subject = await collectionConfig.auth.forgotPassword.generateEmailSubject({\n req,\n token,\n user,\n })\n }\n\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n email({\n from: `\"${emailOptions.fromName}\" <${emailOptions.fromAddress}>`,\n html,\n subject,\n to: data.email,\n })\n }\n\n // /////////////////////////////////////\n // afterForgotPassword - Collection\n // /////////////////////////////////////\n\n await collectionConfig.hooks.afterForgotPassword.reduce(async (priorHook, hook) => {\n await priorHook\n await hook({ args, collection: args.collection?.config, context: req.context })\n }, Promise.resolve())\n\n // /////////////////////////////////////\n // afterOperation - Collection\n // /////////////////////////////////////\n\n token = await buildAfterOperation({\n args,\n collection: args.collection?.config,\n operation: 'forgotPassword',\n result: token,\n })\n\n if (shouldCommit) await commitTransaction(req)\n\n return token\n } catch (error: unknown) {\n await killTransaction(args.req)\n throw error\n }\n}\n"],"names":["crypto","httpStatus","URL","buildAfterOperation","APIError","commitTransaction","initTransaction","killTransaction","forgotPasswordOperation","incomingArgs","Object","prototype","hasOwnProperty","call","data","BAD_REQUEST","args","shouldCommit","req","collection","config","hooks","beforeOperation","reduce","priorHook","hook","context","operation","Promise","resolve","collectionConfig","disableEmail","expiration","payload","emailOptions","sendEmail","email","token","randomBytes","toString","user","db","findOne","slug","where","equals","toLowerCase","resetPasswordToken","resetPasswordExpiration","Date","now","toISOString","update","id","protocol","url","serverURL","headers","get","html","t","routes","admin","auth","forgotPassword","generateEmailHTML","subject","generateEmailSubject","from","fromName","fromAddress","to","afterForgotPassword","result","error"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/auth/operations/init.ts"],"sourcesContent":["import type { PayloadRequest } from '../../types/index.js'\n\nexport const initOperation = async (args: {\n collection: string\n req: PayloadRequest\n}): Promise<boolean> => {\n const { collection: slug, req } = args\n\n const doc = await req.payload.db.findOne({\n collection: slug,\n req,\n })\n\n return !!doc\n}\n"],"names":["initOperation","args","collection","slug","req","doc","payload","db","findOne"],"mappings":"AAEA,OAAO,MAAMA,gBAAgB,OAAOC;IAIlC,MAAM,EAAEC,YAAYC,IAAI,EAAEC,GAAG,EAAE,GAAGH;IAElC,MAAMI,MAAM,MAAMD,IAAIE,OAAO,CAACC,EAAE,CAACC,OAAO,CAAC;QACvCN,YAAYC;QACZC;IACF;IAEA,OAAO,CAAC,CAACC;AACX,EAAC"}
|
|
1
|
+
{"version":3,"sources":["../../../src/auth/operations/init.ts"],"sourcesContent":["import type { PayloadRequest } from '../../types/index.js'\n\nexport const initOperation = async (args: {\n collection: string\n req: PayloadRequest\n}): Promise<boolean> => {\n const { collection: slug, req } = args\n\n const doc = await req.payload.db.findOne({\n collection: slug,\n req,\n })\n\n return !!doc\n}\n"],"names":["initOperation","args","collection","slug","req","doc","payload","db","findOne"],"rangeMappings":";;;;;;;","mappings":"AAEA,OAAO,MAAMA,gBAAgB,OAAOC;IAIlC,MAAM,EAAEC,YAAYC,IAAI,EAAEC,GAAG,EAAE,GAAGH;IAElC,MAAMI,MAAM,MAAMD,IAAIE,OAAO,CAACC,EAAE,CAACC,OAAO,CAAC;QACvCN,YAAYC;QACZC;IACF;IAEA,OAAO,CAAC,CAACC;AACX,EAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/auth/operations/local/auth.ts"],"sourcesContent":["import type { Payload } from '../../../index.js'\nimport type { PayloadRequest } from '../../../types/index.js'\nimport type { AuthArgs, AuthResult } from '../auth.js'\n\nimport { createLocalReq } from '../../../utilities/createLocalReq.js'\nimport { auth as authOperation } from '../auth.js'\n\nexport const auth = async (payload: Payload, options: AuthArgs): Promise<AuthResult> => {\n const { headers } = options\n\n return await authOperation({\n headers,\n req: createLocalReq({ req: options.req as PayloadRequest }, payload),\n })\n}\n"],"names":["createLocalReq","auth","authOperation","payload","options","headers","req"],"mappings":"AAIA,SAASA,cAAc,QAAQ,uCAAsC;AACrE,SAASC,QAAQC,aAAa,QAAQ,aAAY;AAElD,OAAO,MAAMD,OAAO,OAAOE,SAAkBC;IAC3C,MAAM,EAAEC,OAAO,EAAE,GAAGD;IAEpB,OAAO,MAAMF,cAAc;QACzBG;QACAC,
|
|
1
|
+
{"version":3,"sources":["../../../../src/auth/operations/local/auth.ts"],"sourcesContent":["import type { Payload } from '../../../index.js'\nimport type { PayloadRequest } from '../../../types/index.js'\nimport type { AuthArgs, AuthResult } from '../auth.js'\n\nimport { createLocalReq } from '../../../utilities/createLocalReq.js'\nimport { auth as authOperation } from '../auth.js'\n\nexport const auth = async (payload: Payload, options: AuthArgs): Promise<AuthResult> => {\n const { headers } = options\n\n return await authOperation({\n headers,\n req: await createLocalReq({ req: options.req as PayloadRequest }, payload),\n })\n}\n"],"names":["createLocalReq","auth","authOperation","payload","options","headers","req"],"rangeMappings":";;;;;;;;;;","mappings":"AAIA,SAASA,cAAc,QAAQ,uCAAsC;AACrE,SAASC,QAAQC,aAAa,QAAQ,aAAY;AAElD,OAAO,MAAMD,OAAO,OAAOE,SAAkBC;IAC3C,MAAM,EAAEC,OAAO,EAAE,GAAGD;IAEpB,OAAO,MAAMF,cAAc;QACzBG;QACAC,KAAK,MAAMN,eAAe;YAAEM,KAAKF,QAAQE,GAAG;QAAmB,GAAGH;IACpE;AACF,EAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/auth/operations/local/forgotPassword.ts"],"sourcesContent":["import type { GeneratedTypes, Payload, RequestContext } from '../../../index.js'\nimport type { PayloadRequest } from '../../../types/index.js'\nimport type { Result } from '../forgotPassword.js'\n\nimport { APIError } from '../../../errors/index.js'\nimport { createLocalReq } from '../../../utilities/createLocalReq.js'\nimport { forgotPasswordOperation } from '../forgotPassword.js'\n\nexport type Options<T extends keyof GeneratedTypes['collections']> = {\n collection: T\n context?: RequestContext\n data: {\n email: string\n }\n disableEmail?: boolean\n expiration?: number\n req?: PayloadRequest\n}\n\nasync function localForgotPassword<T extends keyof GeneratedTypes['collections']>(\n payload: Payload,\n options: Options<T>,\n): Promise<Result> {\n const { collection: collectionSlug, data, disableEmail, expiration } = options\n\n const collection = payload.collections[collectionSlug]\n\n if (!collection) {\n throw new APIError(\n `The collection with slug ${String(\n collectionSlug,\n )} can't be found. Forgot Password Operation.`,\n )\n }\n\n return forgotPasswordOperation({\n collection,\n data,\n disableEmail,\n expiration,\n req: await createLocalReq(options, payload),\n })\n}\n\nexport default localForgotPassword\n"],"names":["APIError","createLocalReq","forgotPasswordOperation","localForgotPassword","payload","options","collection","collectionSlug","data","disableEmail","expiration","collections","String","req"],"mappings":"AAIA,SAASA,QAAQ,QAAQ,2BAA0B;AACnD,SAASC,cAAc,QAAQ,uCAAsC;AACrE,SAASC,uBAAuB,QAAQ,uBAAsB;AAa9D,eAAeC,oBACbC,OAAgB,EAChBC,OAAmB;IAEnB,MAAM,EAAEC,YAAYC,cAAc,EAAEC,IAAI,EAAEC,YAAY,EAAEC,UAAU,EAAE,GAAGL;IAEvE,MAAMC,aAAaF,QAAQO,WAAW,CAACJ,eAAe;IAEtD,IAAI,CAACD,YAAY;QACf,MAAM,IAAIN,SACR,CAAC,yBAAyB,EAAEY,OAC1BL,gBACA,2CAA2C,CAAC;IAElD;IAEA,OAAOL,wBAAwB;QAC7BI;QACAE;QACAC;QACAC;QACAG,KAAK,MAAMZ,eAAeI,SAASD;IACrC;AACF;AAEA,eAAeD,oBAAmB"}
|
|
1
|
+
{"version":3,"sources":["../../../../src/auth/operations/local/forgotPassword.ts"],"sourcesContent":["import type { GeneratedTypes, Payload, RequestContext } from '../../../index.js'\nimport type { PayloadRequest } from '../../../types/index.js'\nimport type { Result } from '../forgotPassword.js'\n\nimport { APIError } from '../../../errors/index.js'\nimport { createLocalReq } from '../../../utilities/createLocalReq.js'\nimport { forgotPasswordOperation } from '../forgotPassword.js'\n\nexport type Options<T extends keyof GeneratedTypes['collections']> = {\n collection: T\n context?: RequestContext\n data: {\n email: string\n }\n disableEmail?: boolean\n expiration?: number\n req?: PayloadRequest\n}\n\nasync function localForgotPassword<T extends keyof GeneratedTypes['collections']>(\n payload: Payload,\n options: Options<T>,\n): Promise<Result> {\n const { collection: collectionSlug, data, disableEmail, expiration } = options\n\n const collection = payload.collections[collectionSlug]\n\n if (!collection) {\n throw new APIError(\n `The collection with slug ${String(\n collectionSlug,\n )} can't be found. Forgot Password Operation.`,\n )\n }\n\n return forgotPasswordOperation({\n collection,\n data,\n disableEmail,\n expiration,\n req: await createLocalReq(options, payload),\n })\n}\n\nexport default localForgotPassword\n"],"names":["APIError","createLocalReq","forgotPasswordOperation","localForgotPassword","payload","options","collection","collectionSlug","data","disableEmail","expiration","collections","String","req"],"rangeMappings":";;;;;;;;;;;;;;;;;","mappings":"AAIA,SAASA,QAAQ,QAAQ,2BAA0B;AACnD,SAASC,cAAc,QAAQ,uCAAsC;AACrE,SAASC,uBAAuB,QAAQ,uBAAsB;AAa9D,eAAeC,oBACbC,OAAgB,EAChBC,OAAmB;IAEnB,MAAM,EAAEC,YAAYC,cAAc,EAAEC,IAAI,EAAEC,YAAY,EAAEC,UAAU,EAAE,GAAGL;IAEvE,MAAMC,aAAaF,QAAQO,WAAW,CAACJ,eAAe;IAEtD,IAAI,CAACD,YAAY;QACf,MAAM,IAAIN,SACR,CAAC,yBAAyB,EAAEY,OAC1BL,gBACA,2CAA2C,CAAC;IAElD;IAEA,OAAOL,wBAAwB;QAC7BI;QACAE;QACAC;QACAC;QACAG,KAAK,MAAMZ,eAAeI,SAASD;IACrC;AACF;AAEA,eAAeD,oBAAmB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/auth/operations/local/index.ts"],"sourcesContent":["import { auth } from './auth.js'\nimport forgotPassword from './forgotPassword.js'\nimport login from './login.js'\nimport resetPassword from './resetPassword.js'\nimport unlock from './unlock.js'\nimport verifyEmail from './verifyEmail.js'\n\nexport default {\n auth,\n forgotPassword,\n login,\n resetPassword,\n unlock,\n verifyEmail,\n}\n"],"names":["auth","forgotPassword","login","resetPassword","unlock","verifyEmail"],"mappings":"AAAA,SAASA,IAAI,QAAQ,YAAW;AAChC,OAAOC,oBAAoB,sBAAqB;AAChD,OAAOC,WAAW,aAAY;AAC9B,OAAOC,mBAAmB,qBAAoB;AAC9C,OAAOC,YAAY,cAAa;AAChC,OAAOC,iBAAiB,mBAAkB;AAE1C,eAAe;IACbL;IACAC;IACAC;IACAC;IACAC;IACAC;AACF,EAAC"}
|
|
1
|
+
{"version":3,"sources":["../../../../src/auth/operations/local/index.ts"],"sourcesContent":["import { auth } from './auth.js'\nimport forgotPassword from './forgotPassword.js'\nimport login from './login.js'\nimport resetPassword from './resetPassword.js'\nimport unlock from './unlock.js'\nimport verifyEmail from './verifyEmail.js'\n\nexport default {\n auth,\n forgotPassword,\n login,\n resetPassword,\n unlock,\n verifyEmail,\n}\n"],"names":["auth","forgotPassword","login","resetPassword","unlock","verifyEmail"],"rangeMappings":";;;;;;;;;;;;;","mappings":"AAAA,SAASA,IAAI,QAAQ,YAAW;AAChC,OAAOC,oBAAoB,sBAAqB;AAChD,OAAOC,WAAW,aAAY;AAC9B,OAAOC,mBAAmB,qBAAoB;AAC9C,OAAOC,YAAY,cAAa;AAChC,OAAOC,iBAAiB,mBAAkB;AAE1C,eAAe;IACbL;IACAC;IACAC;IACAC;IACAC;IACAC;AACF,EAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/auth/operations/local/login.ts"],"sourcesContent":["import type { Payload, RequestContext } from '../../../index.js'\nimport type { GeneratedTypes } from '../../../index.js'\nimport type { PayloadRequest } from '../../../types/index.js'\nimport type { Result } from '../login.js'\n\nimport { APIError } from '../../../errors/index.js'\nimport { createLocalReq } from '../../../utilities/createLocalReq.js'\nimport { loginOperation } from '../login.js'\n\nexport type Options<TSlug extends keyof GeneratedTypes['collections']> = {\n collection: TSlug\n context?: RequestContext\n data: {\n email: string\n password: string\n }\n depth?: number\n fallbackLocale?: string\n locale?: string\n overrideAccess?: boolean\n req?: PayloadRequest\n showHiddenFields?: boolean\n}\n\nasync function localLogin<TSlug extends keyof GeneratedTypes['collections']>(\n payload: Payload,\n options: Options<TSlug>,\n): Promise<Result & { user: GeneratedTypes['collections'][TSlug] }> {\n const {\n collection: collectionSlug,\n data,\n depth,\n overrideAccess = true,\n showHiddenFields,\n } = options\n\n const collection = payload.collections[collectionSlug]\n\n if (!collection) {\n throw new APIError(\n `The collection with slug ${String(collectionSlug)} can't be found. Login Operation.`,\n )\n }\n\n const args = {\n collection,\n data,\n depth,\n overrideAccess,\n req: await createLocalReq(options, payload),\n showHiddenFields,\n }\n\n const result = await loginOperation<TSlug>(args)\n\n if (collection.config.auth.removeTokenFromResponses) {\n delete result.token\n }\n\n return result\n}\n\nexport default localLogin\n"],"names":["APIError","createLocalReq","loginOperation","localLogin","payload","options","collection","collectionSlug","data","depth","overrideAccess","showHiddenFields","collections","String","args","req","result","config","auth","removeTokenFromResponses","token"],"mappings":"AAKA,SAASA,QAAQ,QAAQ,2BAA0B;AACnD,SAASC,cAAc,QAAQ,uCAAsC;AACrE,SAASC,cAAc,QAAQ,cAAa;AAiB5C,eAAeC,WACbC,OAAgB,EAChBC,OAAuB;IAEvB,MAAM,EACJC,YAAYC,cAAc,EAC1BC,IAAI,EACJC,KAAK,EACLC,iBAAiB,IAAI,EACrBC,gBAAgB,EACjB,GAAGN;IAEJ,MAAMC,aAAaF,QAAQQ,WAAW,CAACL,eAAe;IAEtD,IAAI,CAACD,YAAY;QACf,MAAM,IAAIN,SACR,CAAC,yBAAyB,EAAEa,OAAON,gBAAgB,iCAAiC,CAAC;IAEzF;IAEA,MAAMO,OAAO;QACXR;QACAE;QACAC;QACAC;QACAK,KAAK,MAAMd,eAAeI,SAASD;QACnCO;IACF;IAEA,MAAMK,SAAS,MAAMd,eAAsBY;IAE3C,IAAIR,WAAWW,MAAM,CAACC,IAAI,CAACC,wBAAwB,EAAE;QACnD,OAAOH,OAAOI,KAAK;IACrB;IAEA,OAAOJ;AACT;AAEA,eAAeb,WAAU"}
|
|
1
|
+
{"version":3,"sources":["../../../../src/auth/operations/local/login.ts"],"sourcesContent":["import type { Payload, RequestContext } from '../../../index.js'\nimport type { GeneratedTypes } from '../../../index.js'\nimport type { PayloadRequest } from '../../../types/index.js'\nimport type { Result } from '../login.js'\n\nimport { APIError } from '../../../errors/index.js'\nimport { createLocalReq } from '../../../utilities/createLocalReq.js'\nimport { loginOperation } from '../login.js'\n\nexport type Options<TSlug extends keyof GeneratedTypes['collections']> = {\n collection: TSlug\n context?: RequestContext\n data: {\n email: string\n password: string\n }\n depth?: number\n fallbackLocale?: string\n locale?: string\n overrideAccess?: boolean\n req?: PayloadRequest\n showHiddenFields?: boolean\n}\n\nasync function localLogin<TSlug extends keyof GeneratedTypes['collections']>(\n payload: Payload,\n options: Options<TSlug>,\n): Promise<Result & { user: GeneratedTypes['collections'][TSlug] }> {\n const {\n collection: collectionSlug,\n data,\n depth,\n overrideAccess = true,\n showHiddenFields,\n } = options\n\n const collection = payload.collections[collectionSlug]\n\n if (!collection) {\n throw new APIError(\n `The collection with slug ${String(collectionSlug)} can't be found. Login Operation.`,\n )\n }\n\n const args = {\n collection,\n data,\n depth,\n overrideAccess,\n req: await createLocalReq(options, payload),\n showHiddenFields,\n }\n\n const result = await loginOperation<TSlug>(args)\n\n if (collection.config.auth.removeTokenFromResponses) {\n delete result.token\n }\n\n return result\n}\n\nexport default localLogin\n"],"names":["APIError","createLocalReq","loginOperation","localLogin","payload","options","collection","collectionSlug","data","depth","overrideAccess","showHiddenFields","collections","String","args","req","result","config","auth","removeTokenFromResponses","token"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;","mappings":"AAKA,SAASA,QAAQ,QAAQ,2BAA0B;AACnD,SAASC,cAAc,QAAQ,uCAAsC;AACrE,SAASC,cAAc,QAAQ,cAAa;AAiB5C,eAAeC,WACbC,OAAgB,EAChBC,OAAuB;IAEvB,MAAM,EACJC,YAAYC,cAAc,EAC1BC,IAAI,EACJC,KAAK,EACLC,iBAAiB,IAAI,EACrBC,gBAAgB,EACjB,GAAGN;IAEJ,MAAMC,aAAaF,QAAQQ,WAAW,CAACL,eAAe;IAEtD,IAAI,CAACD,YAAY;QACf,MAAM,IAAIN,SACR,CAAC,yBAAyB,EAAEa,OAAON,gBAAgB,iCAAiC,CAAC;IAEzF;IAEA,MAAMO,OAAO;QACXR;QACAE;QACAC;QACAC;QACAK,KAAK,MAAMd,eAAeI,SAASD;QACnCO;IACF;IAEA,MAAMK,SAAS,MAAMd,eAAsBY;IAE3C,IAAIR,WAAWW,MAAM,CAACC,IAAI,CAACC,wBAAwB,EAAE;QACnD,OAAOH,OAAOI,KAAK;IACrB;IAEA,OAAOJ;AACT;AAEA,eAAeb,WAAU"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/auth/operations/local/resetPassword.ts"],"sourcesContent":["import type { Payload, RequestContext } from '../../../index.js'\nimport type { GeneratedTypes } from '../../../index.js'\nimport type { PayloadRequest } from '../../../types/index.js'\nimport type { Result } from '../resetPassword.js'\n\nimport { APIError } from '../../../errors/index.js'\nimport { createLocalReq } from '../../../utilities/createLocalReq.js'\nimport { resetPasswordOperation } from '../resetPassword.js'\n\nexport type Options<T extends keyof GeneratedTypes['collections']> = {\n collection: T\n context?: RequestContext\n data: {\n password: string\n token: string\n }\n overrideAccess: boolean\n req?: PayloadRequest\n}\n\nasync function localResetPassword<T extends keyof GeneratedTypes['collections']>(\n payload: Payload,\n options: Options<T>,\n): Promise<Result> {\n const { collection: collectionSlug, data, overrideAccess } = options\n\n const collection = payload.collections[collectionSlug]\n\n if (!collection) {\n throw new APIError(\n `The collection with slug ${String(\n collectionSlug,\n )} can't be found. Reset Password Operation.`,\n )\n }\n\n const result = await resetPasswordOperation({\n collection,\n data,\n overrideAccess,\n req: await createLocalReq(options, payload),\n })\n\n if (collection.config.auth.removeTokenFromResponses) {\n delete result.token\n }\n\n return result\n}\n\nexport default localResetPassword\n"],"names":["APIError","createLocalReq","resetPasswordOperation","localResetPassword","payload","options","collection","collectionSlug","data","overrideAccess","collections","String","result","req","config","auth","removeTokenFromResponses","token"],"mappings":"AAKA,SAASA,QAAQ,QAAQ,2BAA0B;AACnD,SAASC,cAAc,QAAQ,uCAAsC;AACrE,SAASC,sBAAsB,QAAQ,sBAAqB;AAa5D,eAAeC,mBACbC,OAAgB,EAChBC,OAAmB;IAEnB,MAAM,EAAEC,YAAYC,cAAc,EAAEC,IAAI,EAAEC,cAAc,EAAE,GAAGJ;IAE7D,MAAMC,aAAaF,QAAQM,WAAW,CAACH,eAAe;IAEtD,IAAI,CAACD,YAAY;QACf,MAAM,IAAIN,SACR,CAAC,yBAAyB,EAAEW,OAC1BJ,gBACA,0CAA0C,CAAC;IAEjD;IAEA,MAAMK,SAAS,MAAMV,uBAAuB;QAC1CI;QACAE;QACAC;QACAI,KAAK,MAAMZ,eAAeI,SAASD;IACrC;IAEA,IAAIE,WAAWQ,MAAM,CAACC,IAAI,CAACC,wBAAwB,EAAE;QACnD,OAAOJ,OAAOK,KAAK;IACrB;IAEA,OAAOL;AACT;AAEA,eAAeT,mBAAkB"}
|
|
1
|
+
{"version":3,"sources":["../../../../src/auth/operations/local/resetPassword.ts"],"sourcesContent":["import type { Payload, RequestContext } from '../../../index.js'\nimport type { GeneratedTypes } from '../../../index.js'\nimport type { PayloadRequest } from '../../../types/index.js'\nimport type { Result } from '../resetPassword.js'\n\nimport { APIError } from '../../../errors/index.js'\nimport { createLocalReq } from '../../../utilities/createLocalReq.js'\nimport { resetPasswordOperation } from '../resetPassword.js'\n\nexport type Options<T extends keyof GeneratedTypes['collections']> = {\n collection: T\n context?: RequestContext\n data: {\n password: string\n token: string\n }\n overrideAccess: boolean\n req?: PayloadRequest\n}\n\nasync function localResetPassword<T extends keyof GeneratedTypes['collections']>(\n payload: Payload,\n options: Options<T>,\n): Promise<Result> {\n const { collection: collectionSlug, data, overrideAccess } = options\n\n const collection = payload.collections[collectionSlug]\n\n if (!collection) {\n throw new APIError(\n `The collection with slug ${String(\n collectionSlug,\n )} can't be found. Reset Password Operation.`,\n )\n }\n\n const result = await resetPasswordOperation({\n collection,\n data,\n overrideAccess,\n req: await createLocalReq(options, payload),\n })\n\n if (collection.config.auth.removeTokenFromResponses) {\n delete result.token\n }\n\n return result\n}\n\nexport default localResetPassword\n"],"names":["APIError","createLocalReq","resetPasswordOperation","localResetPassword","payload","options","collection","collectionSlug","data","overrideAccess","collections","String","result","req","config","auth","removeTokenFromResponses","token"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;","mappings":"AAKA,SAASA,QAAQ,QAAQ,2BAA0B;AACnD,SAASC,cAAc,QAAQ,uCAAsC;AACrE,SAASC,sBAAsB,QAAQ,sBAAqB;AAa5D,eAAeC,mBACbC,OAAgB,EAChBC,OAAmB;IAEnB,MAAM,EAAEC,YAAYC,cAAc,EAAEC,IAAI,EAAEC,cAAc,EAAE,GAAGJ;IAE7D,MAAMC,aAAaF,QAAQM,WAAW,CAACH,eAAe;IAEtD,IAAI,CAACD,YAAY;QACf,MAAM,IAAIN,SACR,CAAC,yBAAyB,EAAEW,OAC1BJ,gBACA,0CAA0C,CAAC;IAEjD;IAEA,MAAMK,SAAS,MAAMV,uBAAuB;QAC1CI;QACAE;QACAC;QACAI,KAAK,MAAMZ,eAAeI,SAASD;IACrC;IAEA,IAAIE,WAAWQ,MAAM,CAACC,IAAI,CAACC,wBAAwB,EAAE;QACnD,OAAOJ,OAAOK,KAAK;IACrB;IAEA,OAAOL;AACT;AAEA,eAAeT,mBAAkB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/auth/operations/local/unlock.ts"],"sourcesContent":["import type { Payload, RequestContext } from '../../../index.js'\nimport type { GeneratedTypes } from '../../../index.js'\nimport type { PayloadRequest } from '../../../types/index.js'\n\nimport { APIError } from '../../../errors/index.js'\nimport { createLocalReq } from '../../../utilities/createLocalReq.js'\nimport { unlockOperation } from '../unlock.js'\n\nexport type Options<T extends keyof GeneratedTypes['collections']> = {\n collection: T\n context?: RequestContext\n data: {\n email\n }\n overrideAccess: boolean\n req?: PayloadRequest\n}\n\nasync function localUnlock<T extends keyof GeneratedTypes['collections']>(\n payload: Payload,\n options: Options<T>,\n): Promise<boolean> {\n const { collection: collectionSlug, data, overrideAccess = true } = options\n\n const collection = payload.collections[collectionSlug]\n\n if (!collection) {\n throw new APIError(\n `The collection with slug ${String(collectionSlug)} can't be found. Unlock Operation.`,\n )\n }\n\n return unlockOperation({\n collection,\n data,\n overrideAccess,\n req: await createLocalReq(options, payload),\n })\n}\n\nexport default localUnlock\n"],"names":["APIError","createLocalReq","unlockOperation","localUnlock","payload","options","collection","collectionSlug","data","overrideAccess","collections","String","req"],"mappings":"AAIA,SAASA,QAAQ,QAAQ,2BAA0B;AACnD,SAASC,cAAc,QAAQ,uCAAsC;AACrE,SAASC,eAAe,QAAQ,eAAc;AAY9C,eAAeC,YACbC,OAAgB,EAChBC,OAAmB;IAEnB,MAAM,EAAEC,YAAYC,cAAc,EAAEC,IAAI,EAAEC,iBAAiB,IAAI,EAAE,GAAGJ;IAEpE,MAAMC,aAAaF,QAAQM,WAAW,CAACH,eAAe;IAEtD,IAAI,CAACD,YAAY;QACf,MAAM,IAAIN,SACR,CAAC,yBAAyB,EAAEW,OAAOJ,gBAAgB,kCAAkC,CAAC;IAE1F;IAEA,OAAOL,gBAAgB;QACrBI;QACAE;QACAC;QACAG,KAAK,MAAMX,eAAeI,SAASD;IACrC;AACF;AAEA,eAAeD,YAAW"}
|
|
1
|
+
{"version":3,"sources":["../../../../src/auth/operations/local/unlock.ts"],"sourcesContent":["import type { Payload, RequestContext } from '../../../index.js'\nimport type { GeneratedTypes } from '../../../index.js'\nimport type { PayloadRequest } from '../../../types/index.js'\n\nimport { APIError } from '../../../errors/index.js'\nimport { createLocalReq } from '../../../utilities/createLocalReq.js'\nimport { unlockOperation } from '../unlock.js'\n\nexport type Options<T extends keyof GeneratedTypes['collections']> = {\n collection: T\n context?: RequestContext\n data: {\n email\n }\n overrideAccess: boolean\n req?: PayloadRequest\n}\n\nasync function localUnlock<T extends keyof GeneratedTypes['collections']>(\n payload: Payload,\n options: Options<T>,\n): Promise<boolean> {\n const { collection: collectionSlug, data, overrideAccess = true } = options\n\n const collection = payload.collections[collectionSlug]\n\n if (!collection) {\n throw new APIError(\n `The collection with slug ${String(collectionSlug)} can't be found. Unlock Operation.`,\n )\n }\n\n return unlockOperation({\n collection,\n data,\n overrideAccess,\n req: await createLocalReq(options, payload),\n })\n}\n\nexport default localUnlock\n"],"names":["APIError","createLocalReq","unlockOperation","localUnlock","payload","options","collection","collectionSlug","data","overrideAccess","collections","String","req"],"rangeMappings":";;;;;;;;;;;;;;;;","mappings":"AAIA,SAASA,QAAQ,QAAQ,2BAA0B;AACnD,SAASC,cAAc,QAAQ,uCAAsC;AACrE,SAASC,eAAe,QAAQ,eAAc;AAY9C,eAAeC,YACbC,OAAgB,EAChBC,OAAmB;IAEnB,MAAM,EAAEC,YAAYC,cAAc,EAAEC,IAAI,EAAEC,iBAAiB,IAAI,EAAE,GAAGJ;IAEpE,MAAMC,aAAaF,QAAQM,WAAW,CAACH,eAAe;IAEtD,IAAI,CAACD,YAAY;QACf,MAAM,IAAIN,SACR,CAAC,yBAAyB,EAAEW,OAAOJ,gBAAgB,kCAAkC,CAAC;IAE1F;IAEA,OAAOL,gBAAgB;QACrBI;QACAE;QACAC;QACAG,KAAK,MAAMX,eAAeI,SAASD;IACrC;AACF;AAEA,eAAeD,YAAW"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/auth/operations/local/verifyEmail.ts"],"sourcesContent":["import type { Payload, RequestContext } from '../../../index.js'\nimport type { GeneratedTypes } from '../../../index.js'\nimport type { PayloadRequest } from '../../../types/index.js'\n\nimport { APIError } from '../../../errors/index.js'\nimport { createLocalReq } from '../../../utilities/createLocalReq.js'\nimport { verifyEmailOperation } from '../verifyEmail.js'\n\nexport type Options<T extends keyof GeneratedTypes['collections']> = {\n collection: T\n context?: RequestContext\n req?: PayloadRequest\n token: string\n}\n\nasync function localVerifyEmail<T extends keyof GeneratedTypes['collections']>(\n payload: Payload,\n options: Options<T>,\n): Promise<boolean> {\n const { collection: collectionSlug, token } = options\n\n const collection = payload.collections[collectionSlug]\n\n if (!collection) {\n throw new APIError(\n `The collection with slug ${String(collectionSlug)} can't be found. Verify Email Operation.`,\n )\n }\n\n return verifyEmailOperation({\n collection,\n req: await createLocalReq(options, payload),\n token,\n })\n}\n\nexport default localVerifyEmail\n"],"names":["APIError","createLocalReq","verifyEmailOperation","localVerifyEmail","payload","options","collection","collectionSlug","token","collections","String","req"],"mappings":"AAIA,SAASA,QAAQ,QAAQ,2BAA0B;AACnD,SAASC,cAAc,QAAQ,uCAAsC;AACrE,SAASC,oBAAoB,QAAQ,oBAAmB;AASxD,eAAeC,iBACbC,OAAgB,EAChBC,OAAmB;IAEnB,MAAM,EAAEC,YAAYC,cAAc,EAAEC,KAAK,EAAE,GAAGH;IAE9C,MAAMC,aAAaF,QAAQK,WAAW,CAACF,eAAe;IAEtD,IAAI,CAACD,YAAY;QACf,MAAM,IAAIN,SACR,CAAC,yBAAyB,EAAEU,OAAOH,gBAAgB,wCAAwC,CAAC;IAEhG;IAEA,OAAOL,qBAAqB;QAC1BI;QACAK,KAAK,MAAMV,eAAeI,SAASD;QACnCI;IACF;AACF;AAEA,eAAeL,iBAAgB"}
|
|
1
|
+
{"version":3,"sources":["../../../../src/auth/operations/local/verifyEmail.ts"],"sourcesContent":["import type { Payload, RequestContext } from '../../../index.js'\nimport type { GeneratedTypes } from '../../../index.js'\nimport type { PayloadRequest } from '../../../types/index.js'\n\nimport { APIError } from '../../../errors/index.js'\nimport { createLocalReq } from '../../../utilities/createLocalReq.js'\nimport { verifyEmailOperation } from '../verifyEmail.js'\n\nexport type Options<T extends keyof GeneratedTypes['collections']> = {\n collection: T\n context?: RequestContext\n req?: PayloadRequest\n token: string\n}\n\nasync function localVerifyEmail<T extends keyof GeneratedTypes['collections']>(\n payload: Payload,\n options: Options<T>,\n): Promise<boolean> {\n const { collection: collectionSlug, token } = options\n\n const collection = payload.collections[collectionSlug]\n\n if (!collection) {\n throw new APIError(\n `The collection with slug ${String(collectionSlug)} can't be found. Verify Email Operation.`,\n )\n }\n\n return verifyEmailOperation({\n collection,\n req: await createLocalReq(options, payload),\n token,\n })\n}\n\nexport default localVerifyEmail\n"],"names":["APIError","createLocalReq","verifyEmailOperation","localVerifyEmail","payload","options","collection","collectionSlug","token","collections","String","req"],"rangeMappings":";;;;;;;;;;;;;;;","mappings":"AAIA,SAASA,QAAQ,QAAQ,2BAA0B;AACnD,SAASC,cAAc,QAAQ,uCAAsC;AACrE,SAASC,oBAAoB,QAAQ,oBAAmB;AASxD,eAAeC,iBACbC,OAAgB,EAChBC,OAAmB;IAEnB,MAAM,EAAEC,YAAYC,cAAc,EAAEC,KAAK,EAAE,GAAGH;IAE9C,MAAMC,aAAaF,QAAQK,WAAW,CAACF,eAAe;IAEtD,IAAI,CAACD,YAAY;QACf,MAAM,IAAIN,SACR,CAAC,yBAAyB,EAAEU,OAAOH,gBAAgB,wCAAwC,CAAC;IAEhG;IAEA,OAAOL,qBAAqB;QAC1BI;QACAK,KAAK,MAAMV,eAAeI,SAASD;QACnCI;IACF;AACF;AAEA,eAAeL,iBAAgB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/auth/operations/login.ts"],"sourcesContent":["import jwt from 'jsonwebtoken'\n\nimport type { Collection } from '../../collections/config/types.js'\nimport type { GeneratedTypes } from '../../index.js'\nimport type { PayloadRequest } from '../../types/index.js'\nimport type { User } from '../types.js'\n\nimport { buildAfterOperation } from '../../collections/operations/utils.js'\nimport { AuthenticationError, LockedAuth } from '../../errors/index.js'\nimport { afterRead } from '../../fields/hooks/afterRead/index.js'\nimport { commitTransaction } from '../../utilities/commitTransaction.js'\nimport { initTransaction } from '../../utilities/initTransaction.js'\nimport { killTransaction } from '../../utilities/killTransaction.js'\nimport sanitizeInternalFields from '../../utilities/sanitizeInternalFields.js'\nimport { getFieldsToSign } from '../getFieldsToSign.js'\nimport isLocked from '../isLocked.js'\nimport { authenticateLocalStrategy } from '../strategies/local/authenticate.js'\nimport { incrementLoginAttempts } from '../strategies/local/incrementLoginAttempts.js'\nimport { resetLoginAttempts } from '../strategies/local/resetLoginAttempts.js'\n\nexport type Result = {\n exp?: number\n token?: string\n user?: User\n}\n\nexport type Arguments = {\n collection: Collection\n data: {\n email: string\n password: string\n }\n depth?: number\n overrideAccess?: boolean\n req: PayloadRequest\n showHiddenFields?: boolean\n}\n\nexport const loginOperation = async <TSlug extends keyof GeneratedTypes['collections']>(\n incomingArgs: Arguments,\n): Promise<Result & { user: GeneratedTypes['collections'][TSlug] }> => {\n let args = incomingArgs\n\n try {\n const shouldCommit = await initTransaction(args.req)\n\n // /////////////////////////////////////\n // beforeOperation - Collection\n // /////////////////////////////////////\n\n await args.collection.config.hooks.beforeOperation.reduce(async (priorHook, hook) => {\n await priorHook\n\n args =\n (await hook({\n args,\n collection: args.collection?.config,\n context: args.req.context,\n operation: 'login',\n req: args.req,\n })) || args\n }, Promise.resolve())\n\n const {\n collection: { config: collectionConfig },\n data,\n depth,\n overrideAccess,\n req,\n req: {\n fallbackLocale,\n locale,\n payload,\n payload: { secret },\n },\n showHiddenFields,\n } = args\n\n // /////////////////////////////////////\n // Login\n // /////////////////////////////////////\n\n const { email: unsanitizedEmail, password } = data\n\n const email = unsanitizedEmail ? unsanitizedEmail.toLowerCase().trim() : null\n\n let user = await payload.db.findOne<any>({\n collection: collectionConfig.slug,\n req,\n where: { email: { equals: email.toLowerCase() } },\n })\n\n if (!user || (args.collection.config.auth.verify && user._verified === false)) {\n throw new AuthenticationError(req.t)\n }\n\n if (user && isLocked(user.lockUntil)) {\n throw new LockedAuth(req.t)\n }\n\n const authResult = await authenticateLocalStrategy({ doc: user, password })\n\n user = sanitizeInternalFields(user)\n\n const maxLoginAttemptsEnabled = args.collection.config.auth.maxLoginAttempts > 0\n\n if (!authResult) {\n if (maxLoginAttemptsEnabled) {\n await incrementLoginAttempts({\n collection: collectionConfig,\n doc: user,\n payload: req.payload,\n req,\n })\n }\n\n if (shouldCommit) await commitTransaction(req)\n\n throw new AuthenticationError(req.t)\n }\n\n if (maxLoginAttemptsEnabled) {\n await resetLoginAttempts({\n collection: collectionConfig,\n doc: user,\n payload: req.payload,\n req,\n })\n }\n\n const fieldsToSign = getFieldsToSign({\n collectionConfig,\n email,\n user,\n })\n\n await collectionConfig.hooks.beforeLogin.reduce(async (priorHook, hook) => {\n await priorHook\n\n user =\n (await hook({\n collection: args.collection?.config,\n context: args.req.context,\n req: args.req,\n user,\n })) || user\n }, Promise.resolve())\n\n const token = jwt.sign(fieldsToSign, secret, {\n expiresIn: collectionConfig.auth.tokenExpiration,\n })\n\n req.user = user\n\n // /////////////////////////////////////\n // afterLogin - Collection\n // /////////////////////////////////////\n\n await collectionConfig.hooks.afterLogin.reduce(async (priorHook, hook) => {\n await priorHook\n\n user =\n (await hook({\n collection: args.collection?.config,\n context: args.req.context,\n req: args.req,\n token,\n user,\n })) || user\n }, Promise.resolve())\n\n // /////////////////////////////////////\n // afterRead - Fields\n // /////////////////////////////////////\n\n user = await afterRead({\n collection: collectionConfig,\n context: req.context,\n depth,\n doc: user,\n fallbackLocale,\n global: null,\n locale,\n overrideAccess,\n req,\n showHiddenFields,\n })\n\n // /////////////////////////////////////\n // afterRead - Collection\n // /////////////////////////////////////\n\n await collectionConfig.hooks.afterRead.reduce(async (priorHook, hook) => {\n await priorHook\n\n user =\n (await hook({\n collection: args.collection?.config,\n context: req.context,\n doc: user,\n req,\n })) || user\n }, Promise.resolve())\n\n // /////////////////////////////////////\n // afterRead - Collection\n // /////////////////////////////////////\n\n await collectionConfig.hooks.afterRead.reduce(async (priorHook, hook) => {\n await priorHook\n\n user =\n (await hook({\n collection: args.collection?.config,\n context: req.context,\n doc: user,\n req,\n })) || user\n }, Promise.resolve())\n\n let result: Result & { user: GeneratedTypes['collections'][TSlug] } = {\n exp: (jwt.decode(token) as jwt.JwtPayload).exp,\n token,\n user,\n }\n\n // /////////////////////////////////////\n // afterOperation - Collection\n // /////////////////////////////////////\n\n result = await buildAfterOperation<GeneratedTypes['collections'][TSlug]>({\n args,\n collection: args.collection?.config,\n operation: 'login',\n result,\n })\n\n // /////////////////////////////////////\n // Return results\n // /////////////////////////////////////\n\n if (shouldCommit) await commitTransaction(req)\n\n return result\n } catch (error: unknown) {\n await killTransaction(args.req)\n throw error\n }\n}\n"],"names":["jwt","buildAfterOperation","AuthenticationError","LockedAuth","afterRead","commitTransaction","initTransaction","killTransaction","sanitizeInternalFields","getFieldsToSign","isLocked","authenticateLocalStrategy","incrementLoginAttempts","resetLoginAttempts","loginOperation","incomingArgs","args","shouldCommit","req","collection","config","hooks","beforeOperation","reduce","priorHook","hook","context","operation","Promise","resolve","collectionConfig","data","depth","overrideAccess","fallbackLocale","locale","payload","secret","showHiddenFields","email","unsanitizedEmail","password","toLowerCase","trim","user","db","findOne","slug","where","equals","auth","verify","_verified","t","lockUntil","authResult","doc","maxLoginAttemptsEnabled","maxLoginAttempts","fieldsToSign","beforeLogin","token","sign","expiresIn","tokenExpiration","afterLogin","global","result","exp","decode","error"],"mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../../../src/auth/operations/login.ts"],"sourcesContent":["import jwt from 'jsonwebtoken'\n\nimport type { Collection } from '../../collections/config/types.js'\nimport type { GeneratedTypes } from '../../index.js'\nimport type { PayloadRequest } from '../../types/index.js'\nimport type { User } from '../types.js'\n\nimport { buildAfterOperation } from '../../collections/operations/utils.js'\nimport { AuthenticationError, LockedAuth } from '../../errors/index.js'\nimport { afterRead } from '../../fields/hooks/afterRead/index.js'\nimport { commitTransaction } from '../../utilities/commitTransaction.js'\nimport { initTransaction } from '../../utilities/initTransaction.js'\nimport { killTransaction } from '../../utilities/killTransaction.js'\nimport sanitizeInternalFields from '../../utilities/sanitizeInternalFields.js'\nimport { getFieldsToSign } from '../getFieldsToSign.js'\nimport isLocked from '../isLocked.js'\nimport { authenticateLocalStrategy } from '../strategies/local/authenticate.js'\nimport { incrementLoginAttempts } from '../strategies/local/incrementLoginAttempts.js'\nimport { resetLoginAttempts } from '../strategies/local/resetLoginAttempts.js'\n\nexport type Result = {\n exp?: number\n token?: string\n user?: User\n}\n\nexport type Arguments = {\n collection: Collection\n data: {\n email: string\n password: string\n }\n depth?: number\n overrideAccess?: boolean\n req: PayloadRequest\n showHiddenFields?: boolean\n}\n\nexport const loginOperation = async <TSlug extends keyof GeneratedTypes['collections']>(\n incomingArgs: Arguments,\n): Promise<Result & { user: GeneratedTypes['collections'][TSlug] }> => {\n let args = incomingArgs\n\n try {\n const shouldCommit = await initTransaction(args.req)\n\n // /////////////////////////////////////\n // beforeOperation - Collection\n // /////////////////////////////////////\n\n await args.collection.config.hooks.beforeOperation.reduce(async (priorHook, hook) => {\n await priorHook\n\n args =\n (await hook({\n args,\n collection: args.collection?.config,\n context: args.req.context,\n operation: 'login',\n req: args.req,\n })) || args\n }, Promise.resolve())\n\n const {\n collection: { config: collectionConfig },\n data,\n depth,\n overrideAccess,\n req,\n req: {\n fallbackLocale,\n locale,\n payload,\n payload: { secret },\n },\n showHiddenFields,\n } = args\n\n // /////////////////////////////////////\n // Login\n // /////////////////////////////////////\n\n const { email: unsanitizedEmail, password } = data\n\n const email = unsanitizedEmail ? unsanitizedEmail.toLowerCase().trim() : null\n\n let user = await payload.db.findOne<any>({\n collection: collectionConfig.slug,\n req,\n where: { email: { equals: email.toLowerCase() } },\n })\n\n if (!user || (args.collection.config.auth.verify && user._verified === false)) {\n throw new AuthenticationError(req.t)\n }\n\n if (user && isLocked(user.lockUntil)) {\n throw new LockedAuth(req.t)\n }\n\n const authResult = await authenticateLocalStrategy({ doc: user, password })\n\n user = sanitizeInternalFields(user)\n\n const maxLoginAttemptsEnabled = args.collection.config.auth.maxLoginAttempts > 0\n\n if (!authResult) {\n if (maxLoginAttemptsEnabled) {\n await incrementLoginAttempts({\n collection: collectionConfig,\n doc: user,\n payload: req.payload,\n req,\n })\n }\n\n if (shouldCommit) await commitTransaction(req)\n\n throw new AuthenticationError(req.t)\n }\n\n if (maxLoginAttemptsEnabled) {\n await resetLoginAttempts({\n collection: collectionConfig,\n doc: user,\n payload: req.payload,\n req,\n })\n }\n\n const fieldsToSign = getFieldsToSign({\n collectionConfig,\n email,\n user,\n })\n\n await collectionConfig.hooks.beforeLogin.reduce(async (priorHook, hook) => {\n await priorHook\n\n user =\n (await hook({\n collection: args.collection?.config,\n context: args.req.context,\n req: args.req,\n user,\n })) || user\n }, Promise.resolve())\n\n const token = jwt.sign(fieldsToSign, secret, {\n expiresIn: collectionConfig.auth.tokenExpiration,\n })\n\n req.user = user\n\n // /////////////////////////////////////\n // afterLogin - Collection\n // /////////////////////////////////////\n\n await collectionConfig.hooks.afterLogin.reduce(async (priorHook, hook) => {\n await priorHook\n\n user =\n (await hook({\n collection: args.collection?.config,\n context: args.req.context,\n req: args.req,\n token,\n user,\n })) || user\n }, Promise.resolve())\n\n // /////////////////////////////////////\n // afterRead - Fields\n // /////////////////////////////////////\n\n user = await afterRead({\n collection: collectionConfig,\n context: req.context,\n depth,\n doc: user,\n fallbackLocale,\n global: null,\n locale,\n overrideAccess,\n req,\n showHiddenFields,\n })\n\n // /////////////////////////////////////\n // afterRead - Collection\n // /////////////////////////////////////\n\n await collectionConfig.hooks.afterRead.reduce(async (priorHook, hook) => {\n await priorHook\n\n user =\n (await hook({\n collection: args.collection?.config,\n context: req.context,\n doc: user,\n req,\n })) || user\n }, Promise.resolve())\n\n // /////////////////////////////////////\n // afterRead - Collection\n // /////////////////////////////////////\n\n await collectionConfig.hooks.afterRead.reduce(async (priorHook, hook) => {\n await priorHook\n\n user =\n (await hook({\n collection: args.collection?.config,\n context: req.context,\n doc: user,\n req,\n })) || user\n }, Promise.resolve())\n\n let result: Result & { user: GeneratedTypes['collections'][TSlug] } = {\n exp: (jwt.decode(token) as jwt.JwtPayload).exp,\n token,\n user,\n }\n\n // /////////////////////////////////////\n // afterOperation - Collection\n // /////////////////////////////////////\n\n result = await buildAfterOperation<GeneratedTypes['collections'][TSlug]>({\n args,\n collection: args.collection?.config,\n operation: 'login',\n result,\n })\n\n // /////////////////////////////////////\n // Return results\n // /////////////////////////////////////\n\n if (shouldCommit) await commitTransaction(req)\n\n return result\n } catch (error: unknown) {\n await killTransaction(args.req)\n throw error\n }\n}\n"],"names":["jwt","buildAfterOperation","AuthenticationError","LockedAuth","afterRead","commitTransaction","initTransaction","killTransaction","sanitizeInternalFields","getFieldsToSign","isLocked","authenticateLocalStrategy","incrementLoginAttempts","resetLoginAttempts","loginOperation","incomingArgs","args","shouldCommit","req","collection","config","hooks","beforeOperation","reduce","priorHook","hook","context","operation","Promise","resolve","collectionConfig","data","depth","overrideAccess","fallbackLocale","locale","payload","secret","showHiddenFields","email","unsanitizedEmail","password","toLowerCase","trim","user","db","findOne","slug","where","equals","auth","verify","_verified","t","lockUntil","authResult","doc","maxLoginAttemptsEnabled","maxLoginAttempts","fieldsToSign","beforeLogin","token","sign","expiresIn","tokenExpiration","afterLogin","global","result","exp","decode","error"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/auth/operations/logout.ts"],"sourcesContent":["import httpStatus from 'http-status'\n\nimport type { Collection } from '../../collections/config/types.js'\nimport type { PayloadRequest } from '../../types/index.js'\n\nimport { APIError } from '../../errors/index.js'\n\nexport type Arguments = {\n collection: Collection\n req: PayloadRequest\n}\n\nexport const logoutOperation = async (incomingArgs: Arguments): Promise<boolean> => {\n let args = incomingArgs\n const {\n collection: { config: collectionConfig },\n req: { user },\n req,\n } = incomingArgs\n\n if (!user) throw new APIError('No User', httpStatus.BAD_REQUEST)\n if (user.collection !== collectionConfig.slug)\n throw new APIError('Incorrect collection', httpStatus.FORBIDDEN)\n\n await collectionConfig.hooks.afterLogout.reduce(async (priorHook, hook) => {\n await priorHook\n\n args =\n (await hook({\n collection: args.collection?.config,\n context: req.context,\n req,\n })) || args\n }, Promise.resolve())\n\n return true\n}\n"],"names":["httpStatus","APIError","logoutOperation","incomingArgs","args","collection","config","collectionConfig","req","user","BAD_REQUEST","slug","FORBIDDEN","hooks","afterLogout","reduce","priorHook","hook","context","Promise","resolve"],"mappings":"AAAA,OAAOA,gBAAgB,cAAa;AAKpC,SAASC,QAAQ,QAAQ,wBAAuB;AAOhD,OAAO,MAAMC,kBAAkB,OAAOC;IACpC,IAAIC,OAAOD;IACX,MAAM,EACJE,YAAY,EAAEC,QAAQC,gBAAgB,EAAE,EACxCC,KAAK,EAAEC,IAAI,EAAE,EACbD,GAAG,EACJ,GAAGL;IAEJ,IAAI,CAACM,MAAM,MAAM,IAAIR,SAAS,WAAWD,WAAWU,WAAW;IAC/D,IAAID,KAAKJ,UAAU,KAAKE,iBAAiBI,IAAI,EAC3C,MAAM,IAAIV,SAAS,wBAAwBD,WAAWY,SAAS;IAEjE,MAAML,iBAAiBM,KAAK,CAACC,WAAW,CAACC,MAAM,CAAC,OAAOC,WAAWC;QAChE,MAAMD;QAENZ,OACE,AAAC,MAAMa,KAAK;YACVZ,YAAYD,KAAKC,UAAU,EAAEC;YAC7BY,SAASV,IAAIU,OAAO;YACpBV;QACF,MAAOJ;IACX,GAAGe,QAAQC,OAAO;IAElB,OAAO;AACT,EAAC"}
|
|
1
|
+
{"version":3,"sources":["../../../src/auth/operations/logout.ts"],"sourcesContent":["import httpStatus from 'http-status'\n\nimport type { Collection } from '../../collections/config/types.js'\nimport type { PayloadRequest } from '../../types/index.js'\n\nimport { APIError } from '../../errors/index.js'\n\nexport type Arguments = {\n collection: Collection\n req: PayloadRequest\n}\n\nexport const logoutOperation = async (incomingArgs: Arguments): Promise<boolean> => {\n let args = incomingArgs\n const {\n collection: { config: collectionConfig },\n req: { user },\n req,\n } = incomingArgs\n\n if (!user) throw new APIError('No User', httpStatus.BAD_REQUEST)\n if (user.collection !== collectionConfig.slug)\n throw new APIError('Incorrect collection', httpStatus.FORBIDDEN)\n\n await collectionConfig.hooks.afterLogout.reduce(async (priorHook, hook) => {\n await priorHook\n\n args =\n (await hook({\n collection: args.collection?.config,\n context: req.context,\n req,\n })) || args\n }, Promise.resolve())\n\n return true\n}\n"],"names":["httpStatus","APIError","logoutOperation","incomingArgs","args","collection","config","collectionConfig","req","user","BAD_REQUEST","slug","FORBIDDEN","hooks","afterLogout","reduce","priorHook","hook","context","Promise","resolve"],"rangeMappings":";;;;;;;;;;;;;;;;","mappings":"AAAA,OAAOA,gBAAgB,cAAa;AAKpC,SAASC,QAAQ,QAAQ,wBAAuB;AAOhD,OAAO,MAAMC,kBAAkB,OAAOC;IACpC,IAAIC,OAAOD;IACX,MAAM,EACJE,YAAY,EAAEC,QAAQC,gBAAgB,EAAE,EACxCC,KAAK,EAAEC,IAAI,EAAE,EACbD,GAAG,EACJ,GAAGL;IAEJ,IAAI,CAACM,MAAM,MAAM,IAAIR,SAAS,WAAWD,WAAWU,WAAW;IAC/D,IAAID,KAAKJ,UAAU,KAAKE,iBAAiBI,IAAI,EAC3C,MAAM,IAAIV,SAAS,wBAAwBD,WAAWY,SAAS;IAEjE,MAAML,iBAAiBM,KAAK,CAACC,WAAW,CAACC,MAAM,CAAC,OAAOC,WAAWC;QAChE,MAAMD;QAENZ,OACE,AAAC,MAAMa,KAAK;YACVZ,YAAYD,KAAKC,UAAU,EAAEC;YAC7BY,SAASV,IAAIU,OAAO;YACpBV;QACF,MAAOJ;IACX,GAAGe,QAAQC,OAAO;IAElB,OAAO;AACT,EAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/auth/operations/me.ts"],"sourcesContent":["import jwt from 'jsonwebtoken'\n\nimport type { Collection } from '../../collections/config/types.js'\nimport type { PayloadRequest } from '../../types/index.js'\nimport type { ClientUser, User } from '../types.js'\n\nexport type MeOperationResult = {\n collection?: string\n exp?: number\n token?: string\n user?: ClientUser\n}\n\nexport type Arguments = {\n collection: Collection\n currentToken?: string\n req: PayloadRequest\n}\n\nexport const meOperation = async ({\n collection,\n currentToken,\n req,\n}: Arguments): Promise<MeOperationResult> => {\n let result: MeOperationResult = {\n user: null,\n }\n\n if (req.user) {\n const { pathname } = req\n const isGraphQL = pathname === `/api${req.payload.config.routes.graphQL}`\n\n const user = (await req.payload.findByID({\n id: req.user.id,\n collection: collection.config.slug,\n depth: isGraphQL ? 0 : collection.config.auth.depth,\n overrideAccess: false,\n req,\n showHiddenFields: false,\n })) as User\n\n if (req.user.collection !== collection.config.slug) {\n return {\n user: null,\n }\n }\n\n delete user.collection\n\n result = {\n collection: req.user.collection,\n user,\n }\n\n if (currentToken) {\n const decoded = jwt.decode(currentToken) as jwt.JwtPayload\n if (decoded) result.exp = decoded.exp\n result.token = currentToken\n }\n }\n\n // /////////////////////////////////////\n // After Me - Collection\n // /////////////////////////////////////\n\n await collection.config.hooks.afterMe.reduce(async (priorHook, hook) => {\n await priorHook\n\n result =\n (await hook({\n collection: collection?.config,\n context: req.context,\n req,\n response: result,\n })) || result\n }, Promise.resolve())\n\n return result\n}\n"],"names":["jwt","meOperation","collection","currentToken","req","result","user","pathname","isGraphQL","payload","config","routes","graphQL","findByID","id","slug","depth","auth","overrideAccess","showHiddenFields","decoded","decode","exp","token","hooks","afterMe","reduce","priorHook","hook","context","response","Promise","resolve"],"mappings":"AAAA,OAAOA,SAAS,eAAc;AAmB9B,OAAO,MAAMC,cAAc,OAAO,EAChCC,UAAU,EACVC,YAAY,EACZC,GAAG,EACO;IACV,IAAIC,SAA4B;QAC9BC,MAAM;IACR;IAEA,IAAIF,IAAIE,IAAI,EAAE;QACZ,MAAM,EAAEC,QAAQ,EAAE,GAAGH;QACrB,MAAMI,YAAYD,aAAa,CAAC,IAAI,EAAEH,IAAIK,OAAO,CAACC,MAAM,CAACC,MAAM,CAACC,OAAO,CAAC,CAAC;QAEzE,MAAMN,OAAQ,MAAMF,IAAIK,OAAO,CAACI,QAAQ,CAAC;YACvCC,IAAIV,IAAIE,IAAI,CAACQ,EAAE;YACfZ,YAAYA,WAAWQ,MAAM,CAACK,IAAI;YAClCC,OAAOR,YAAY,IAAIN,WAAWQ,MAAM,CAACO,IAAI,CAACD,KAAK;YACnDE,gBAAgB;YAChBd;YACAe,kBAAkB;QACpB;QAEA,IAAIf,IAAIE,IAAI,CAACJ,UAAU,KAAKA,WAAWQ,MAAM,CAACK,IAAI,EAAE;YAClD,OAAO;gBACLT,MAAM;YACR;QACF;QAEA,OAAOA,KAAKJ,UAAU;QAEtBG,SAAS;YACPH,YAAYE,IAAIE,IAAI,CAACJ,UAAU;YAC/BI;QACF;QAEA,IAAIH,cAAc;YAChB,MAAMiB,UAAUpB,IAAIqB,MAAM,CAAClB;YAC3B,IAAIiB,SAASf,OAAOiB,GAAG,GAAGF,QAAQE,GAAG;YACrCjB,OAAOkB,KAAK,GAAGpB;QACjB;IACF;IAEA,wCAAwC;IACxC,wBAAwB;IACxB,wCAAwC;IAExC,MAAMD,WAAWQ,MAAM,CAACc,KAAK,CAACC,OAAO,CAACC,MAAM,CAAC,OAAOC,WAAWC;QAC7D,MAAMD;QAENtB,SACE,AAAC,MAAMuB,KAAK;YACV1B,YAAYA,YAAYQ;YACxBmB,SAASzB,IAAIyB,OAAO;YACpBzB;YACA0B,UAAUzB;QACZ,MAAOA;IACX,GAAG0B,QAAQC,OAAO;IAElB,OAAO3B;AACT,EAAC"}
|
|
1
|
+
{"version":3,"sources":["../../../src/auth/operations/me.ts"],"sourcesContent":["import jwt from 'jsonwebtoken'\n\nimport type { Collection } from '../../collections/config/types.js'\nimport type { PayloadRequest } from '../../types/index.js'\nimport type { ClientUser, User } from '../types.js'\n\nexport type MeOperationResult = {\n collection?: string\n exp?: number\n token?: string\n user?: ClientUser\n}\n\nexport type Arguments = {\n collection: Collection\n currentToken?: string\n req: PayloadRequest\n}\n\nexport const meOperation = async ({\n collection,\n currentToken,\n req,\n}: Arguments): Promise<MeOperationResult> => {\n let result: MeOperationResult = {\n user: null,\n }\n\n if (req.user) {\n const { pathname } = req\n const isGraphQL = pathname === `/api${req.payload.config.routes.graphQL}`\n\n const user = (await req.payload.findByID({\n id: req.user.id,\n collection: collection.config.slug,\n depth: isGraphQL ? 0 : collection.config.auth.depth,\n overrideAccess: false,\n req,\n showHiddenFields: false,\n })) as User\n\n if (req.user.collection !== collection.config.slug) {\n return {\n user: null,\n }\n }\n\n delete user.collection\n\n result = {\n collection: req.user.collection,\n user,\n }\n\n if (currentToken) {\n const decoded = jwt.decode(currentToken) as jwt.JwtPayload\n if (decoded) result.exp = decoded.exp\n result.token = currentToken\n }\n }\n\n // /////////////////////////////////////\n // After Me - Collection\n // /////////////////////////////////////\n\n await collection.config.hooks.afterMe.reduce(async (priorHook, hook) => {\n await priorHook\n\n result =\n (await hook({\n collection: collection?.config,\n context: req.context,\n req,\n response: result,\n })) || result\n }, Promise.resolve())\n\n return result\n}\n"],"names":["jwt","meOperation","collection","currentToken","req","result","user","pathname","isGraphQL","payload","config","routes","graphQL","findByID","id","slug","depth","auth","overrideAccess","showHiddenFields","decoded","decode","exp","token","hooks","afterMe","reduce","priorHook","hook","context","response","Promise","resolve"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"AAAA,OAAOA,SAAS,eAAc;AAmB9B,OAAO,MAAMC,cAAc,OAAO,EAChCC,UAAU,EACVC,YAAY,EACZC,GAAG,EACO;IACV,IAAIC,SAA4B;QAC9BC,MAAM;IACR;IAEA,IAAIF,IAAIE,IAAI,EAAE;QACZ,MAAM,EAAEC,QAAQ,EAAE,GAAGH;QACrB,MAAMI,YAAYD,aAAa,CAAC,IAAI,EAAEH,IAAIK,OAAO,CAACC,MAAM,CAACC,MAAM,CAACC,OAAO,CAAC,CAAC;QAEzE,MAAMN,OAAQ,MAAMF,IAAIK,OAAO,CAACI,QAAQ,CAAC;YACvCC,IAAIV,IAAIE,IAAI,CAACQ,EAAE;YACfZ,YAAYA,WAAWQ,MAAM,CAACK,IAAI;YAClCC,OAAOR,YAAY,IAAIN,WAAWQ,MAAM,CAACO,IAAI,CAACD,KAAK;YACnDE,gBAAgB;YAChBd;YACAe,kBAAkB;QACpB;QAEA,IAAIf,IAAIE,IAAI,CAACJ,UAAU,KAAKA,WAAWQ,MAAM,CAACK,IAAI,EAAE;YAClD,OAAO;gBACLT,MAAM;YACR;QACF;QAEA,OAAOA,KAAKJ,UAAU;QAEtBG,SAAS;YACPH,YAAYE,IAAIE,IAAI,CAACJ,UAAU;YAC/BI;QACF;QAEA,IAAIH,cAAc;YAChB,MAAMiB,UAAUpB,IAAIqB,MAAM,CAAClB;YAC3B,IAAIiB,SAASf,OAAOiB,GAAG,GAAGF,QAAQE,GAAG;YACrCjB,OAAOkB,KAAK,GAAGpB;QACjB;IACF;IAEA,wCAAwC;IACxC,wBAAwB;IACxB,wCAAwC;IAExC,MAAMD,WAAWQ,MAAM,CAACc,KAAK,CAACC,OAAO,CAACC,MAAM,CAAC,OAAOC,WAAWC;QAC7D,MAAMD;QAENtB,SACE,AAAC,MAAMuB,KAAK;YACV1B,YAAYA,YAAYQ;YACxBmB,SAASzB,IAAIyB,OAAO;YACpBzB;YACA0B,UAAUzB;QACZ,MAAOA;IACX,GAAG0B,QAAQC,OAAO;IAElB,OAAO3B;AACT,EAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/auth/operations/refresh.ts"],"sourcesContent":["import jwt from 'jsonwebtoken'\nimport url from 'url'\n\nimport type { BeforeOperationHook, Collection } from '../../collections/config/types.js'\nimport type { PayloadRequest } from '../../types/index.js'\nimport type { Document } from '../../types/index.js'\n\nimport { buildAfterOperation } from '../../collections/operations/utils.js'\nimport { Forbidden } from '../../errors/index.js'\nimport { commitTransaction } from '../../utilities/commitTransaction.js'\nimport { initTransaction } from '../../utilities/initTransaction.js'\nimport { killTransaction } from '../../utilities/killTransaction.js'\nimport { getFieldsToSign } from '../getFieldsToSign.js'\n\nexport type Result = {\n exp: number\n refreshedToken: string\n user: Document\n}\n\nexport type Arguments = {\n collection: Collection\n req: PayloadRequest\n token: string\n}\n\nexport const refreshOperation = async (incomingArgs: Arguments): Promise<Result> => {\n let args = incomingArgs\n\n try {\n const shouldCommit = await initTransaction(args.req)\n\n // /////////////////////////////////////\n // beforeOperation - Collection\n // /////////////////////////////////////\n\n await args.collection.config.hooks.beforeOperation.reduce(\n async (priorHook: BeforeOperationHook | Promise<void>, hook: BeforeOperationHook) => {\n await priorHook\n\n args =\n (await hook({\n args,\n collection: args.collection?.config,\n context: args.req.context,\n operation: 'refresh',\n req: args.req,\n })) || args\n },\n Promise.resolve(),\n )\n\n // /////////////////////////////////////\n // Refresh\n // /////////////////////////////////////\n\n const {\n collection: { config: collectionConfig },\n req,\n req: {\n payload: { config, secret },\n },\n } = args\n\n if (typeof args.token !== 'string' || !args.req.user) throw new Forbidden(args.req.t)\n\n const parsedURL = url.parse(args.req.url)\n const isGraphQL = parsedURL.pathname === config.routes.graphQL\n\n const user = await args.req.payload.findByID({\n id: args.req.user.id,\n collection: args.req.user.collection,\n depth: isGraphQL ? 0 : args.collection.config.auth.depth,\n req: args.req,\n })\n\n const fieldsToSign = getFieldsToSign({\n collectionConfig,\n email: user?.email as string,\n user: args?.req?.user,\n })\n\n const refreshedToken = jwt.sign(fieldsToSign, secret, {\n expiresIn: collectionConfig.auth.tokenExpiration,\n })\n\n const exp = (jwt.decode(refreshedToken) as Record<string, unknown>).exp as number\n\n let result: Result = {\n exp,\n refreshedToken,\n user,\n }\n\n // /////////////////////////////////////\n // After Refresh - Collection\n // /////////////////////////////////////\n\n await collectionConfig.hooks.afterRefresh.reduce(async (priorHook, hook) => {\n await priorHook\n\n result =\n (await hook({\n collection: args.collection?.config,\n context: args.req.context,\n exp,\n req: args.req,\n token: refreshedToken,\n })) || result\n }, Promise.resolve())\n\n // /////////////////////////////////////\n // afterOperation - Collection\n // /////////////////////////////////////\n\n result = await buildAfterOperation({\n args,\n collection: args.collection?.config,\n operation: 'refresh',\n result,\n })\n\n // /////////////////////////////////////\n // Return results\n // /////////////////////////////////////\n\n if (shouldCommit) await commitTransaction(req)\n\n return result\n } catch (error: unknown) {\n await killTransaction(args.req)\n throw error\n }\n}\n"],"names":["jwt","url","buildAfterOperation","Forbidden","commitTransaction","initTransaction","killTransaction","getFieldsToSign","refreshOperation","incomingArgs","args","shouldCommit","req","collection","config","hooks","beforeOperation","reduce","priorHook","hook","context","operation","Promise","resolve","collectionConfig","payload","secret","token","user","t","parsedURL","parse","isGraphQL","pathname","routes","graphQL","findByID","id","depth","auth","fieldsToSign","email","refreshedToken","sign","expiresIn","tokenExpiration","exp","decode","result","afterRefresh","error"],"mappings":"AAAA,OAAOA,SAAS,eAAc;AAC9B,OAAOC,SAAS,MAAK;AAMrB,SAASC,mBAAmB,QAAQ,wCAAuC;AAC3E,SAASC,SAAS,QAAQ,wBAAuB;AACjD,SAASC,iBAAiB,QAAQ,uCAAsC;AACxE,SAASC,eAAe,QAAQ,qCAAoC;AACpE,SAASC,eAAe,QAAQ,qCAAoC;AACpE,SAASC,eAAe,QAAQ,wBAAuB;AAcvD,OAAO,MAAMC,mBAAmB,OAAOC;IACrC,IAAIC,OAAOD;IAEX,IAAI;QACF,MAAME,eAAe,MAAMN,gBAAgBK,KAAKE,GAAG;QAEnD,wCAAwC;QACxC,+BAA+B;QAC/B,wCAAwC;QAExC,MAAMF,KAAKG,UAAU,CAACC,MAAM,CAACC,KAAK,CAACC,eAAe,CAACC,MAAM,CACvD,OAAOC,WAAgDC;YACrD,MAAMD;YAENR,OACE,AAAC,MAAMS,KAAK;gBACVT;gBACAG,YAAYH,KAAKG,UAAU,EAAEC;gBAC7BM,SAASV,KAAKE,GAAG,CAACQ,OAAO;gBACzBC,WAAW;gBACXT,KAAKF,KAAKE,GAAG;YACf,MAAOF;QACX,GACAY,QAAQC,OAAO;QAGjB,wCAAwC;QACxC,UAAU;QACV,wCAAwC;QAExC,MAAM,EACJV,YAAY,EAAEC,QAAQU,gBAAgB,EAAE,EACxCZ,GAAG,EACHA,KAAK,EACHa,SAAS,EAAEX,MAAM,EAAEY,MAAM,EAAE,EAC5B,EACF,GAAGhB;QAEJ,IAAI,OAAOA,KAAKiB,KAAK,KAAK,YAAY,CAACjB,KAAKE,GAAG,CAACgB,IAAI,EAAE,MAAM,IAAIzB,UAAUO,KAAKE,GAAG,CAACiB,CAAC;QAEpF,MAAMC,YAAY7B,IAAI8B,KAAK,CAACrB,KAAKE,GAAG,CAACX,GAAG;QACxC,MAAM+B,YAAYF,UAAUG,QAAQ,KAAKnB,OAAOoB,MAAM,CAACC,OAAO;QAE9D,MAAMP,OAAO,MAAMlB,KAAKE,GAAG,CAACa,OAAO,CAACW,QAAQ,CAAC;YAC3CC,IAAI3B,KAAKE,GAAG,CAACgB,IAAI,CAACS,EAAE;YACpBxB,YAAYH,KAAKE,GAAG,CAACgB,IAAI,CAACf,UAAU;YACpCyB,OAAON,YAAY,IAAItB,KAAKG,UAAU,CAACC,MAAM,CAACyB,IAAI,CAACD,KAAK;YACxD1B,KAAKF,KAAKE,GAAG;QACf;QAEA,MAAM4B,eAAejC,gBAAgB;YACnCiB;YACAiB,OAAOb,MAAMa;YACbb,MAAMlB,MAAME,KAAKgB;QACnB;QAEA,MAAMc,iBAAiB1C,IAAI2C,IAAI,CAACH,cAAcd,QAAQ;YACpDkB,WAAWpB,iBAAiBe,IAAI,CAACM,eAAe;QAClD;QAEA,MAAMC,MAAM,AAAC9C,IAAI+C,MAAM,CAACL,gBAA4CI,GAAG;QAEvE,IAAIE,SAAiB;YACnBF;YACAJ;YACAd;QACF;QAEA,wCAAwC;QACxC,6BAA6B;QAC7B,wCAAwC;QAExC,MAAMJ,iBAAiBT,KAAK,CAACkC,YAAY,CAAChC,MAAM,CAAC,OAAOC,WAAWC;YACjE,MAAMD;YAEN8B,SACE,AAAC,MAAM7B,KAAK;gBACVN,YAAYH,KAAKG,UAAU,EAAEC;gBAC7BM,SAASV,KAAKE,GAAG,CAACQ,OAAO;gBACzB0B;gBACAlC,KAAKF,KAAKE,GAAG;gBACbe,OAAOe;YACT,MAAOM;QACX,GAAG1B,QAAQC,OAAO;QAElB,wCAAwC;QACxC,8BAA8B;QAC9B,wCAAwC;QAExCyB,SAAS,MAAM9C,oBAAoB;YACjCQ;YACAG,YAAYH,KAAKG,UAAU,EAAEC;YAC7BO,WAAW;YACX2B;QACF;QAEA,wCAAwC;QACxC,iBAAiB;QACjB,wCAAwC;QAExC,IAAIrC,cAAc,MAAMP,kBAAkBQ;QAE1C,OAAOoC;IACT,EAAE,OAAOE,OAAgB;QACvB,MAAM5C,gBAAgBI,KAAKE,GAAG;QAC9B,MAAMsC;IACR;AACF,EAAC"}
|
|
1
|
+
{"version":3,"sources":["../../../src/auth/operations/refresh.ts"],"sourcesContent":["import jwt from 'jsonwebtoken'\nimport url from 'url'\n\nimport type { BeforeOperationHook, Collection } from '../../collections/config/types.js'\nimport type { PayloadRequest } from '../../types/index.js'\nimport type { Document } from '../../types/index.js'\n\nimport { buildAfterOperation } from '../../collections/operations/utils.js'\nimport { Forbidden } from '../../errors/index.js'\nimport { commitTransaction } from '../../utilities/commitTransaction.js'\nimport { initTransaction } from '../../utilities/initTransaction.js'\nimport { killTransaction } from '../../utilities/killTransaction.js'\nimport { getFieldsToSign } from '../getFieldsToSign.js'\n\nexport type Result = {\n exp: number\n refreshedToken: string\n user: Document\n}\n\nexport type Arguments = {\n collection: Collection\n req: PayloadRequest\n token: string\n}\n\nexport const refreshOperation = async (incomingArgs: Arguments): Promise<Result> => {\n let args = incomingArgs\n\n try {\n const shouldCommit = await initTransaction(args.req)\n\n // /////////////////////////////////////\n // beforeOperation - Collection\n // /////////////////////////////////////\n\n await args.collection.config.hooks.beforeOperation.reduce(\n async (priorHook: BeforeOperationHook | Promise<void>, hook: BeforeOperationHook) => {\n await priorHook\n\n args =\n (await hook({\n args,\n collection: args.collection?.config,\n context: args.req.context,\n operation: 'refresh',\n req: args.req,\n })) || args\n },\n Promise.resolve(),\n )\n\n // /////////////////////////////////////\n // Refresh\n // /////////////////////////////////////\n\n const {\n collection: { config: collectionConfig },\n req,\n req: {\n payload: { config, secret },\n },\n } = args\n\n if (typeof args.token !== 'string' || !args.req.user) throw new Forbidden(args.req.t)\n\n const parsedURL = url.parse(args.req.url)\n const isGraphQL = parsedURL.pathname === config.routes.graphQL\n\n const user = await args.req.payload.findByID({\n id: args.req.user.id,\n collection: args.req.user.collection,\n depth: isGraphQL ? 0 : args.collection.config.auth.depth,\n req: args.req,\n })\n\n const fieldsToSign = getFieldsToSign({\n collectionConfig,\n email: user?.email as string,\n user: args?.req?.user,\n })\n\n const refreshedToken = jwt.sign(fieldsToSign, secret, {\n expiresIn: collectionConfig.auth.tokenExpiration,\n })\n\n const exp = (jwt.decode(refreshedToken) as Record<string, unknown>).exp as number\n\n let result: Result = {\n exp,\n refreshedToken,\n user,\n }\n\n // /////////////////////////////////////\n // After Refresh - Collection\n // /////////////////////////////////////\n\n await collectionConfig.hooks.afterRefresh.reduce(async (priorHook, hook) => {\n await priorHook\n\n result =\n (await hook({\n collection: args.collection?.config,\n context: args.req.context,\n exp,\n req: args.req,\n token: refreshedToken,\n })) || result\n }, Promise.resolve())\n\n // /////////////////////////////////////\n // afterOperation - Collection\n // /////////////////////////////////////\n\n result = await buildAfterOperation({\n args,\n collection: args.collection?.config,\n operation: 'refresh',\n result,\n })\n\n // /////////////////////////////////////\n // Return results\n // /////////////////////////////////////\n\n if (shouldCommit) await commitTransaction(req)\n\n return result\n } catch (error: unknown) {\n await killTransaction(args.req)\n throw error\n }\n}\n"],"names":["jwt","url","buildAfterOperation","Forbidden","commitTransaction","initTransaction","killTransaction","getFieldsToSign","refreshOperation","incomingArgs","args","shouldCommit","req","collection","config","hooks","beforeOperation","reduce","priorHook","hook","context","operation","Promise","resolve","collectionConfig","payload","secret","token","user","t","parsedURL","parse","isGraphQL","pathname","routes","graphQL","findByID","id","depth","auth","fieldsToSign","email","refreshedToken","sign","expiresIn","tokenExpiration","exp","decode","result","afterRefresh","error"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/auth/operations/registerFirstUser.ts"],"sourcesContent":["import type { MarkOptional } from 'ts-essentials'\n\nimport type { Collection } from '../../collections/config/types.js'\nimport type { GeneratedTypes } from '../../index.js'\nimport type { PayloadRequest } from '../../types/index.js'\n\nimport { Forbidden } from '../../errors/index.js'\nimport { commitTransaction } from '../../utilities/commitTransaction.js'\nimport { initTransaction } from '../../utilities/initTransaction.js'\nimport { killTransaction } from '../../utilities/killTransaction.js'\n\nexport type Arguments<T extends { [field: number | string | symbol]: unknown }> = {\n collection: Collection\n data: MarkOptional<T, 'createdAt' | 'id' | 'sizes' | 'updatedAt'> & {\n email: string\n password: string\n }\n req: PayloadRequest\n}\n\nexport type Result<T> = {\n exp?: number\n token?: string\n user?: T\n}\n\nexport const registerFirstUserOperation = async <TSlug extends keyof GeneratedTypes['collections']>(\n args: Arguments<GeneratedTypes['collections'][TSlug]>,\n): Promise<Result<GeneratedTypes['collections'][TSlug]>> => {\n const {\n collection: {\n config,\n config: {\n slug,\n auth: { verify },\n },\n },\n data,\n req,\n req: { payload },\n } = args\n\n try {\n const shouldCommit = await initTransaction(req)\n\n const doc = await payload.db.findOne({\n collection: config.slug,\n req,\n })\n\n if (doc) throw new Forbidden(req.t)\n\n // /////////////////////////////////////\n // Register first user\n // /////////////////////////////////////\n\n const result = await payload.create<TSlug>({\n collection: slug as TSlug,\n data,\n overrideAccess: true,\n req,\n })\n\n // auto-verify (if applicable)\n if (verify) {\n await payload.update({\n id: result.id,\n collection: slug,\n data: {\n _verified: true,\n },\n req,\n })\n }\n\n // /////////////////////////////////////\n // Log in new user\n // /////////////////////////////////////\n\n const { exp, token } = await payload.login({\n ...args,\n collection: slug,\n req,\n })\n\n if (shouldCommit) await commitTransaction(req)\n\n return {\n exp,\n token,\n user: result,\n }\n } catch (error: unknown) {\n await killTransaction(req)\n throw error\n }\n}\n"],"names":["Forbidden","commitTransaction","initTransaction","killTransaction","registerFirstUserOperation","args","collection","config","slug","auth","verify","data","req","payload","shouldCommit","doc","db","findOne","t","result","create","overrideAccess","update","id","_verified","exp","token","login","user","error"],"mappings":"AAMA,SAASA,SAAS,QAAQ,wBAAuB;AACjD,SAASC,iBAAiB,QAAQ,uCAAsC;AACxE,SAASC,eAAe,QAAQ,qCAAoC;AACpE,SAASC,eAAe,QAAQ,qCAAoC;AAiBpE,OAAO,MAAMC,6BAA6B,OACxCC;IAEA,MAAM,EACJC,YAAY,EACVC,MAAM,EACNA,QAAQ,EACNC,IAAI,EACJC,MAAM,EAAEC,MAAM,EAAE,EACjB,EACF,EACDC,IAAI,EACJC,GAAG,EACHA,KAAK,EAAEC,OAAO,EAAE,EACjB,GAAGR;IAEJ,IAAI;QACF,MAAMS,eAAe,MAAMZ,gBAAgBU;QAE3C,MAAMG,MAAM,MAAMF,QAAQG,EAAE,CAACC,OAAO,CAAC;YACnCX,YAAYC,OAAOC,IAAI;YACvBI;QACF;QAEA,IAAIG,KAAK,MAAM,IAAIf,UAAUY,IAAIM,CAAC;QAElC,wCAAwC;QACxC,sBAAsB;QACtB,wCAAwC;QAExC,MAAMC,SAAS,MAAMN,QAAQO,MAAM,CAAQ;YACzCd,YAAYE;YACZG;YACAU,gBAAgB;YAChBT;QACF;QAEA,8BAA8B;QAC9B,IAAIF,QAAQ;YACV,MAAMG,QAAQS,MAAM,CAAC;gBACnBC,IAAIJ,OAAOI,EAAE;gBACbjB,YAAYE;gBACZG,MAAM;oBACJa,WAAW;gBACb;gBACAZ;YACF;QACF;QAEA,wCAAwC;QACxC,kBAAkB;QAClB,wCAAwC;QAExC,MAAM,EAAEa,GAAG,EAAEC,KAAK,EAAE,GAAG,MAAMb,QAAQc,KAAK,CAAC;YACzC,GAAGtB,IAAI;YACPC,YAAYE;YACZI;QACF;QAEA,IAAIE,cAAc,MAAMb,kBAAkBW;QAE1C,OAAO;YACLa;YACAC;YACAE,MAAMT;QACR;IACF,EAAE,OAAOU,OAAgB;QACvB,MAAM1B,gBAAgBS;QACtB,MAAMiB;IACR;AACF,EAAC"}
|
|
1
|
+
{"version":3,"sources":["../../../src/auth/operations/registerFirstUser.ts"],"sourcesContent":["import type { MarkOptional } from 'ts-essentials'\n\nimport type { Collection } from '../../collections/config/types.js'\nimport type { GeneratedTypes } from '../../index.js'\nimport type { PayloadRequest } from '../../types/index.js'\n\nimport { Forbidden } from '../../errors/index.js'\nimport { commitTransaction } from '../../utilities/commitTransaction.js'\nimport { initTransaction } from '../../utilities/initTransaction.js'\nimport { killTransaction } from '../../utilities/killTransaction.js'\n\nexport type Arguments<T extends { [field: number | string | symbol]: unknown }> = {\n collection: Collection\n data: MarkOptional<T, 'createdAt' | 'id' | 'sizes' | 'updatedAt'> & {\n email: string\n password: string\n }\n req: PayloadRequest\n}\n\nexport type Result<T> = {\n exp?: number\n token?: string\n user?: T\n}\n\nexport const registerFirstUserOperation = async <TSlug extends keyof GeneratedTypes['collections']>(\n args: Arguments<GeneratedTypes['collections'][TSlug]>,\n): Promise<Result<GeneratedTypes['collections'][TSlug]>> => {\n const {\n collection: {\n config,\n config: {\n slug,\n auth: { verify },\n },\n },\n data,\n req,\n req: { payload },\n } = args\n\n try {\n const shouldCommit = await initTransaction(req)\n\n const doc = await payload.db.findOne({\n collection: config.slug,\n req,\n })\n\n if (doc) throw new Forbidden(req.t)\n\n // /////////////////////////////////////\n // Register first user\n // /////////////////////////////////////\n\n const result = await payload.create<TSlug>({\n collection: slug as TSlug,\n data,\n overrideAccess: true,\n req,\n })\n\n // auto-verify (if applicable)\n if (verify) {\n await payload.update({\n id: result.id,\n collection: slug,\n data: {\n _verified: true,\n },\n req,\n })\n }\n\n // /////////////////////////////////////\n // Log in new user\n // /////////////////////////////////////\n\n const { exp, token } = await payload.login({\n ...args,\n collection: slug,\n req,\n })\n\n if (shouldCommit) await commitTransaction(req)\n\n return {\n exp,\n token,\n user: result,\n }\n } catch (error: unknown) {\n await killTransaction(req)\n throw error\n }\n}\n"],"names":["Forbidden","commitTransaction","initTransaction","killTransaction","registerFirstUserOperation","args","collection","config","slug","auth","verify","data","req","payload","shouldCommit","doc","db","findOne","t","result","create","overrideAccess","update","id","_verified","exp","token","login","user","error"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"AAMA,SAASA,SAAS,QAAQ,wBAAuB;AACjD,SAASC,iBAAiB,QAAQ,uCAAsC;AACxE,SAASC,eAAe,QAAQ,qCAAoC;AACpE,SAASC,eAAe,QAAQ,qCAAoC;AAiBpE,OAAO,MAAMC,6BAA6B,OACxCC;IAEA,MAAM,EACJC,YAAY,EACVC,MAAM,EACNA,QAAQ,EACNC,IAAI,EACJC,MAAM,EAAEC,MAAM,EAAE,EACjB,EACF,EACDC,IAAI,EACJC,GAAG,EACHA,KAAK,EAAEC,OAAO,EAAE,EACjB,GAAGR;IAEJ,IAAI;QACF,MAAMS,eAAe,MAAMZ,gBAAgBU;QAE3C,MAAMG,MAAM,MAAMF,QAAQG,EAAE,CAACC,OAAO,CAAC;YACnCX,YAAYC,OAAOC,IAAI;YACvBI;QACF;QAEA,IAAIG,KAAK,MAAM,IAAIf,UAAUY,IAAIM,CAAC;QAElC,wCAAwC;QACxC,sBAAsB;QACtB,wCAAwC;QAExC,MAAMC,SAAS,MAAMN,QAAQO,MAAM,CAAQ;YACzCd,YAAYE;YACZG;YACAU,gBAAgB;YAChBT;QACF;QAEA,8BAA8B;QAC9B,IAAIF,QAAQ;YACV,MAAMG,QAAQS,MAAM,CAAC;gBACnBC,IAAIJ,OAAOI,EAAE;gBACbjB,YAAYE;gBACZG,MAAM;oBACJa,WAAW;gBACb;gBACAZ;YACF;QACF;QAEA,wCAAwC;QACxC,kBAAkB;QAClB,wCAAwC;QAExC,MAAM,EAAEa,GAAG,EAAEC,KAAK,EAAE,GAAG,MAAMb,QAAQc,KAAK,CAAC;YACzC,GAAGtB,IAAI;YACPC,YAAYE;YACZI;QACF;QAEA,IAAIE,cAAc,MAAMb,kBAAkBW;QAE1C,OAAO;YACLa;YACAC;YACAE,MAAMT;QACR;IACF,EAAE,OAAOU,OAAgB;QACvB,MAAM1B,gBAAgBS;QACtB,MAAMiB;IACR;AACF,EAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/auth/operations/resetPassword.ts"],"sourcesContent":["import httpStatus from 'http-status'\nimport jwt from 'jsonwebtoken'\n\nimport type { Collection } from '../../collections/config/types.js'\nimport type { PayloadRequest } from '../../types/index.js'\n\nimport { APIError } from '../../errors/index.js'\nimport { commitTransaction } from '../../utilities/commitTransaction.js'\nimport { initTransaction } from '../../utilities/initTransaction.js'\nimport { killTransaction } from '../../utilities/killTransaction.js'\nimport { getFieldsToSign } from '../getFieldsToSign.js'\nimport { authenticateLocalStrategy } from '../strategies/local/authenticate.js'\nimport { generatePasswordSaltHash } from '../strategies/local/generatePasswordSaltHash.js'\n\nexport type Result = {\n token?: string\n user: Record<string, unknown>\n}\n\nexport type Arguments = {\n collection: Collection\n data: {\n password: string\n token: string\n }\n depth?: number\n overrideAccess?: boolean\n req: PayloadRequest\n}\n\nexport const resetPasswordOperation = async (args: Arguments): Promise<Result> => {\n if (\n !Object.prototype.hasOwnProperty.call(args.data, 'token') ||\n !Object.prototype.hasOwnProperty.call(args.data, 'password')\n ) {\n throw new APIError('Missing required data.', httpStatus.BAD_REQUEST)\n }\n\n const {\n collection: { config: collectionConfig },\n data,\n depth,\n overrideAccess,\n req: {\n payload: { secret },\n payload,\n },\n req,\n } = args\n\n try {\n const shouldCommit = await initTransaction(req)\n\n // /////////////////////////////////////\n // Reset Password\n // /////////////////////////////////////\n\n const user = await payload.db.findOne<any>({\n collection: collectionConfig.slug,\n req,\n where: {\n resetPasswordExpiration: { greater_than: new Date() },\n resetPasswordToken: { equals: data.token },\n },\n })\n\n if (!user) throw new APIError('Token is either invalid or has expired.', httpStatus.FORBIDDEN)\n\n // TODO: replace this method\n const { hash, salt } = await generatePasswordSaltHash({ password: data.password })\n\n user.salt = salt\n user.hash = hash\n\n user.resetPasswordExpiration = new Date().toISOString()\n\n if (collectionConfig.auth.verify) {\n user._verified = true\n }\n\n const doc = await payload.db.updateOne({\n id: user.id,\n collection: collectionConfig.slug,\n data: user,\n req,\n })\n\n await authenticateLocalStrategy({ doc, password: data.password })\n\n const fieldsToSign = getFieldsToSign({\n collectionConfig,\n email: user.email,\n user,\n })\n\n const token = jwt.sign(fieldsToSign, secret, {\n expiresIn: collectionConfig.auth.tokenExpiration,\n })\n\n const fullUser = await payload.findByID({\n id: user.id,\n collection: collectionConfig.slug,\n depth,\n overrideAccess,\n req,\n })\n if (shouldCommit) await commitTransaction(req)\n\n const result = {\n token,\n user: fullUser,\n }\n\n return result\n } catch (error: unknown) {\n await killTransaction(req)\n throw error\n }\n}\n\nexport default resetPasswordOperation\n"],"names":["httpStatus","jwt","APIError","commitTransaction","initTransaction","killTransaction","getFieldsToSign","authenticateLocalStrategy","generatePasswordSaltHash","resetPasswordOperation","args","Object","prototype","hasOwnProperty","call","data","BAD_REQUEST","collection","config","collectionConfig","depth","overrideAccess","req","payload","secret","shouldCommit","user","db","findOne","slug","where","resetPasswordExpiration","greater_than","Date","resetPasswordToken","equals","token","FORBIDDEN","hash","salt","password","toISOString","auth","verify","_verified","doc","updateOne","id","fieldsToSign","email","sign","expiresIn","tokenExpiration","fullUser","findByID","result","error"],"mappings":"AAAA,OAAOA,gBAAgB,cAAa;AACpC,OAAOC,SAAS,eAAc;AAK9B,SAASC,QAAQ,QAAQ,wBAAuB;AAChD,SAASC,iBAAiB,QAAQ,uCAAsC;AACxE,SAASC,eAAe,QAAQ,qCAAoC;AACpE,SAASC,eAAe,QAAQ,qCAAoC;AACpE,SAASC,eAAe,QAAQ,wBAAuB;AACvD,SAASC,yBAAyB,QAAQ,sCAAqC;AAC/E,SAASC,wBAAwB,QAAQ,kDAAiD;AAkB1F,OAAO,MAAMC,yBAAyB,OAAOC;IAC3C,IACE,CAACC,OAAOC,SAAS,CAACC,cAAc,CAACC,IAAI,CAACJ,KAAKK,IAAI,EAAE,YACjD,CAACJ,OAAOC,SAAS,CAACC,cAAc,CAACC,IAAI,CAACJ,KAAKK,IAAI,EAAE,aACjD;QACA,MAAM,IAAIb,SAAS,0BAA0BF,WAAWgB,WAAW;IACrE;IAEA,MAAM,EACJC,YAAY,EAAEC,QAAQC,gBAAgB,EAAE,EACxCJ,IAAI,EACJK,KAAK,EACLC,cAAc,EACdC,KAAK,EACHC,SAAS,EAAEC,MAAM,EAAE,EACnBD,OAAO,EACR,EACDD,GAAG,EACJ,GAAGZ;IAEJ,IAAI;QACF,MAAMe,eAAe,MAAMrB,gBAAgBkB;QAE3C,wCAAwC;QACxC,iBAAiB;QACjB,wCAAwC;QAExC,MAAMI,OAAO,MAAMH,QAAQI,EAAE,CAACC,OAAO,CAAM;YACzCX,YAAYE,iBAAiBU,IAAI;YACjCP;YACAQ,OAAO;gBACLC,yBAAyB;oBAAEC,cAAc,IAAIC;gBAAO;gBACpDC,oBAAoB;oBAAEC,QAAQpB,KAAKqB,KAAK;gBAAC;YAC3C;QACF;QAEA,IAAI,CAACV,MAAM,MAAM,IAAIxB,SAAS,2CAA2CF,WAAWqC,SAAS;QAE7F,4BAA4B;QAC5B,MAAM,EAAEC,IAAI,EAAEC,IAAI,EAAE,GAAG,MAAM/B,yBAAyB;YAAEgC,UAAUzB,KAAKyB,QAAQ;QAAC;QAEhFd,KAAKa,IAAI,GAAGA;QACZb,KAAKY,IAAI,GAAGA;QAEZZ,KAAKK,uBAAuB,GAAG,IAAIE,OAAOQ,WAAW;QAErD,IAAItB,iBAAiBuB,IAAI,CAACC,MAAM,EAAE;YAChCjB,KAAKkB,SAAS,GAAG;QACnB;QAEA,MAAMC,MAAM,MAAMtB,QAAQI,EAAE,CAACmB,SAAS,CAAC;YACrCC,IAAIrB,KAAKqB,EAAE;YACX9B,YAAYE,iBAAiBU,IAAI;YACjCd,MAAMW;YACNJ;QACF;QAEA,MAAMf,0BAA0B;YAAEsC;YAAKL,UAAUzB,KAAKyB,QAAQ;QAAC;QAE/D,MAAMQ,eAAe1C,gBAAgB;YACnCa;YACA8B,OAAOvB,KAAKuB,KAAK;YACjBvB;QACF;QAEA,MAAMU,QAAQnC,IAAIiD,IAAI,CAACF,cAAcxB,QAAQ;YAC3C2B,WAAWhC,iBAAiBuB,IAAI,CAACU,eAAe;QAClD;QAEA,MAAMC,WAAW,MAAM9B,QAAQ+B,QAAQ,CAAC;YACtCP,IAAIrB,KAAKqB,EAAE;YACX9B,YAAYE,iBAAiBU,IAAI;YACjCT;YACAC;YACAC;QACF;QACA,IAAIG,cAAc,MAAMtB,kBAAkBmB;QAE1C,MAAMiC,SAAS;YACbnB;YACAV,MAAM2B;QACR;QAEA,OAAOE;IACT,EAAE,OAAOC,OAAgB;QACvB,MAAMnD,gBAAgBiB;QACtB,MAAMkC;IACR;AACF,EAAC;AAED,eAAe/C,uBAAsB"}
|
|
1
|
+
{"version":3,"sources":["../../../src/auth/operations/resetPassword.ts"],"sourcesContent":["import httpStatus from 'http-status'\nimport jwt from 'jsonwebtoken'\n\nimport type { Collection } from '../../collections/config/types.js'\nimport type { PayloadRequest } from '../../types/index.js'\n\nimport { APIError } from '../../errors/index.js'\nimport { commitTransaction } from '../../utilities/commitTransaction.js'\nimport { initTransaction } from '../../utilities/initTransaction.js'\nimport { killTransaction } from '../../utilities/killTransaction.js'\nimport { getFieldsToSign } from '../getFieldsToSign.js'\nimport { authenticateLocalStrategy } from '../strategies/local/authenticate.js'\nimport { generatePasswordSaltHash } from '../strategies/local/generatePasswordSaltHash.js'\n\nexport type Result = {\n token?: string\n user: Record<string, unknown>\n}\n\nexport type Arguments = {\n collection: Collection\n data: {\n password: string\n token: string\n }\n depth?: number\n overrideAccess?: boolean\n req: PayloadRequest\n}\n\nexport const resetPasswordOperation = async (args: Arguments): Promise<Result> => {\n if (\n !Object.prototype.hasOwnProperty.call(args.data, 'token') ||\n !Object.prototype.hasOwnProperty.call(args.data, 'password')\n ) {\n throw new APIError('Missing required data.', httpStatus.BAD_REQUEST)\n }\n\n const {\n collection: { config: collectionConfig },\n data,\n depth,\n overrideAccess,\n req: {\n payload: { secret },\n payload,\n },\n req,\n } = args\n\n try {\n const shouldCommit = await initTransaction(req)\n\n // /////////////////////////////////////\n // Reset Password\n // /////////////////////////////////////\n\n const user = await payload.db.findOne<any>({\n collection: collectionConfig.slug,\n req,\n where: {\n resetPasswordExpiration: { greater_than: new Date() },\n resetPasswordToken: { equals: data.token },\n },\n })\n\n if (!user) throw new APIError('Token is either invalid or has expired.', httpStatus.FORBIDDEN)\n\n // TODO: replace this method\n const { hash, salt } = await generatePasswordSaltHash({ password: data.password })\n\n user.salt = salt\n user.hash = hash\n\n user.resetPasswordExpiration = new Date().toISOString()\n\n if (collectionConfig.auth.verify) {\n user._verified = true\n }\n\n const doc = await payload.db.updateOne({\n id: user.id,\n collection: collectionConfig.slug,\n data: user,\n req,\n })\n\n await authenticateLocalStrategy({ doc, password: data.password })\n\n const fieldsToSign = getFieldsToSign({\n collectionConfig,\n email: user.email,\n user,\n })\n\n const token = jwt.sign(fieldsToSign, secret, {\n expiresIn: collectionConfig.auth.tokenExpiration,\n })\n\n const fullUser = await payload.findByID({\n id: user.id,\n collection: collectionConfig.slug,\n depth,\n overrideAccess,\n req,\n })\n if (shouldCommit) await commitTransaction(req)\n\n const result = {\n token,\n user: fullUser,\n }\n\n return result\n } catch (error: unknown) {\n await killTransaction(req)\n throw error\n }\n}\n\nexport default resetPasswordOperation\n"],"names":["httpStatus","jwt","APIError","commitTransaction","initTransaction","killTransaction","getFieldsToSign","authenticateLocalStrategy","generatePasswordSaltHash","resetPasswordOperation","args","Object","prototype","hasOwnProperty","call","data","BAD_REQUEST","collection","config","collectionConfig","depth","overrideAccess","req","payload","secret","shouldCommit","user","db","findOne","slug","where","resetPasswordExpiration","greater_than","Date","resetPasswordToken","equals","token","FORBIDDEN","hash","salt","password","toISOString","auth","verify","_verified","doc","updateOne","id","fieldsToSign","email","sign","expiresIn","tokenExpiration","fullUser","findByID","result","error"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"AAAA,OAAOA,gBAAgB,cAAa;AACpC,OAAOC,SAAS,eAAc;AAK9B,SAASC,QAAQ,QAAQ,wBAAuB;AAChD,SAASC,iBAAiB,QAAQ,uCAAsC;AACxE,SAASC,eAAe,QAAQ,qCAAoC;AACpE,SAASC,eAAe,QAAQ,qCAAoC;AACpE,SAASC,eAAe,QAAQ,wBAAuB;AACvD,SAASC,yBAAyB,QAAQ,sCAAqC;AAC/E,SAASC,wBAAwB,QAAQ,kDAAiD;AAkB1F,OAAO,MAAMC,yBAAyB,OAAOC;IAC3C,IACE,CAACC,OAAOC,SAAS,CAACC,cAAc,CAACC,IAAI,CAACJ,KAAKK,IAAI,EAAE,YACjD,CAACJ,OAAOC,SAAS,CAACC,cAAc,CAACC,IAAI,CAACJ,KAAKK,IAAI,EAAE,aACjD;QACA,MAAM,IAAIb,SAAS,0BAA0BF,WAAWgB,WAAW;IACrE;IAEA,MAAM,EACJC,YAAY,EAAEC,QAAQC,gBAAgB,EAAE,EACxCJ,IAAI,EACJK,KAAK,EACLC,cAAc,EACdC,KAAK,EACHC,SAAS,EAAEC,MAAM,EAAE,EACnBD,OAAO,EACR,EACDD,GAAG,EACJ,GAAGZ;IAEJ,IAAI;QACF,MAAMe,eAAe,MAAMrB,gBAAgBkB;QAE3C,wCAAwC;QACxC,iBAAiB;QACjB,wCAAwC;QAExC,MAAMI,OAAO,MAAMH,QAAQI,EAAE,CAACC,OAAO,CAAM;YACzCX,YAAYE,iBAAiBU,IAAI;YACjCP;YACAQ,OAAO;gBACLC,yBAAyB;oBAAEC,cAAc,IAAIC;gBAAO;gBACpDC,oBAAoB;oBAAEC,QAAQpB,KAAKqB,KAAK;gBAAC;YAC3C;QACF;QAEA,IAAI,CAACV,MAAM,MAAM,IAAIxB,SAAS,2CAA2CF,WAAWqC,SAAS;QAE7F,4BAA4B;QAC5B,MAAM,EAAEC,IAAI,EAAEC,IAAI,EAAE,GAAG,MAAM/B,yBAAyB;YAAEgC,UAAUzB,KAAKyB,QAAQ;QAAC;QAEhFd,KAAKa,IAAI,GAAGA;QACZb,KAAKY,IAAI,GAAGA;QAEZZ,KAAKK,uBAAuB,GAAG,IAAIE,OAAOQ,WAAW;QAErD,IAAItB,iBAAiBuB,IAAI,CAACC,MAAM,EAAE;YAChCjB,KAAKkB,SAAS,GAAG;QACnB;QAEA,MAAMC,MAAM,MAAMtB,QAAQI,EAAE,CAACmB,SAAS,CAAC;YACrCC,IAAIrB,KAAKqB,EAAE;YACX9B,YAAYE,iBAAiBU,IAAI;YACjCd,MAAMW;YACNJ;QACF;QAEA,MAAMf,0BAA0B;YAAEsC;YAAKL,UAAUzB,KAAKyB,QAAQ;QAAC;QAE/D,MAAMQ,eAAe1C,gBAAgB;YACnCa;YACA8B,OAAOvB,KAAKuB,KAAK;YACjBvB;QACF;QAEA,MAAMU,QAAQnC,IAAIiD,IAAI,CAACF,cAAcxB,QAAQ;YAC3C2B,WAAWhC,iBAAiBuB,IAAI,CAACU,eAAe;QAClD;QAEA,MAAMC,WAAW,MAAM9B,QAAQ+B,QAAQ,CAAC;YACtCP,IAAIrB,KAAKqB,EAAE;YACX9B,YAAYE,iBAAiBU,IAAI;YACjCT;YACAC;YACAC;QACF;QACA,IAAIG,cAAc,MAAMtB,kBAAkBmB;QAE1C,MAAMiC,SAAS;YACbnB;YACAV,MAAM2B;QACR;QAEA,OAAOE;IACT,EAAE,OAAOC,OAAgB;QACvB,MAAMnD,gBAAgBiB;QACtB,MAAMkC;IACR;AACF,EAAC;AAED,eAAe/C,uBAAsB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/auth/operations/unlock.ts"],"sourcesContent":["import httpStatus from 'http-status'\n\nimport type { Collection } from '../../collections/config/types.js'\nimport type { PayloadRequest } from '../../types/index.js'\n\nimport { APIError } from '../../errors/index.js'\nimport { commitTransaction } from '../../utilities/commitTransaction.js'\nimport { initTransaction } from '../../utilities/initTransaction.js'\nimport { killTransaction } from '../../utilities/killTransaction.js'\nimport executeAccess from '../executeAccess.js'\nimport { resetLoginAttempts } from '../strategies/local/resetLoginAttempts.js'\n\nexport type Args = {\n collection: Collection\n data: {\n email: string\n }\n overrideAccess?: boolean\n req: PayloadRequest\n}\n\nexport const unlockOperation = async (args: Args): Promise<boolean> => {\n if (!Object.prototype.hasOwnProperty.call(args.data, 'email')) {\n throw new APIError('Missing email.', httpStatus.BAD_REQUEST)\n }\n\n const {\n collection: { config: collectionConfig },\n overrideAccess,\n req: { locale },\n req,\n } = args\n\n try {\n const shouldCommit = await initTransaction(req)\n\n // /////////////////////////////////////\n // Access\n // /////////////////////////////////////\n\n if (!overrideAccess) {\n await executeAccess({ req }, collectionConfig.access.unlock)\n }\n\n const options = { ...args }\n\n const { data } = options\n\n // /////////////////////////////////////\n // Unlock\n // /////////////////////////////////////\n\n if (!data.email) {\n throw new APIError('Missing email.', httpStatus.BAD_REQUEST)\n }\n\n const user = await req.payload.db.findOne({\n collection: collectionConfig.slug,\n locale,\n req,\n where: { email: { equals: data.email.toLowerCase() } },\n })\n\n let result\n\n if (user) {\n await resetLoginAttempts({\n collection: collectionConfig,\n doc: user,\n payload: req.payload,\n req,\n })\n result = true\n } else {\n result = null\n }\n\n if (shouldCommit) await commitTransaction(req)\n\n return result\n } catch (error: unknown) {\n await killTransaction(req)\n throw error\n }\n}\n\nexport default unlockOperation\n"],"names":["httpStatus","APIError","commitTransaction","initTransaction","killTransaction","executeAccess","resetLoginAttempts","unlockOperation","args","Object","prototype","hasOwnProperty","call","data","BAD_REQUEST","collection","config","collectionConfig","overrideAccess","req","locale","shouldCommit","access","unlock","options","email","user","payload","db","findOne","slug","where","equals","toLowerCase","result","doc","error"],"mappings":"AAAA,OAAOA,gBAAgB,cAAa;AAKpC,SAASC,QAAQ,QAAQ,wBAAuB;AAChD,SAASC,iBAAiB,QAAQ,uCAAsC;AACxE,SAASC,eAAe,QAAQ,qCAAoC;AACpE,SAASC,eAAe,QAAQ,qCAAoC;AACpE,OAAOC,mBAAmB,sBAAqB;AAC/C,SAASC,kBAAkB,QAAQ,4CAA2C;AAW9E,OAAO,MAAMC,kBAAkB,OAAOC;IACpC,IAAI,CAACC,OAAOC,SAAS,CAACC,cAAc,CAACC,IAAI,CAACJ,KAAKK,IAAI,EAAE,UAAU;QAC7D,MAAM,IAAIZ,SAAS,kBAAkBD,WAAWc,WAAW;IAC7D;IAEA,MAAM,EACJC,YAAY,EAAEC,QAAQC,gBAAgB,EAAE,EACxCC,cAAc,EACdC,KAAK,EAAEC,MAAM,EAAE,EACfD,GAAG,EACJ,GAAGX;IAEJ,IAAI;QACF,MAAMa,eAAe,MAAMlB,gBAAgBgB;QAE3C,wCAAwC;QACxC,SAAS;QACT,wCAAwC;QAExC,IAAI,CAACD,gBAAgB;YACnB,MAAMb,cAAc;gBAAEc;YAAI,GAAGF,iBAAiBK,MAAM,CAACC,MAAM;QAC7D;QAEA,MAAMC,UAAU;YAAE,GAAGhB,IAAI;QAAC;QAE1B,MAAM,EAAEK,IAAI,EAAE,GAAGW;QAEjB,wCAAwC;QACxC,SAAS;QACT,wCAAwC;QAExC,IAAI,CAACX,KAAKY,KAAK,EAAE;YACf,MAAM,IAAIxB,SAAS,kBAAkBD,WAAWc,WAAW;QAC7D;QAEA,MAAMY,OAAO,MAAMP,IAAIQ,OAAO,CAACC,EAAE,CAACC,OAAO,CAAC;YACxCd,YAAYE,iBAAiBa,IAAI;YACjCV;YACAD;YACAY,OAAO;gBAAEN,OAAO;oBAAEO,QAAQnB,KAAKY,KAAK,CAACQ,WAAW;gBAAG;YAAE;QACvD;QAEA,IAAIC;QAEJ,IAAIR,MAAM;YACR,MAAMpB,mBAAmB;gBACvBS,YAAYE;gBACZkB,KAAKT;gBACLC,SAASR,IAAIQ,OAAO;gBACpBR;YACF;YACAe,SAAS;QACX,OAAO;YACLA,SAAS;QACX;QAEA,IAAIb,cAAc,MAAMnB,kBAAkBiB;QAE1C,OAAOe;IACT,EAAE,OAAOE,OAAgB;QACvB,MAAMhC,gBAAgBe;QACtB,MAAMiB;IACR;AACF,EAAC;AAED,eAAe7B,gBAAe"}
|
|
1
|
+
{"version":3,"sources":["../../../src/auth/operations/unlock.ts"],"sourcesContent":["import httpStatus from 'http-status'\n\nimport type { Collection } from '../../collections/config/types.js'\nimport type { PayloadRequest } from '../../types/index.js'\n\nimport { APIError } from '../../errors/index.js'\nimport { commitTransaction } from '../../utilities/commitTransaction.js'\nimport { initTransaction } from '../../utilities/initTransaction.js'\nimport { killTransaction } from '../../utilities/killTransaction.js'\nimport executeAccess from '../executeAccess.js'\nimport { resetLoginAttempts } from '../strategies/local/resetLoginAttempts.js'\n\nexport type Args = {\n collection: Collection\n data: {\n email: string\n }\n overrideAccess?: boolean\n req: PayloadRequest\n}\n\nexport const unlockOperation = async (args: Args): Promise<boolean> => {\n if (!Object.prototype.hasOwnProperty.call(args.data, 'email')) {\n throw new APIError('Missing email.', httpStatus.BAD_REQUEST)\n }\n\n const {\n collection: { config: collectionConfig },\n overrideAccess,\n req: { locale },\n req,\n } = args\n\n try {\n const shouldCommit = await initTransaction(req)\n\n // /////////////////////////////////////\n // Access\n // /////////////////////////////////////\n\n if (!overrideAccess) {\n await executeAccess({ req }, collectionConfig.access.unlock)\n }\n\n const options = { ...args }\n\n const { data } = options\n\n // /////////////////////////////////////\n // Unlock\n // /////////////////////////////////////\n\n if (!data.email) {\n throw new APIError('Missing email.', httpStatus.BAD_REQUEST)\n }\n\n const user = await req.payload.db.findOne({\n collection: collectionConfig.slug,\n locale,\n req,\n where: { email: { equals: data.email.toLowerCase() } },\n })\n\n let result\n\n if (user) {\n await resetLoginAttempts({\n collection: collectionConfig,\n doc: user,\n payload: req.payload,\n req,\n })\n result = true\n } else {\n result = null\n }\n\n if (shouldCommit) await commitTransaction(req)\n\n return result\n } catch (error: unknown) {\n await killTransaction(req)\n throw error\n }\n}\n\nexport default unlockOperation\n"],"names":["httpStatus","APIError","commitTransaction","initTransaction","killTransaction","executeAccess","resetLoginAttempts","unlockOperation","args","Object","prototype","hasOwnProperty","call","data","BAD_REQUEST","collection","config","collectionConfig","overrideAccess","req","locale","shouldCommit","access","unlock","options","email","user","payload","db","findOne","slug","where","equals","toLowerCase","result","doc","error"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"AAAA,OAAOA,gBAAgB,cAAa;AAKpC,SAASC,QAAQ,QAAQ,wBAAuB;AAChD,SAASC,iBAAiB,QAAQ,uCAAsC;AACxE,SAASC,eAAe,QAAQ,qCAAoC;AACpE,SAASC,eAAe,QAAQ,qCAAoC;AACpE,OAAOC,mBAAmB,sBAAqB;AAC/C,SAASC,kBAAkB,QAAQ,4CAA2C;AAW9E,OAAO,MAAMC,kBAAkB,OAAOC;IACpC,IAAI,CAACC,OAAOC,SAAS,CAACC,cAAc,CAACC,IAAI,CAACJ,KAAKK,IAAI,EAAE,UAAU;QAC7D,MAAM,IAAIZ,SAAS,kBAAkBD,WAAWc,WAAW;IAC7D;IAEA,MAAM,EACJC,YAAY,EAAEC,QAAQC,gBAAgB,EAAE,EACxCC,cAAc,EACdC,KAAK,EAAEC,MAAM,EAAE,EACfD,GAAG,EACJ,GAAGX;IAEJ,IAAI;QACF,MAAMa,eAAe,MAAMlB,gBAAgBgB;QAE3C,wCAAwC;QACxC,SAAS;QACT,wCAAwC;QAExC,IAAI,CAACD,gBAAgB;YACnB,MAAMb,cAAc;gBAAEc;YAAI,GAAGF,iBAAiBK,MAAM,CAACC,MAAM;QAC7D;QAEA,MAAMC,UAAU;YAAE,GAAGhB,IAAI;QAAC;QAE1B,MAAM,EAAEK,IAAI,EAAE,GAAGW;QAEjB,wCAAwC;QACxC,SAAS;QACT,wCAAwC;QAExC,IAAI,CAACX,KAAKY,KAAK,EAAE;YACf,MAAM,IAAIxB,SAAS,kBAAkBD,WAAWc,WAAW;QAC7D;QAEA,MAAMY,OAAO,MAAMP,IAAIQ,OAAO,CAACC,EAAE,CAACC,OAAO,CAAC;YACxCd,YAAYE,iBAAiBa,IAAI;YACjCV;YACAD;YACAY,OAAO;gBAAEN,OAAO;oBAAEO,QAAQnB,KAAKY,KAAK,CAACQ,WAAW;gBAAG;YAAE;QACvD;QAEA,IAAIC;QAEJ,IAAIR,MAAM;YACR,MAAMpB,mBAAmB;gBACvBS,YAAYE;gBACZkB,KAAKT;gBACLC,SAASR,IAAIQ,OAAO;gBACpBR;YACF;YACAe,SAAS;QACX,OAAO;YACLA,SAAS;QACX;QAEA,IAAIb,cAAc,MAAMnB,kBAAkBiB;QAE1C,OAAOe;IACT,EAAE,OAAOE,OAAgB;QACvB,MAAMhC,gBAAgBe;QACtB,MAAMiB;IACR;AACF,EAAC;AAED,eAAe7B,gBAAe"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/auth/operations/verifyEmail.ts"],"sourcesContent":["import httpStatus from 'http-status'\n\nimport type { Collection } from '../../collections/config/types.js'\nimport type { PayloadRequest } from '../../types/index.js'\n\nimport { APIError } from '../../errors/index.js'\nimport { commitTransaction } from '../../utilities/commitTransaction.js'\nimport { initTransaction } from '../../utilities/initTransaction.js'\nimport { killTransaction } from '../../utilities/killTransaction.js'\n\nexport type Args = {\n collection: Collection\n req: PayloadRequest\n token: string\n}\n\nexport const verifyEmailOperation = async (args: Args): Promise<boolean> => {\n const { collection, req, token } = args\n if (!Object.prototype.hasOwnProperty.call(args, 'token')) {\n throw new APIError('Missing required data.', httpStatus.BAD_REQUEST)\n }\n\n try {\n const shouldCommit = await initTransaction(req)\n\n const user = await req.payload.db.findOne<any>({\n collection: collection.config.slug,\n req,\n where: {\n _verificationToken: { equals: token },\n },\n })\n\n if (!user) throw new APIError('Verification token is invalid.', httpStatus.FORBIDDEN)\n if (user && user._verified === true)\n throw new APIError('This account has already been activated.', httpStatus.ACCEPTED)\n\n await req.payload.db.updateOne({\n id: user.id,\n collection: collection.config.slug,\n data: {\n ...user,\n _verificationToken: null,\n _verified: true,\n },\n req,\n })\n\n if (shouldCommit) await commitTransaction(req)\n\n return true\n } catch (error: unknown) {\n await killTransaction(req)\n throw error\n }\n}\n\nexport default verifyEmailOperation\n"],"names":["httpStatus","APIError","commitTransaction","initTransaction","killTransaction","verifyEmailOperation","args","collection","req","token","Object","prototype","hasOwnProperty","call","BAD_REQUEST","shouldCommit","user","payload","db","findOne","config","slug","where","_verificationToken","equals","FORBIDDEN","_verified","ACCEPTED","updateOne","id","data","error"],"mappings":"AAAA,OAAOA,gBAAgB,cAAa;AAKpC,SAASC,QAAQ,QAAQ,wBAAuB;AAChD,SAASC,iBAAiB,QAAQ,uCAAsC;AACxE,SAASC,eAAe,QAAQ,qCAAoC;AACpE,SAASC,eAAe,QAAQ,qCAAoC;AAQpE,OAAO,MAAMC,uBAAuB,OAAOC;IACzC,MAAM,EAAEC,UAAU,EAAEC,GAAG,EAAEC,KAAK,EAAE,GAAGH;IACnC,IAAI,CAACI,OAAOC,SAAS,CAACC,cAAc,CAACC,IAAI,CAACP,MAAM,UAAU;QACxD,MAAM,IAAIL,SAAS,0BAA0BD,WAAWc,WAAW;IACrE;IAEA,IAAI;QACF,MAAMC,eAAe,MAAMZ,gBAAgBK;QAE3C,MAAMQ,OAAO,MAAMR,IAAIS,OAAO,CAACC,EAAE,CAACC,OAAO,CAAM;YAC7CZ,YAAYA,WAAWa,MAAM,CAACC,IAAI;YAClCb;YACAc,OAAO;gBACLC,oBAAoB;oBAAEC,QAAQf;gBAAM;YACtC;QACF;QAEA,IAAI,CAACO,MAAM,MAAM,IAAIf,SAAS,kCAAkCD,WAAWyB,SAAS;QACpF,IAAIT,QAAQA,KAAKU,SAAS,KAAK,MAC7B,MAAM,IAAIzB,SAAS,4CAA4CD,WAAW2B,QAAQ;QAEpF,MAAMnB,IAAIS,OAAO,CAACC,EAAE,CAACU,SAAS,CAAC;YAC7BC,IAAIb,KAAKa,EAAE;YACXtB,YAAYA,WAAWa,MAAM,CAACC,IAAI;YAClCS,MAAM;gBACJ,GAAGd,IAAI;gBACPO,oBAAoB;gBACpBG,WAAW;YACb;YACAlB;QACF;QAEA,IAAIO,cAAc,MAAMb,kBAAkBM;QAE1C,OAAO;IACT,EAAE,OAAOuB,OAAgB;QACvB,MAAM3B,gBAAgBI;QACtB,MAAMuB;IACR;AACF,EAAC;AAED,eAAe1B,qBAAoB"}
|
|
1
|
+
{"version":3,"sources":["../../../src/auth/operations/verifyEmail.ts"],"sourcesContent":["import httpStatus from 'http-status'\n\nimport type { Collection } from '../../collections/config/types.js'\nimport type { PayloadRequest } from '../../types/index.js'\n\nimport { APIError } from '../../errors/index.js'\nimport { commitTransaction } from '../../utilities/commitTransaction.js'\nimport { initTransaction } from '../../utilities/initTransaction.js'\nimport { killTransaction } from '../../utilities/killTransaction.js'\n\nexport type Args = {\n collection: Collection\n req: PayloadRequest\n token: string\n}\n\nexport const verifyEmailOperation = async (args: Args): Promise<boolean> => {\n const { collection, req, token } = args\n if (!Object.prototype.hasOwnProperty.call(args, 'token')) {\n throw new APIError('Missing required data.', httpStatus.BAD_REQUEST)\n }\n\n try {\n const shouldCommit = await initTransaction(req)\n\n const user = await req.payload.db.findOne<any>({\n collection: collection.config.slug,\n req,\n where: {\n _verificationToken: { equals: token },\n },\n })\n\n if (!user) throw new APIError('Verification token is invalid.', httpStatus.FORBIDDEN)\n if (user && user._verified === true)\n throw new APIError('This account has already been activated.', httpStatus.ACCEPTED)\n\n await req.payload.db.updateOne({\n id: user.id,\n collection: collection.config.slug,\n data: {\n ...user,\n _verificationToken: null,\n _verified: true,\n },\n req,\n })\n\n if (shouldCommit) await commitTransaction(req)\n\n return true\n } catch (error: unknown) {\n await killTransaction(req)\n throw error\n }\n}\n\nexport default verifyEmailOperation\n"],"names":["httpStatus","APIError","commitTransaction","initTransaction","killTransaction","verifyEmailOperation","args","collection","req","token","Object","prototype","hasOwnProperty","call","BAD_REQUEST","shouldCommit","user","payload","db","findOne","config","slug","where","_verificationToken","equals","FORBIDDEN","_verified","ACCEPTED","updateOne","id","data","error"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"AAAA,OAAOA,gBAAgB,cAAa;AAKpC,SAASC,QAAQ,QAAQ,wBAAuB;AAChD,SAASC,iBAAiB,QAAQ,uCAAsC;AACxE,SAASC,eAAe,QAAQ,qCAAoC;AACpE,SAASC,eAAe,QAAQ,qCAAoC;AAQpE,OAAO,MAAMC,uBAAuB,OAAOC;IACzC,MAAM,EAAEC,UAAU,EAAEC,GAAG,EAAEC,KAAK,EAAE,GAAGH;IACnC,IAAI,CAACI,OAAOC,SAAS,CAACC,cAAc,CAACC,IAAI,CAACP,MAAM,UAAU;QACxD,MAAM,IAAIL,SAAS,0BAA0BD,WAAWc,WAAW;IACrE;IAEA,IAAI;QACF,MAAMC,eAAe,MAAMZ,gBAAgBK;QAE3C,MAAMQ,OAAO,MAAMR,IAAIS,OAAO,CAACC,EAAE,CAACC,OAAO,CAAM;YAC7CZ,YAAYA,WAAWa,MAAM,CAACC,IAAI;YAClCb;YACAc,OAAO;gBACLC,oBAAoB;oBAAEC,QAAQf;gBAAM;YACtC;QACF;QAEA,IAAI,CAACO,MAAM,MAAM,IAAIf,SAAS,kCAAkCD,WAAWyB,SAAS;QACpF,IAAIT,QAAQA,KAAKU,SAAS,KAAK,MAC7B,MAAM,IAAIzB,SAAS,4CAA4CD,WAAW2B,QAAQ;QAEpF,MAAMnB,IAAIS,OAAO,CAACC,EAAE,CAACU,SAAS,CAAC;YAC7BC,IAAIb,KAAKa,EAAE;YACXtB,YAAYA,WAAWa,MAAM,CAACC,IAAI;YAClCS,MAAM;gBACJ,GAAGd,IAAI;gBACPO,oBAAoB;gBACpBG,WAAW;YACb;YACAlB;QACF;QAEA,IAAIO,cAAc,MAAMb,kBAAkBM;QAE1C,OAAO;IACT,EAAE,OAAOuB,OAAgB;QACvB,MAAM3B,gBAAgBI;QACtB,MAAMuB;IACR;AACF,EAAC;AAED,eAAe1B,qBAAoB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/auth/sendVerificationEmail.ts"],"sourcesContent":["import { URL } from 'url'\n\nimport type { Collection } from '../collections/config/types.js'\nimport type { EmailOptions, SanitizedConfig } from '../config/types.js'\nimport type { Payload } from '../index.js'\nimport type { PayloadRequest } from '../types/index.js'\nimport type { User, VerifyConfig } from './types.js'\n\ntype Args = {\n collection: Collection\n config: SanitizedConfig\n disableEmail: boolean\n emailOptions: EmailOptions\n req: PayloadRequest\n sendEmail: Payload['sendEmail']\n token: string\n user: User\n}\n\nasync function sendVerificationEmail(args: Args): Promise<void> {\n // Verify token from e-mail\n const {\n collection: { config: collectionConfig },\n config,\n disableEmail,\n emailOptions,\n req,\n sendEmail,\n token,\n user,\n } = args\n\n if (!disableEmail) {\n const protocol = new URL(req.url).protocol\n const serverURL =\n config.serverURL !== null && config.serverURL !== ''\n ? config.serverURL\n : `${protocol}://${req.headers.get('host')}`\n\n const verificationURL = `${serverURL}${config.routes.admin}/${collectionConfig.slug}/verify/${token}`\n\n let html = `${req.t('authentication:newAccountCreated', {\n serverURL: config.serverURL,\n verificationURL,\n })}`\n\n const verify = collectionConfig.auth.verify as VerifyConfig\n\n // Allow config to override email content\n if (typeof verify.generateEmailHTML === 'function') {\n html = await verify.generateEmailHTML({\n req,\n token,\n user,\n })\n }\n\n let subject = req.t('authentication:verifyYourEmail')\n\n // Allow config to override email subject\n if (typeof verify.generateEmailSubject === 'function') {\n subject = await verify.generateEmailSubject({\n req,\n token,\n user,\n })\n }\n\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n sendEmail({\n from: `\"${emailOptions.fromName}\" <${emailOptions.fromAddress}>`,\n html,\n subject,\n to: user.email,\n })\n }\n}\n\nexport default sendVerificationEmail\n"],"names":["URL","sendVerificationEmail","args","collection","config","collectionConfig","disableEmail","emailOptions","req","sendEmail","token","user","protocol","url","serverURL","headers","get","verificationURL","routes","admin","slug","html","t","verify","auth","generateEmailHTML","subject","generateEmailSubject","from","fromName","fromAddress","to","email"],"mappings":"AAAA,SAASA,GAAG,QAAQ,MAAK;AAmBzB,eAAeC,sBAAsBC,IAAU;IAC7C,2BAA2B;IAC3B,MAAM,EACJC,YAAY,EAAEC,QAAQC,gBAAgB,EAAE,EACxCD,MAAM,EACNE,YAAY,EACZC,YAAY,EACZC,GAAG,EACHC,SAAS,EACTC,KAAK,EACLC,IAAI,EACL,GAAGT;IAEJ,IAAI,CAACI,cAAc;QACjB,MAAMM,WAAW,IAAIZ,IAAIQ,IAAIK,GAAG,EAAED,QAAQ;QAC1C,MAAME,YACJV,OAAOU,SAAS,KAAK,QAAQV,OAAOU,SAAS,KAAK,KAC9CV,OAAOU,SAAS,GAChB,CAAC,EAAEF,SAAS,GAAG,EAAEJ,IAAIO,OAAO,CAACC,GAAG,CAAC,QAAQ,CAAC;QAEhD,MAAMC,kBAAkB,CAAC,EAAEH,UAAU,EAAEV,OAAOc,MAAM,CAACC,KAAK,CAAC,CAAC,EAAEd,iBAAiBe,IAAI,CAAC,QAAQ,EAAEV,MAAM,CAAC;QAErG,IAAIW,OAAO,CAAC,EAAEb,IAAIc,CAAC,CAAC,oCAAoC;YACtDR,WAAWV,OAAOU,SAAS;YAC3BG;QACF,GAAG,CAAC;QAEJ,MAAMM,SAASlB,iBAAiBmB,IAAI,CAACD,MAAM;QAE3C,yCAAyC;QACzC,IAAI,OAAOA,OAAOE,iBAAiB,KAAK,YAAY;YAClDJ,OAAO,MAAME,OAAOE,iBAAiB,CAAC;gBACpCjB;gBACAE;gBACAC;YACF;QACF;QAEA,IAAIe,UAAUlB,IAAIc,CAAC,CAAC;QAEpB,yCAAyC;QACzC,IAAI,OAAOC,OAAOI,oBAAoB,KAAK,YAAY;YACrDD,UAAU,MAAMH,OAAOI,oBAAoB,CAAC;gBAC1CnB;gBACAE;gBACAC;YACF;QACF;QAEA,mEAAmE;QACnEF,UAAU;YACRmB,MAAM,CAAC,CAAC,EAAErB,aAAasB,QAAQ,CAAC,GAAG,EAAEtB,aAAauB,WAAW,CAAC,CAAC,CAAC;YAChET;YACAK;YACAK,IAAIpB,KAAKqB,KAAK;QAChB;IACF;AACF;AAEA,eAAe/B,sBAAqB"}
|
|
1
|
+
{"version":3,"sources":["../../src/auth/sendVerificationEmail.ts"],"sourcesContent":["import { URL } from 'url'\n\nimport type { Collection } from '../collections/config/types.js'\nimport type { EmailOptions, SanitizedConfig } from '../config/types.js'\nimport type { Payload } from '../index.js'\nimport type { PayloadRequest } from '../types/index.js'\nimport type { User, VerifyConfig } from './types.js'\n\ntype Args = {\n collection: Collection\n config: SanitizedConfig\n disableEmail: boolean\n emailOptions: EmailOptions\n req: PayloadRequest\n sendEmail: Payload['sendEmail']\n token: string\n user: User\n}\n\nasync function sendVerificationEmail(args: Args): Promise<void> {\n // Verify token from e-mail\n const {\n collection: { config: collectionConfig },\n config,\n disableEmail,\n emailOptions,\n req,\n sendEmail,\n token,\n user,\n } = args\n\n if (!disableEmail) {\n const protocol = new URL(req.url).protocol\n const serverURL =\n config.serverURL !== null && config.serverURL !== ''\n ? config.serverURL\n : `${protocol}://${req.headers.get('host')}`\n\n const verificationURL = `${serverURL}${config.routes.admin}/${collectionConfig.slug}/verify/${token}`\n\n let html = `${req.t('authentication:newAccountCreated', {\n serverURL: config.serverURL,\n verificationURL,\n })}`\n\n const verify = collectionConfig.auth.verify as VerifyConfig\n\n // Allow config to override email content\n if (typeof verify.generateEmailHTML === 'function') {\n html = await verify.generateEmailHTML({\n req,\n token,\n user,\n })\n }\n\n let subject = req.t('authentication:verifyYourEmail')\n\n // Allow config to override email subject\n if (typeof verify.generateEmailSubject === 'function') {\n subject = await verify.generateEmailSubject({\n req,\n token,\n user,\n })\n }\n\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n sendEmail({\n from: `\"${emailOptions.fromName}\" <${emailOptions.fromAddress}>`,\n html,\n subject,\n to: user.email,\n })\n }\n}\n\nexport default sendVerificationEmail\n"],"names":["URL","sendVerificationEmail","args","collection","config","collectionConfig","disableEmail","emailOptions","req","sendEmail","token","user","protocol","url","serverURL","headers","get","verificationURL","routes","admin","slug","html","t","verify","auth","generateEmailHTML","subject","generateEmailSubject","from","fromName","fromAddress","to","email"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"AAAA,SAASA,GAAG,QAAQ,MAAK;AAmBzB,eAAeC,sBAAsBC,IAAU;IAC7C,2BAA2B;IAC3B,MAAM,EACJC,YAAY,EAAEC,QAAQC,gBAAgB,EAAE,EACxCD,MAAM,EACNE,YAAY,EACZC,YAAY,EACZC,GAAG,EACHC,SAAS,EACTC,KAAK,EACLC,IAAI,EACL,GAAGT;IAEJ,IAAI,CAACI,cAAc;QACjB,MAAMM,WAAW,IAAIZ,IAAIQ,IAAIK,GAAG,EAAED,QAAQ;QAC1C,MAAME,YACJV,OAAOU,SAAS,KAAK,QAAQV,OAAOU,SAAS,KAAK,KAC9CV,OAAOU,SAAS,GAChB,CAAC,EAAEF,SAAS,GAAG,EAAEJ,IAAIO,OAAO,CAACC,GAAG,CAAC,QAAQ,CAAC;QAEhD,MAAMC,kBAAkB,CAAC,EAAEH,UAAU,EAAEV,OAAOc,MAAM,CAACC,KAAK,CAAC,CAAC,EAAEd,iBAAiBe,IAAI,CAAC,QAAQ,EAAEV,MAAM,CAAC;QAErG,IAAIW,OAAO,CAAC,EAAEb,IAAIc,CAAC,CAAC,oCAAoC;YACtDR,WAAWV,OAAOU,SAAS;YAC3BG;QACF,GAAG,CAAC;QAEJ,MAAMM,SAASlB,iBAAiBmB,IAAI,CAACD,MAAM;QAE3C,yCAAyC;QACzC,IAAI,OAAOA,OAAOE,iBAAiB,KAAK,YAAY;YAClDJ,OAAO,MAAME,OAAOE,iBAAiB,CAAC;gBACpCjB;gBACAE;gBACAC;YACF;QACF;QAEA,IAAIe,UAAUlB,IAAIc,CAAC,CAAC;QAEpB,yCAAyC;QACzC,IAAI,OAAOC,OAAOI,oBAAoB,KAAK,YAAY;YACrDD,UAAU,MAAMH,OAAOI,oBAAoB,CAAC;gBAC1CnB;gBACAE;gBACAC;YACF;QACF;QAEA,mEAAmE;QACnEF,UAAU;YACRmB,MAAM,CAAC,CAAC,EAAErB,aAAasB,QAAQ,CAAC,GAAG,EAAEtB,aAAauB,WAAW,CAAC,CAAC,CAAC;YAChET;YACAK;YACAK,IAAIpB,KAAKqB,KAAK;QAChB;IACF;AACF;AAEA,eAAe/B,sBAAqB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/auth/strategies/apiKey.ts"],"sourcesContent":["import crypto from 'crypto'\n\nimport type { SanitizedCollectionConfig } from '../../collections/config/types.js'\nimport type { Where } from '../../types/index.js'\nimport type { AuthStrategyFunction, User } from '../index.js'\n\nexport const APIKeyAuthentication =\n (collectionConfig: SanitizedCollectionConfig): AuthStrategyFunction =>\n async ({ headers, payload }) => {\n const authHeader = headers.get('Authorization')\n\n if (authHeader?.startsWith(`${collectionConfig.slug} API-Key `)) {\n const apiKey = authHeader.replace(`${collectionConfig.slug} API-Key `, '')\n const apiKeyIndex = crypto.createHmac('sha1', payload.secret).update(apiKey).digest('hex')\n\n try {\n const where: Where = {}\n if (collectionConfig.auth?.verify) {\n where.and = [\n {\n apiKeyIndex: {\n equals: apiKeyIndex,\n },\n },\n {\n _verified: {\n not_equals: false,\n },\n },\n ]\n } else {\n where.apiKeyIndex = {\n equals: apiKeyIndex,\n }\n }\n\n const userQuery = await payload.find({\n collection: collectionConfig.slug,\n depth: collectionConfig.auth.depth,\n limit: 1,\n overrideAccess: true,\n pagination: false,\n where,\n })\n\n if (userQuery.docs && userQuery.docs.length > 0) {\n const user = userQuery.docs[0]\n user.collection = collectionConfig.slug\n user._strategy = 'api-key'\n\n return user as User\n }\n } catch (err) {\n return null\n }\n }\n\n return null\n }\n"],"names":["crypto","APIKeyAuthentication","collectionConfig","headers","payload","authHeader","get","startsWith","slug","apiKey","replace","apiKeyIndex","createHmac","secret","update","digest","where","auth","verify","and","equals","_verified","not_equals","userQuery","find","collection","depth","limit","overrideAccess","pagination","docs","length","user","_strategy","err"],"mappings":"AAAA,OAAOA,YAAY,SAAQ;AAM3B,OAAO,MAAMC,uBACX,CAACC,mBACD,OAAO,EAAEC,OAAO,EAAEC,OAAO,EAAE;QACzB,MAAMC,aAAaF,QAAQG,GAAG,CAAC;QAE/B,IAAID,YAAYE,WAAW,CAAC,EAAEL,iBAAiBM,IAAI,CAAC,SAAS,CAAC,GAAG;YAC/D,MAAMC,SAASJ,WAAWK,OAAO,CAAC,CAAC,EAAER,iBAAiBM,IAAI,CAAC,SAAS,CAAC,EAAE;YACvE,MAAMG,cAAcX,OAAOY,UAAU,CAAC,QAAQR,QAAQS,MAAM,EAAEC,MAAM,CAACL,QAAQM,MAAM,CAAC;YAEpF,IAAI;gBACF,MAAMC,QAAe,CAAC;gBACtB,IAAId,iBAAiBe,IAAI,EAAEC,QAAQ;oBACjCF,MAAMG,GAAG,GAAG;wBACV;4BACER,aAAa;gCACXS,QAAQT;4BACV;wBACF;wBACA;4BACEU,WAAW;gCACTC,YAAY;4BACd;wBACF;qBACD;gBACH,OAAO;oBACLN,MAAML,WAAW,GAAG;wBAClBS,QAAQT;oBACV;gBACF;gBAEA,MAAMY,YAAY,MAAMnB,QAAQoB,IAAI,CAAC;oBACnCC,YAAYvB,iBAAiBM,IAAI;oBACjCkB,OAAOxB,iBAAiBe,IAAI,CAACS,KAAK;oBAClCC,OAAO;oBACPC,gBAAgB;oBAChBC,YAAY;oBACZb;gBACF;gBAEA,IAAIO,UAAUO,IAAI,IAAIP,UAAUO,IAAI,CAACC,MAAM,GAAG,GAAG;oBAC/C,MAAMC,OAAOT,UAAUO,IAAI,CAAC,EAAE;oBAC9BE,KAAKP,UAAU,GAAGvB,iBAAiBM,IAAI;oBACvCwB,KAAKC,SAAS,GAAG;oBAEjB,OAAOD;gBACT;YACF,EAAE,OAAOE,KAAK;gBACZ,OAAO;YACT;QACF;QAEA,OAAO;IACT,EAAC"}
|
|
1
|
+
{"version":3,"sources":["../../../src/auth/strategies/apiKey.ts"],"sourcesContent":["import crypto from 'crypto'\n\nimport type { SanitizedCollectionConfig } from '../../collections/config/types.js'\nimport type { Where } from '../../types/index.js'\nimport type { AuthStrategyFunction, User } from '../index.js'\n\nexport const APIKeyAuthentication =\n (collectionConfig: SanitizedCollectionConfig): AuthStrategyFunction =>\n async ({ headers, payload }) => {\n const authHeader = headers.get('Authorization')\n\n if (authHeader?.startsWith(`${collectionConfig.slug} API-Key `)) {\n const apiKey = authHeader.replace(`${collectionConfig.slug} API-Key `, '')\n const apiKeyIndex = crypto.createHmac('sha1', payload.secret).update(apiKey).digest('hex')\n\n try {\n const where: Where = {}\n if (collectionConfig.auth?.verify) {\n where.and = [\n {\n apiKeyIndex: {\n equals: apiKeyIndex,\n },\n },\n {\n _verified: {\n not_equals: false,\n },\n },\n ]\n } else {\n where.apiKeyIndex = {\n equals: apiKeyIndex,\n }\n }\n\n const userQuery = await payload.find({\n collection: collectionConfig.slug,\n depth: collectionConfig.auth.depth,\n limit: 1,\n overrideAccess: true,\n pagination: false,\n where,\n })\n\n if (userQuery.docs && userQuery.docs.length > 0) {\n const user = userQuery.docs[0]\n user.collection = collectionConfig.slug\n user._strategy = 'api-key'\n\n return user as User\n }\n } catch (err) {\n return null\n }\n }\n\n return null\n }\n"],"names":["crypto","APIKeyAuthentication","collectionConfig","headers","payload","authHeader","get","startsWith","slug","apiKey","replace","apiKeyIndex","createHmac","secret","update","digest","where","auth","verify","and","equals","_verified","not_equals","userQuery","find","collection","depth","limit","overrideAccess","pagination","docs","length","user","_strategy","err"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"AAAA,OAAOA,YAAY,SAAQ;AAM3B,OAAO,MAAMC,uBACX,CAACC,mBACD,OAAO,EAAEC,OAAO,EAAEC,OAAO,EAAE;QACzB,MAAMC,aAAaF,QAAQG,GAAG,CAAC;QAE/B,IAAID,YAAYE,WAAW,CAAC,EAAEL,iBAAiBM,IAAI,CAAC,SAAS,CAAC,GAAG;YAC/D,MAAMC,SAASJ,WAAWK,OAAO,CAAC,CAAC,EAAER,iBAAiBM,IAAI,CAAC,SAAS,CAAC,EAAE;YACvE,MAAMG,cAAcX,OAAOY,UAAU,CAAC,QAAQR,QAAQS,MAAM,EAAEC,MAAM,CAACL,QAAQM,MAAM,CAAC;YAEpF,IAAI;gBACF,MAAMC,QAAe,CAAC;gBACtB,IAAId,iBAAiBe,IAAI,EAAEC,QAAQ;oBACjCF,MAAMG,GAAG,GAAG;wBACV;4BACER,aAAa;gCACXS,QAAQT;4BACV;wBACF;wBACA;4BACEU,WAAW;gCACTC,YAAY;4BACd;wBACF;qBACD;gBACH,OAAO;oBACLN,MAAML,WAAW,GAAG;wBAClBS,QAAQT;oBACV;gBACF;gBAEA,MAAMY,YAAY,MAAMnB,QAAQoB,IAAI,CAAC;oBACnCC,YAAYvB,iBAAiBM,IAAI;oBACjCkB,OAAOxB,iBAAiBe,IAAI,CAACS,KAAK;oBAClCC,OAAO;oBACPC,gBAAgB;oBAChBC,YAAY;oBACZb;gBACF;gBAEA,IAAIO,UAAUO,IAAI,IAAIP,UAAUO,IAAI,CAACC,MAAM,GAAG,GAAG;oBAC/C,MAAMC,OAAOT,UAAUO,IAAI,CAAC,EAAE;oBAC9BE,KAAKP,UAAU,GAAGvB,iBAAiBM,IAAI;oBACvCwB,KAAKC,SAAS,GAAG;oBAEjB,OAAOD;gBACT;YACF,EAAE,OAAOE,KAAK;gBACZ,OAAO;YACT;QACF;QAEA,OAAO;IACT,EAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/auth/strategies/jwt.ts"],"sourcesContent":["import jwt from 'jsonwebtoken'\n\nimport type { AuthStrategyFunction, User } from '../index.js'\n\nimport { extractJWT } from '../extractJWT.js'\n\ntype JWTToken = {\n collection: string\n id: string\n}\n\nexport const JWTAuthentication: AuthStrategyFunction = async ({\n headers,\n isGraphQL = false,\n payload,\n}) => {\n try {\n const token = extractJWT({ headers, payload })\n const decodedPayload = jwt.verify(token, payload.secret) as jwt.JwtPayload & JWTToken\n\n const collection = payload.collections[decodedPayload.collection]\n\n const user = await payload.findByID({\n id: decodedPayload.id,\n collection: decodedPayload.collection,\n depth: isGraphQL ? 0 : collection.config.auth.depth,\n })\n\n if (user && (!collection.config.auth.verify || user._verified)) {\n user.collection = collection.config.slug\n user._strategy = 'local-jwt'\n return user as User\n } else {\n return null\n }\n } catch (error) {\n return null\n }\n}\n"],"names":["jwt","extractJWT","JWTAuthentication","headers","isGraphQL","payload","token","decodedPayload","verify","secret","collection","collections","user","findByID","id","depth","config","auth","_verified","slug","_strategy","error"],"mappings":"AAAA,OAAOA,SAAS,eAAc;AAI9B,SAASC,UAAU,QAAQ,mBAAkB;AAO7C,OAAO,MAAMC,oBAA0C,OAAO,EAC5DC,OAAO,EACPC,YAAY,KAAK,EACjBC,OAAO,EACR;IACC,IAAI;QACF,MAAMC,QAAQL,WAAW;YAAEE;YAASE;QAAQ;QAC5C,MAAME,iBAAiBP,IAAIQ,MAAM,CAACF,OAAOD,QAAQI,MAAM;QAEvD,MAAMC,aAAaL,QAAQM,WAAW,CAACJ,eAAeG,UAAU,CAAC;QAEjE,MAAME,OAAO,MAAMP,QAAQQ,QAAQ,CAAC;YAClCC,IAAIP,eAAeO,EAAE;YACrBJ,YAAYH,eAAeG,UAAU;YACrCK,OAAOX,YAAY,IAAIM,WAAWM,MAAM,CAACC,IAAI,CAACF,KAAK;QACrD;QAEA,IAAIH,QAAS,CAAA,CAACF,WAAWM,MAAM,CAACC,IAAI,CAACT,MAAM,IAAII,KAAKM,SAAS,AAAD,GAAI;YAC9DN,KAAKF,UAAU,GAAGA,WAAWM,MAAM,CAACG,IAAI;YACxCP,KAAKQ,SAAS,GAAG;YACjB,OAAOR;QACT,OAAO;YACL,OAAO;QACT;IACF,EAAE,OAAOS,OAAO;QACd,OAAO;IACT;AACF,EAAC"}
|
|
1
|
+
{"version":3,"sources":["../../../src/auth/strategies/jwt.ts"],"sourcesContent":["import jwt from 'jsonwebtoken'\n\nimport type { AuthStrategyFunction, User } from '../index.js'\n\nimport { extractJWT } from '../extractJWT.js'\n\ntype JWTToken = {\n collection: string\n id: string\n}\n\nexport const JWTAuthentication: AuthStrategyFunction = async ({\n headers,\n isGraphQL = false,\n payload,\n}) => {\n try {\n const token = extractJWT({ headers, payload })\n const decodedPayload = jwt.verify(token, payload.secret) as jwt.JwtPayload & JWTToken\n\n const collection = payload.collections[decodedPayload.collection]\n\n const user = await payload.findByID({\n id: decodedPayload.id,\n collection: decodedPayload.collection,\n depth: isGraphQL ? 0 : collection.config.auth.depth,\n })\n\n if (user && (!collection.config.auth.verify || user._verified)) {\n user.collection = collection.config.slug\n user._strategy = 'local-jwt'\n return user as User\n } else {\n return null\n }\n } catch (error) {\n return null\n }\n}\n"],"names":["jwt","extractJWT","JWTAuthentication","headers","isGraphQL","payload","token","decodedPayload","verify","secret","collection","collections","user","findByID","id","depth","config","auth","_verified","slug","_strategy","error"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"AAAA,OAAOA,SAAS,eAAc;AAI9B,SAASC,UAAU,QAAQ,mBAAkB;AAO7C,OAAO,MAAMC,oBAA0C,OAAO,EAC5DC,OAAO,EACPC,YAAY,KAAK,EACjBC,OAAO,EACR;IACC,IAAI;QACF,MAAMC,QAAQL,WAAW;YAAEE;YAASE;QAAQ;QAC5C,MAAME,iBAAiBP,IAAIQ,MAAM,CAACF,OAAOD,QAAQI,MAAM;QAEvD,MAAMC,aAAaL,QAAQM,WAAW,CAACJ,eAAeG,UAAU,CAAC;QAEjE,MAAME,OAAO,MAAMP,QAAQQ,QAAQ,CAAC;YAClCC,IAAIP,eAAeO,EAAE;YACrBJ,YAAYH,eAAeG,UAAU;YACrCK,OAAOX,YAAY,IAAIM,WAAWM,MAAM,CAACC,IAAI,CAACF,KAAK;QACrD;QAEA,IAAIH,QAAS,CAAA,CAACF,WAAWM,MAAM,CAACC,IAAI,CAACT,MAAM,IAAII,KAAKM,SAAS,AAAD,GAAI;YAC9DN,KAAKF,UAAU,GAAGA,WAAWM,MAAM,CAACG,IAAI;YACxCP,KAAKQ,SAAS,GAAG;YACjB,OAAOR;QACT,OAAO;YACL,OAAO;QACT;IACF,EAAE,OAAOS,OAAO;QACd,OAAO;IACT;AACF,EAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/auth/strategies/local/authenticate.ts"],"sourcesContent":["import crypto from 'crypto'\nimport scmp from 'scmp'\n\nimport type { TypeWithID } from '../../../collections/config/types.js'\n\ntype Doc = TypeWithID & Record<string, unknown>\n\ntype Args = {\n doc: Doc\n password: string\n}\n\nexport const authenticateLocalStrategy = async ({ doc, password }: Args): Promise<Doc | null> => {\n try {\n const { hash, salt } = doc\n\n if (typeof salt === 'string' && typeof hash === 'string') {\n const res = await new Promise<Doc | null>((resolve, reject) => {\n crypto.pbkdf2(password, salt, 25000, 512, 'sha256', (e, hashBuffer) => {\n if (e) reject(null)\n\n if (scmp(hashBuffer, Buffer.from(hash, 'hex'))) {\n resolve(doc)\n } else {\n reject(null)\n }\n })\n })\n\n return res\n }\n\n return null\n } catch (err) {\n return null\n }\n}\n"],"names":["crypto","scmp","authenticateLocalStrategy","doc","password","hash","salt","res","Promise","resolve","reject","pbkdf2","e","hashBuffer","Buffer","from","err"],"mappings":"AAAA,OAAOA,YAAY,SAAQ;AAC3B,OAAOC,UAAU,OAAM;AAWvB,OAAO,MAAMC,4BAA4B,OAAO,EAAEC,GAAG,EAAEC,QAAQ,EAAQ;IACrE,IAAI;QACF,MAAM,EAAEC,IAAI,EAAEC,IAAI,EAAE,GAAGH;QAEvB,IAAI,OAAOG,SAAS,YAAY,OAAOD,SAAS,UAAU;YACxD,MAAME,MAAM,MAAM,IAAIC,QAAoB,CAACC,SAASC;gBAClDV,OAAOW,MAAM,CAACP,UAAUE,MAAM,OAAO,KAAK,UAAU,CAACM,GAAGC;oBACtD,IAAID,GAAGF,OAAO;oBAEd,IAAIT,KAAKY,YAAYC,OAAOC,IAAI,CAACV,MAAM,SAAS;wBAC9CI,QAAQN;oBACV,OAAO;wBACLO,OAAO;oBACT;gBACF;YACF;YAEA,OAAOH;QACT;QAEA,OAAO;IACT,EAAE,OAAOS,KAAK;QACZ,OAAO;IACT;AACF,EAAC"}
|
|
1
|
+
{"version":3,"sources":["../../../../src/auth/strategies/local/authenticate.ts"],"sourcesContent":["import crypto from 'crypto'\nimport scmp from 'scmp'\n\nimport type { TypeWithID } from '../../../collections/config/types.js'\n\ntype Doc = TypeWithID & Record<string, unknown>\n\ntype Args = {\n doc: Doc\n password: string\n}\n\nexport const authenticateLocalStrategy = async ({ doc, password }: Args): Promise<Doc | null> => {\n try {\n const { hash, salt } = doc\n\n if (typeof salt === 'string' && typeof hash === 'string') {\n const res = await new Promise<Doc | null>((resolve, reject) => {\n crypto.pbkdf2(password, salt, 25000, 512, 'sha256', (e, hashBuffer) => {\n if (e) reject(null)\n\n if (scmp(hashBuffer, Buffer.from(hash, 'hex'))) {\n resolve(doc)\n } else {\n reject(null)\n }\n })\n })\n\n return res\n }\n\n return null\n } catch (err) {\n return null\n }\n}\n"],"names":["crypto","scmp","authenticateLocalStrategy","doc","password","hash","salt","res","Promise","resolve","reject","pbkdf2","e","hashBuffer","Buffer","from","err"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;","mappings":"AAAA,OAAOA,YAAY,SAAQ;AAC3B,OAAOC,UAAU,OAAM;AAWvB,OAAO,MAAMC,4BAA4B,OAAO,EAAEC,GAAG,EAAEC,QAAQ,EAAQ;IACrE,IAAI;QACF,MAAM,EAAEC,IAAI,EAAEC,IAAI,EAAE,GAAGH;QAEvB,IAAI,OAAOG,SAAS,YAAY,OAAOD,SAAS,UAAU;YACxD,MAAME,MAAM,MAAM,IAAIC,QAAoB,CAACC,SAASC;gBAClDV,OAAOW,MAAM,CAACP,UAAUE,MAAM,OAAO,KAAK,UAAU,CAACM,GAAGC;oBACtD,IAAID,GAAGF,OAAO;oBAEd,IAAIT,KAAKY,YAAYC,OAAOC,IAAI,CAACV,MAAM,SAAS;wBAC9CI,QAAQN;oBACV,OAAO;wBACLO,OAAO;oBACT;gBACF;YACF;YAEA,OAAOH;QACT;QAEA,OAAO;IACT,EAAE,OAAOS,KAAK;QACZ,OAAO;IACT;AACF,EAAC"}
|