UNPKG

@rbac/rbac

Version:

Blazing Fast, Zero dependency, Hierarchical Role-Based Access Control for Node.js

21 lines (20 loc) 765 B
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.createNestMiddleware = void 0; const createNestMiddleware = (rbac) => (operation, options = {}) => async (req, res, next) => { try { const role = options.getRole ? options.getRole(req) : req.role; const params = options.getParams ? options.getParams(req) : undefined; const allowed = await rbac.can(role, operation, params); if (allowed) return next(); if (options.onDenied) return options.onDenied(req, res, next); res.status(403).send('Forbidden'); } catch (err) { next(err); } }; exports.createNestMiddleware = createNestMiddleware; exports.default = exports.createNestMiddleware;