@mamoorali295/rbac
Version:
Complete RBAC (Role-Based Access Control) system for Node.js with Express middleware, NestJS integration, GraphQL support, MongoDB & PostgreSQL support, modern admin dashboard, TypeScript support, and dynamic permission management
35 lines (34 loc) • 1.14 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.CheckPermissions = exports.PERMISSIONS_KEY = void 0;
const common_1 = require("@nestjs/common");
exports.PERMISSIONS_KEY = 'rbac_permissions';
/**
* NestJS decorator that marks a route or class for RBAC permission checking.
* Can auto-infer permissions from the route path or use explicitly provided options.
*
* @param options - Optional feature and permission specification
* @returns Method decorator
*
* @example
* ```typescript
* // Auto-inferred permissions from route path
* @Get('billing/invoices')
* @CheckPermissions()
* getInvoices() { ... }
*
* // Explicit permissions
* @Post('admin/reset')
* @CheckPermissions({ feature: 'admin', permission: 'sudo' })
* resetSystem() { ... }
*
* // Class-level permissions (applied to all methods)
* @Controller('billing')
* @CheckPermissions({ feature: 'billing' })
* export class BillingController { ... }
* ```
*/
const CheckPermissions = (options = {}) => {
return (0, common_1.SetMetadata)(exports.PERMISSIONS_KEY, options);
};
exports.CheckPermissions = CheckPermissions;