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
JavaScript
;
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