Files
SkyArtShop/backend/middleware/auth.js

50 lines
1.1 KiB
JavaScript
Raw Normal View History

2025-12-19 20:44:46 -06:00
const logger = require("../config/logger");
const { sendUnauthorized, sendForbidden } = require("../utils/responseHelpers");
const isAuthenticated = (req) => {
return req.session?.user?.id;
};
const requireAuth = (req, res, next) => {
2025-12-19 20:44:46 -06:00
if (isAuthenticated(req)) {
return next();
}
2025-12-19 20:44:46 -06:00
logger.warn("Unauthorized access attempt", {
path: req.path,
ip: req.ip,
});
sendUnauthorized(res);
};
const requireRole = (allowedRoles) => {
const roles = Array.isArray(allowedRoles) ? allowedRoles : [allowedRoles];
return (req, res, next) => {
2025-12-19 20:44:46 -06:00
if (!isAuthenticated(req)) {
logger.warn("Unauthorized access attempt", {
path: req.path,
ip: req.ip,
});
return sendUnauthorized(res);
}
const userRole = req.session.user.role_id || "role-admin";
if (roles.includes(userRole)) {
return next();
}
2025-12-19 20:44:46 -06:00
logger.warn("Forbidden access attempt", {
path: req.path,
ip: req.ip,
userRole,
requiredRoles: roles,
});
2025-12-19 20:44:46 -06:00
sendForbidden(res, "Access denied. Insufficient permissions.");
};
};
module.exports = { requireAuth, requireRole };