authkit-js
Version:
Express auth toolkit (JWT, Sessions with Redis, Google/GitHub OAuth) in JavaScript
35 lines (28 loc) • 1.02 kB
JavaScript
const { Errors } = require('../utils/errors');
function requireAuthGuard() {
return function (req, res, next) {
if (!req.auth || !req.auth.user) return next(Errors.UNAUTHORIZED());
next();
};
}
function requireRole(role) {
return function (req, _res, next) {
const user = req.auth && req.auth.user;
if (!user) return next(Errors.UNAUTHORIZED());
const roles = user.roles || user.role || [];
const has = Array.isArray(roles) ? roles.includes(role) : roles === role;
if (!has) return next(Errors.FORBIDDEN());
next();
};
}
function requirePermission(permission) {
return function (req, _res, next) {
const user = req.auth && req.auth.user;
if (!user) return next(Errors.UNAUTHORIZED());
const perms = user.permissions || [];
const has = Array.isArray(perms) && perms.includes(permission);
if (!has) return next(Errors.FORBIDDEN());
next();
};
}
module.exports = { requireAuthGuard, requireRole, requirePermission };