auth.js 793 B

123456789101112131415161718192021222324252627282930
  1. const jwt = require('jsonwebtoken');
  2. const User = require('../models/User');
  3. const auth = async (req, res, next) => {
  4. try {
  5. const token = req.header('Authorization').replace('Bearer ', '');
  6. const decoded = jwt.verify(token, process.env.JWT_SECRET);
  7. const user = await User.findOne({ _id: decoded.id });
  8. if (!user) {
  9. throw new Error();
  10. }
  11. req.token = token;
  12. req.user = user;
  13. next();
  14. } catch (error) {
  15. res.status(401).json({ message: '请先登录' });
  16. }
  17. };
  18. const admin = (req, res, next) => {
  19. if (req.user && req.user.role === 'admin') {
  20. next();
  21. } else {
  22. res.status(401).json({ message: '未授权,需要管理员权限' });
  23. }
  24. };
  25. module.exports = { auth, admin };