setup-mern
Version:
A CLI tool to generate a MERN backend boilerplate in seconds!
28 lines (23 loc) • 810 B
JavaScript
const jwt = require('jsonwebtoken');
const User = require('../models/User');
const { JWT_SECRET } = require('../config/envConfig');
exports.protect = async (req, res, next) => {
try {
let token;
if (req.headers.authorization && req.headers.authorization.startsWith('Bearer')) {
token = req.headers.authorization.split(' ')[1];
}
if (!token) {
throw new Error('You are not logged in! Please log in to get access.');
}
const decoded = jwt.verify(token, JWT_SECRET);
const user = await User.findById(decoded.id);
if (!user) {
throw new Error('The user belonging to this token no longer exists.');
}
req.user = user;
next();
} catch (err) {
res.status(401).json({ status: 'error', message: err.message });
}
};