UNPKG

@mvp-rockets/namma-generator

Version:

A generator to generate mvp-rockets projects

39 lines (32 loc) 1.72 kB
const Route = require('route'); const { respond, logInfo, ApiError, uuid } = require('lib'); const db = require('db/repository.js'); const composeResult = require('@mvp-rockets/namma-lib/src/lib/utilities/compose-result'); const CreateOrFindUserQuery = require('resources/users/queries/create-or-find-user-query'); const R = require('ramda'); const Result = require('folktale/result'); const config = require('config/config'); async function post(req) { const { email, nextAuthSecretPass, mlVerificationToken, mlVerificationTokenExp } = req.body; logInfo('Request to create magic link verification token for user api ', { email, nextAuthSecretPass, mlVerificationToken, mlVerificationTokenExp }); const response = await composeResult( () => Result.Ok('ok'), async ([user, isNew]) => R.ifElse( () => isNew, () => Result.Ok([]), () => db.perform(user.update({ mlVerificationToken, mlVerificationTokenExp })) )(), () => db.executeWithValue(new CreateOrFindUserQuery({ where: { email: email.toLowerCase() }, defaults: { id: uuid.v4(), email: email.toLowerCase(), mlVerificationToken, mlVerificationTokenExp } })), async () => R.ifElse( () => nextAuthSecretPass == config.nextAuthSecretPass, () => Result.Ok([]), () => Result.Error(new ApiError('api error', 'Not Authorized', 400)) )(), )(); return respond(response, 'Successfully created magic link verification token for user!', 'Failed to create magic link verification token for user!'); } Route.withOutSecurity().noAuth().post('/ml-verification-token', post).bind(); module.exports.post = post;