import jwt from 'jsonwebtoken'; import config from '../../config/default.json' assert { type: 'json' }; const verifyTokenAndDecoded = (req, res, next) => { const authData = req.headers.authorization; if(!authData) { return res.status(403).json({ message: 'No token provided!' }) } const token = authData.split(' ')[1]; jwt.verify(token, config.app.key, (err, decoded) => { if(err) { return res.status(401).json({ message: "Unauthorized!" }) } req.userId = decoded.id; req.role = decoded.role; next() }) } const verifyToken = (req, res, next) => { verifyTokenAndDecoded(req, res, next) } const isAdmin = (req, res, next) => { verifyTokenAndDecoded(req, res, (err) => { if (err) return next(err) if (req.role == 1) { next() } else { return res.status(403).json({ message: "Require admin role!" }) } }) } export { verifyToken, isAdmin}