diff options
author | 2020-11-18 23:15:38 +0100 | |
---|---|---|
committer | 2020-11-18 23:15:38 +0100 | |
commit | 1870f3fdf43707a15fda0f609a021f516f45eb63 (patch) | |
tree | fbaf527a47cd89a171df18da4b41e8ce34668555 /server/middleware | |
parent | e06ec920f7a5d784e674c4c4b4e6d1da3dc7391d (diff) | |
download | website_creator-1870f3fdf43707a15fda0f609a021f516f45eb63.tar.gz website_creator-1870f3fdf43707a15fda0f609a021f516f45eb63.tar.bz2 website_creator-1870f3fdf43707a15fda0f609a021f516f45eb63.zip |
finish auth routes, create cookie token, fix folder structure, add context to FE
Diffstat (limited to 'server/middleware')
-rw-r--r-- | server/middleware/auth.js | 9 | ||||
-rw-r--r-- | server/middleware/redirectIfLoggedIn.js | 25 |
2 files changed, 32 insertions, 2 deletions
diff --git a/server/middleware/auth.js b/server/middleware/auth.js index 091d3a7..42d93a4 100644 --- a/server/middleware/auth.js +++ b/server/middleware/auth.js @@ -3,7 +3,12 @@ const User = require('../models/User'); const auth = async (req, res, next) => { try { - const token = req.header('Authorization').replace('Bearer ', ''); + const token = req.cookies.token || ''; + + if (!token) { + throw new Error(); + } + const decoded = jwt.verify(token, 'replaceThisWithSecretString'); const user = await User.findOne({ _id: decoded._id, 'tokens.token': token }); @@ -15,7 +20,7 @@ const auth = async (req, res, next) => { req.user = user; next(); } catch (err) { - res.status(401).send({ error: 'Not authenticated.' }); + res.redirect('/login'); } }; diff --git a/server/middleware/redirectIfLoggedIn.js b/server/middleware/redirectIfLoggedIn.js new file mode 100644 index 0000000..62a413c --- /dev/null +++ b/server/middleware/redirectIfLoggedIn.js @@ -0,0 +1,25 @@ +const jwt = require('jsonwebtoken'); +const User = require('../models/User'); + +const redirectIfLoggedIn = async (req, res, next) => { + try { + const token = req.cookies.token || ''; + + if (!token) { + throw new Error(); + } + + const decoded = jwt.verify(token, 'replaceThisWithSecretString'); + const user = await User.findOne({ _id: decoded._id, 'tokens.token': token }); + + if (!user) { + throw new Error(); + } + + res.redirect('/admin'); + } catch (err) { + next(); + } +}; + +module.exports = redirectIfLoggedIn; |