UNPKG

authkit-js

Version:

Express auth toolkit (JWT, Sessions with Redis, Google/GitHub OAuth) in JavaScript

35 lines (28 loc) 1.02 kB
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 };