From 4bbd420ccff3b640612b451244d3d3422e3b470e Mon Sep 17 00:00:00 2001 From: piotrruss Date: Mon, 21 Aug 2023 23:41:26 +0200 Subject: user verification --- routes/authRoutes.js | 46 +++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 45 insertions(+), 1 deletion(-) (limited to 'routes/authRoutes.js') diff --git a/routes/authRoutes.js b/routes/authRoutes.js index 110e7f4..ad612ce 100644 --- a/routes/authRoutes.js +++ b/routes/authRoutes.js @@ -1,5 +1,50 @@ const router = require('express').Router() const User = require('../model/User') +const createJwt = require('../helpers/createJwt') +const sendMail = require('../helpers/sendMail') + +// Verify (send verification email) +router.get('/verify', async (req, res) => { + try { + const { email } = req.user + + if (!email) throw new Error() + + const { verify } = await User.findOne({ email }) + + sendMail({ + to: email, + subject: 'Verification Code', + text: `Last step missing - verify your account.\nYour verification code: ${verify}`, + html: `

Last step missing - verify your account.


Your verification code: ${verify}

`, + }) + + res.status(204).send() + } catch (err) { + res.status(401).send({ error: 'Could not verify user' }) + } +}) + +// Verify +router.post('/verify', async (req, res) => { + try { + const { email } = req.user + const code = req.body.code + + if (!email || !code) throw new Error() + + const user = await User.verify({ email, code }) + + if (!user) throw new Error() + + const jwtToken = createJwt(user) + + res.status(200).send({ jwtToken }) + } catch (err) { + res.status(401).send({ error: 'Could not verify user' }) + } +}) + // Logout (pass sessionId or will logout one from jwt) router.post('/logout', async (req, res) => { @@ -12,7 +57,6 @@ router.post('/logout', async (req, res) => { res.status(204).send() } catch (err) { - console.log(err) res.status(401).send({ error: 'Could not logout' }) } }) -- cgit v1.2.3