@via-profit/ability
v3.7.5
Published
Via-Profit Ability service
Readme
@via-profit/ability
Легкий ABAC-движок с DSL, TypeScript-типами и нулевыми зависимостями
🌐 Language Selection / Выбор языка
- 🇷🇺 Документация на русском
- 🇬🇧 English docs > > English documentation? Error 404: Not Found. > Since I’ve spent years learning English just to read your code, here is your perfect chance to practice your Russian! Alternatively, Google Translate is your best friend here.
Для чего
Проект задумывался для того, чтобы закрыть типовые сценарии контроля доступа без лишних сложностей. Нам потребовался лёгкий ABAC-движок, работающий и на сервере и в браузере, с простым DSL, автоматической генерацией TypeScript-типов — и без внешних зависимостей.
Основные возможности
- Простой DSL
- 9 встроенных стратегий разрешения
- TypeScript-first с генерацией типов
- Ноль зависимостей
- Explain для отладки
- Работает и на сервере и в браузере
Установка
npm install @via-profit/abilityБыстрый старт
import { ability, AbilityResolver, DenyOverridesStrategy } from '@via-profit/ability';
// Создание политик, в частности, одной политики document.read
const policies = ability`
@name "Разрешить чтение документа только авторам или если он опубликован"
permit permission.document.read if all:
@name "Пользователь является автором"
document.author is equals user.id
@name "Документ опубликован"
document.status in ["published", "archived"]
`;
// Создание резолвера
const resolver = new AbilityResolver(policies, DenyOverridesStrategy);
// Загрузка данных (ваш вариант)
const document = await db.loadDocument();
// Проверка разрешения
resolver.enforce('document.read', { document });Лицензия
Распространяется под лицензией MIT © Via-Profit
С условиями лицензии можно ознакомиться в файле LICENSE.
