UNPKG

policyline

Version:

Attributes Based Access Control library for Node.JS

40 lines (36 loc) 4.22 kB
* Алогоритмы: `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 что бы не нагружать БД лишними выборками