summaryrefslogtreecommitdiffstats
path: root/routes
diff options
context:
space:
mode:
Diffstat (limited to 'routes')
-rw-r--r--routes/authRoutes.js46
1 files changed, 45 insertions, 1 deletions
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: `<h2>Last step missing - verify your account.</h2><br/><h3>Your verification code: <b>${verify}</b></h3>`,
+ })
+
+ 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' })
}
})