summaryrefslogtreecommitdiffstats
path: root/routes/auth.js
diff options
context:
space:
mode:
Diffstat (limited to 'routes/auth.js')
-rw-r--r--routes/auth.js119
1 files changed, 0 insertions, 119 deletions
diff --git a/routes/auth.js b/routes/auth.js
deleted file mode 100644
index 389c01b..0000000
--- a/routes/auth.js
+++ /dev/null
@@ -1,119 +0,0 @@
-const router = require('express').Router()
-const { randomBytes } = require('crypto')
-const jwt = require('jsonwebtoken')
-const User = require('../model/User')
-
-const cookieParams = {
- maxAge: (1000 * parseInt(process.env.TOKEN_EXPIRE_IN)),
- secure: false,
- httpOnly: true,
-}
-
-const generateJwtToken = (user) => jwt.sign({
- email: user.email,
- verified: !!user.verify,
- role: user.role,
- },
- process.env.JWT_SECRET,
- {
- expiresIn: parseInt(process.env.TOKEN_EXPIRE_IN),
- issuer: 'pruss.it',
- algorithm: 'HS256',
- }
-)
-
-// Alive
-router.get("/", function (_, res) {
- res.send("Service is up.")
-})
-
-// Register
-router.post('/register', async (req, res) => {
- const refresh = randomBytes(32).toString('hex')
- const user = new User({
- email: req.body.email,
- password: req.body.password,
- refresh,
- })
-
- try {
- await user.save()
- res.status(201).send(refresh)
- } catch(err) {
- if (err._message) {
- res.status(422).send(err._message)
- } else if (err.code && err.code === 11000) {
- res.status(409).send('User with this email already exist')
- } else {
- res.status(400).send('Could not save the user')
- }
- }
-})
-
-// Login
-router.post('/login', async (req, res) => {
- try {
- const user = await User.findByCredentials(req.body.email, req.body.password)
-
- if (!user) {
- throw new Error()
- }
-
- const refreshToken = await User.newRefreshToken(user)
-
- if (!refreshToken) {
- throw new Error()
- }
-
- const jwtToken = generateJwtToken(user)
-
- res
- .cookie('token', jwtToken, cookieParams)
- .status(204)
- .send(refreshToken)
- } catch (err) {
- res.status(401).send('Could not login')
- }
-})
-
-// Logout
-router.post('/logout', async (_, res) => {
- try {
- // add session check
-
- res
- .clearCookie('token')
- .status(204)
- .send()
- } catch (err) {
- res.status(401).send('Could not logout')
- }
-})
-
-// Refresh token
-router.post('/refresh', async (req, res) => {
- try {
- const user = await User.checkRefreshToken(req.body.email, req.body.refresh)
-
- if (!user) {
- throw new Error()
- }
-
- const newRefreshToken = await User.newRefreshToken(user)
-
- if (!newRefreshToken) {
- throw new Error()
- }
-
- const jwtToken = generateJwtToken(user)
-
- res
- .cookie('token', jwtToken, cookieParams)
- .status(201)
- .send(newRefreshToken)
- } catch (err) {
- res.status(401).send('User logged out')
- }
-})
-
-module.exports = router