litebb/middlewares/auth.middleware.js

1const { User } = require("../models"); 2 3const isSessionActive = (req, res, next) => { 4 if (req.session.user) { 5 next(); 6 } else { 7 let redirectUrl = "/login"; 8 redirectUrl += `?next=${encodeURIComponent(req.path)}`; 9 return res.redirect(redirectUrl); 10 } 11}; 12 13const addUserMeta = async (req, res, next) => { 14 if (req.session && req.session.user) { 15 const user_meta = await User.findOne({ 16 where: { 17 id: req.session.user.id, 18 }, 19 attributes: ["role", "username", "email", "id", "avatar"], 20 }); 21 22 if (user_meta) { 23 req.session.user.meta = user_meta; 24 } 25 } 26 27 next(); 28}; 29 30const isAdmin = (req, res, next) => { 31 if (req.session.user.meta && req.session.user.meta.role === "admin") { 32 next(); 33 } else { 34 return res.redirect("/"); 35 } 36}; 37 38module.exports = { 39 isSessionActive, 40 addUserMeta, 41 isAdmin, 42};