UNPKG

payload

Version:

Node, React, Headless CMS and Application Framework built on Next.js

50 lines (49 loc) 1.68 kB
import { status as httpStatus } from 'http-status'; import { APIError, Forbidden } from '../../errors/index.js'; import { commitTransaction } from '../../utilities/commitTransaction.js'; import { initTransaction } from '../../utilities/initTransaction.js'; import { killTransaction } from '../../utilities/killTransaction.js'; export const verifyEmailOperation = async (args)=>{ const { collection, req, token } = args; if (collection.config.auth.disableLocalStrategy) { throw new Forbidden(req.t); } if (!Object.prototype.hasOwnProperty.call(args, 'token')) { throw new APIError('Missing required data.', httpStatus.BAD_REQUEST); } try { const shouldCommit = await initTransaction(req); const user = await req.payload.db.findOne({ collection: collection.config.slug, req, where: { _verificationToken: { equals: token } } }); if (!user) { throw new APIError('Verification token is invalid.', httpStatus.FORBIDDEN); } await req.payload.db.updateOne({ id: user.id, collection: collection.config.slug, data: { ...user, _verificationToken: null, _verified: true }, req, returning: false }); if (shouldCommit) { await commitTransaction(req); } return true; } catch (error) { await killTransaction(req); throw error; } }; export default verifyEmailOperation; //# sourceMappingURL=verifyEmail.js.map