policyline
Version:
Attributes Based Access Control library for Node.JS
40 lines (36 loc) • 4.22 kB
Markdown
* Алогоритмы: `any` все условия должны быть выполнены в политике, `all` - только одно - убрать вобще так как они протеворечат кондишенам и данный функционал полностью перерываеться экспрешенами в группах
* Эффект: `deny` - всегда true, но при выполнени таргетов - запрет, `permit` - всегда запрет только при выполнении таргетов разрешено - проверить deny c кондишенами
* condition и target теперь совмещены в target, а кондишен автоматически получаеться из resource
* удалены `and` и `or` методы в политиках, теперь можно просто создавать группы
* более строгие правила
* перегрузка операторов
* реверсионные условия для выборки пользователей для ABM(Attribute Based Messages), watchers
* проверка семантики
* теперь по умолчанию эффект не deny, а permit
* при регистрации namespace для кастомного оператора используеться или wildcard "*" или полный неймспейс с правой стороны
* context в мутаторах доступен только в том случае если адаптер применяеться к одному из объектов user env action resource
* существуют мутаторы префиксные и постфиксные
* поствиксные мутаторы должны вернуть значение таргет выражения, или в булевом значении или в объектном: ключ - значение
* мутаторы префиксные, поствиксные, контекст, группировка
* reverse операторы могут быть зарегестрированны только на глобал неймспейс
* во время расчета watchers , по дефолту вызываеться check, это следует учитывать
* если по время получения вотчерсов в данных не передать необходиме параметры то посчитает не правильно, например:
let data = {
resource: {
company: 'companyA'
},
user: {role: 'admin'}
};
admin: {
target: [
'user.role="admin"',
'user.company=resource.company',
]
},
если не указать ресурс то выдаст вместо { role: 'admin', company: 'companyA' } выдаст { role: 'admin', company: 'resource.company' }
то есть посчитает не правильно
Основная концепция состоит в том, что наблюдатели(watchers) должны получать уведомления именно о тех и только тех изменениях ресурсах которые изменились.
Поэтому из данных которые проходили проверку удаляеться пользователь, а остальные передаються на вычисления watchers, если данные не поллные,
то нет смысла производить отсылку нотификаций именно по данному ресурсу, поэтому будет производиться фильтрация если у пользователя не определен,
то вернеться выражение которое не несет смысла то есть, при выборке юзеров не будет никому выслано уведомление.
возвращяться undefined что бы не нагружать БД лишними выборками