Updated A LOT

This commit is contained in:
2026-06-05 04:15:24 -05:00
parent 8335f1af1b
commit 4072695432
92 changed files with 16139 additions and 570 deletions

View File

@@ -41,9 +41,24 @@ function requireRole(...roles) {
};
}
// Capability-based guard: the user's role must grant at least one of the listed capabilities.
// Required lazily to avoid a load-time cycle (roles -> db -> ...).
function requireCapability(...capabilities) {
return (req, res, next) => {
const { capabilitiesForRole } = require('../services/roles');
const { capabilitySetIncludes } = require('../services/accessControl');
const granted = capabilitiesForRole(req.user.role);
if (!capabilities.some((cap) => capabilitySetIncludes(granted, cap))) {
return res.status(403).json({ error: 'Insufficient access' });
}
return next();
};
}
module.exports = {
publicUser,
requireAuth,
requireCapability,
requireRole,
tokenFor
};