refactoring to use jwt with cookies
This commit is contained in:
@@ -30,6 +30,8 @@ async function authRoute(app, passport) {
|
||||
response = response.data;
|
||||
}
|
||||
|
||||
console.log(response);
|
||||
|
||||
req.user = response;
|
||||
req.session.user = response;
|
||||
|
||||
@@ -43,12 +45,14 @@ async function authRoute(app, passport) {
|
||||
}
|
||||
|
||||
const token = jwt.sign({ user: safeUserData }, secret);
|
||||
req.session.token = token;
|
||||
|
||||
req.session.save((err) => {
|
||||
return next(err);
|
||||
})
|
||||
|
||||
console.log(req.session);
|
||||
|
||||
res.cookie('token', token, { httpOnly: true });
|
||||
res.json({ token });
|
||||
}
|
||||
} catch (error) {
|
||||
@@ -60,7 +64,8 @@ async function authRoute(app, passport) {
|
||||
try {
|
||||
req.session = null;
|
||||
req.user = null;
|
||||
res.status(200).clearCookie('connect.sid');
|
||||
res.clearCookie('connect.sid').clearCookie('token');
|
||||
res.status(204).send("logout successful");
|
||||
res.end();
|
||||
} catch (error) {
|
||||
console.log(error);
|
||||
|
||||
25
server/routes/base.js
Normal file
25
server/routes/base.js
Normal file
@@ -0,0 +1,25 @@
|
||||
const router = require('express').Router();
|
||||
require('dotenv').config();
|
||||
|
||||
const secret = process.env.SECRET;
|
||||
|
||||
async function baseRoute(app, passport) {
|
||||
router.get('/', async (req, res, next) => {
|
||||
try {
|
||||
console.log(req.session);
|
||||
const user = undefined;
|
||||
|
||||
if (!user) {
|
||||
res.status(403).send("Not authorized");
|
||||
} else {
|
||||
res.status(200).send({ token: req.token, user: req.user });
|
||||
}
|
||||
} catch (error) {
|
||||
console.log(error);
|
||||
}
|
||||
})
|
||||
|
||||
return router;
|
||||
}
|
||||
|
||||
module.exports = baseRoute;
|
||||
@@ -1,22 +1,32 @@
|
||||
const jwt = require('jsonwebtoken');
|
||||
const authRoute = require("./auth");
|
||||
const itemRoute = require("./item");
|
||||
const jwtRoute = require('./jwt');
|
||||
const baseRoute = require('./base');
|
||||
|
||||
async function routesLoader(app, passport) {
|
||||
app.use('/app', (req, res, next) => {
|
||||
const token = req.headers['authorization'].split(" ")[1];
|
||||
jwt.verify(token, process.env.SECRET, (err, data) => {
|
||||
if (err) {
|
||||
res.status(403).send(err);
|
||||
} else {
|
||||
req.user = data;
|
||||
next();
|
||||
}
|
||||
})
|
||||
const token = req.headers['authorization']?.split(" ")[1];
|
||||
|
||||
if (!token) {
|
||||
res.status(403).send("Unauthorized");
|
||||
} else {
|
||||
jwt.verify(token, process.env.SECRET, (err, data) => {
|
||||
if (err) {
|
||||
res.status(403).send(err);
|
||||
} else {
|
||||
req.user = data;
|
||||
next();
|
||||
}
|
||||
})
|
||||
}
|
||||
})
|
||||
|
||||
app.use('/', await baseRoute(app, passport));
|
||||
|
||||
app.use('/auth', await authRoute(app, passport));
|
||||
app.use('/app', await itemRoute(app, passport));
|
||||
app.use('/jwt', await jwtRoute(app, passport));
|
||||
}
|
||||
|
||||
module.exports = routesLoader;
|
||||
@@ -1,10 +1,10 @@
|
||||
// const jwt = require('jsonwebtoken');
|
||||
const jwt = require('jsonwebtoken');
|
||||
require('dotenv').config();
|
||||
const router = require('express').Router();
|
||||
const ItemController = require('../controllers/ItemController');
|
||||
|
||||
async function itemRoute(app, passport) {
|
||||
/* router.use('/', (req, res, next) => {
|
||||
router.use('/', (req, res, next) => {
|
||||
const token = req.headers['authorization'].split(" ")[1];
|
||||
jwt.verify(token, process.env.SECRET, (err, data) => {
|
||||
if (err) {
|
||||
@@ -14,7 +14,7 @@ async function itemRoute(app, passport) {
|
||||
next();
|
||||
}
|
||||
})
|
||||
}) */
|
||||
})
|
||||
|
||||
router.get('/item', async (req, res) => {
|
||||
const response = await ItemController.getAll();
|
||||
|
||||
22
server/routes/jwt.js
Normal file
22
server/routes/jwt.js
Normal file
@@ -0,0 +1,22 @@
|
||||
const router = require('express').Router();
|
||||
const jwt = require('jsonwebtoken');
|
||||
require('dotenv').config();
|
||||
|
||||
const secret = process.env.SECRET;
|
||||
|
||||
async function jwtRoute(app, passport) {
|
||||
router.get('/', (req, res) => {
|
||||
const user = req.user;
|
||||
if (!user) {
|
||||
res.status(403).send("Unauthorized");
|
||||
} else {
|
||||
const token = jwt.sign({ user: req.user }, secret);
|
||||
res.cookie('token', token, { httpOnly: true });
|
||||
res.json({ token });
|
||||
}
|
||||
});
|
||||
|
||||
return router;
|
||||
}
|
||||
|
||||
module.exports = jwtRoute;
|
||||
Reference in New Issue
Block a user