UNPKG

cancancan-ts

Version:

Lightweight and extensible authorization engine for TypeScript inspired by CanCanCan. Define flexible permissions using actions, subjects, and conditions.

31 lines 887 B
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.Ability = void 0; class Ability { constructor() { this.rules = []; } can(action, subject, object) { return this.rules.some((rule) => { if (rule.action !== action || rule.subject !== subject) return false; if (!rule.condition) return true; return object ? rule.condition(object) : false; }); } allow(action, subject, condition) { this.rules.push({ action, subject, condition }); } deny(action, subject) { this.rules = this.rules.filter((rule) => !(rule.action === action && rule.subject === subject)); } getRules() { return this.rules; } clear() { this.rules = []; } } exports.Ability = Ability; //# sourceMappingURL=ability.js.map