⚡️ #yiisoftRbac #yiisoftRbacPhp
В пакете Yii Role-Based Access Control финализировали классы
В Yii RBAC PHP File Storage подняли уровень psalm до 1, доработали описание в readme и "подчистили" служебные файлы (PR)
В пакете Yii Role-Based Access Control финализировали классы
Assignment
, DenyAll
, ClassNameRuleFactory
и публичные методы в абстрактном классе Item
(PR), а также немного улучшили аннотации для psalm (PR).В Yii RBAC PHP File Storage подняли уровень psalm до 1, доработали описание в readme и "подчистили" служебные файлы (PR)
⚡️ #yiisoftRbac #yiisoftRbacPhp
Продолжается подготовка RBAC к релизу.
• В абстрактном классе
• Для правил добавили новый интерфейс
• Из Yii RBAC удалили класс
• Улучшили аннотации psalm в Yii RBAC (PR) и Yii RBAC PHP File Storage (PR).
Продолжается подготовка RBAC к релизу.
• В абстрактном классе
\Yiisoft\Rbac\Rule
имя правила в конструкторе сделали опциональным: если его не передали, то в качестве имени правила будет использоваться имя класса (PR).• Для правил добавили новый интерфейс
RuleInterface
, теперь правила реализуют его, а не ItemInterface
(PR) и адаптировали к этому изменению Yii RBAC PHP File Storage (PR).• Из Yii RBAC удалили класс
DenyAll
(PR), а точнее перенесли его ранее в Yii Access.• Улучшили аннотации psalm в Yii RBAC (PR) и Yii RBAC PHP File Storage (PR).
⚡️ #yiisoftRbac
Удалили интерфейс
Удалили интерфейс
ItemInterface
в пакете Yii Role-Based Access Control, теперь абстрактный класс Item
, от которого наследуются роли и разрешения, сам по себе и не реализует никакие интерфейсы (PR).⚡️ #yiisoftRbac #yiisoftRbacPhp
Продолжаем готовить RBAC к релизу.
• В пакете Yii RBAC в фабрике для создания правил
• Перенесли
• Переименовали методы в классе
Продолжаем готовить RBAC к релизу.
• В пакете Yii RBAC в фабрике для создания правил
ClassNameRuleFactory
добавили валидацию передаваемого имени класса и создаваемого правила, в случае ошибки бросается исключение RuntimeException
с соответствующим сообщением (PR).• Перенесли
Yiisoft\Rbac\RuleFactory\ClassNameRuleFactory
в Yiisoft\Rbac\ClassNameRuleFactory
, переименовали метод Manager::setGuestRole()
в Manager::setGuestRoleName()
, причесали служебные файлы и увеличили покрытие тестами до 100% в пакете Yii RBAC (PR).• Переименовали методы в классе
\Yiisoft\Rbac\Manager
(PR):setDefaultRoles()
→ setDefaultRoleNames()
getDefaultRoles()
→ getDefaultRoleNames()
getDefaultRoleInstances()
→ getDefaultRoles()
• В пакете Yii RBAC PHP File Storage адаптировали код к последним изменениям в Yii RBAC, причесали служебные файлы и увеличили покрытие тестами (PR, PR, PR).⚡️ #yiisoftRbac #yiisoftRbacPhp
Выполнили рефакторинг интерфейса хранилища назначений ролей/прав пользователям
• сделали более консистентные и понятные имена методов;
• в аргументах методов заменили объекты ролей/прав на их имена.
Соответствующим образом изменили реализацию хранилища в Yii RBAC PHP File Storage (PR).
Выполнили рефакторинг интерфейса хранилища назначений ролей/прав пользователям
AssignmentsStorageInterface
в пакете Yii Role-Based Access Control (PR):• сделали более консистентные и понятные имена методов;
• в аргументах методов заменили объекты ролей/прав на их имена.
Соответствующим образом изменили реализацию хранилища в Yii RBAC PHP File Storage (PR).
⚡️ #yiisoftRbac #yiisoftRbacPhp #yiisoftDemo
Продолжаем рефакторинг Yii Role-Based Access Control (PR).
•
• В интерфейсе
Соответствующие изменения внесены в Yii RBAC PHP File Storage (PR) и демо веб-приложения (PR).
Продолжаем рефакторинг Yii Role-Based Access Control (PR).
•
RolesStorageInterface
переименован в ItemsStorageInterface
, а также переименованы методы:getItems()
→ getAll()
getItemByName()
→ get()
addItem()
→ add()
updateItem()
→ update()
removeItem()
→ remove()
getChildren()
→ getAllChildren()
getRoleByName()
→ getRole()
getPermissionByName()
→ getPermission()
getChildrenByName()
→ getChildren()
getRuleByName()
→ getRule()
• В методах removeChildren()
, removeChild()
, addChild()
и remove()
интерфейса ItemsStorageInterface
в качестве аргументов вместо объектов элементов RBAC теперь используются их имена.• В интерфейсе
AssignmentsStorageInterface
переименованы методы:getUserAssignments()
→ getByUserId()
removeUserAssignments()
→ removeByUserId()
removeItemAssignments()
→ removeByItemName()
• В методах get()
, add()
и remove()
интерфейса AssignmentsStorageInterface
изменён порядок методов:string $userId, string $itemName
→ string $itemName, string $userId
• В RBAC-менеджере Manager
объекты элементов RBAC заменены на их имена в качестве аргументов в следующих методах:canAddChild()
addChild()
removeChild()
removeChildren()
hasChild()
assign()
revoke()
removeRole()
removePermission()
• В RBAC-менеджере Manager
переименованы методы:getUserIdsByRole()
→ getUserIdsByRoleName()
getPermissionsByUser()
→ getPermissionsByUserId
getPermissionsByRole()
→ getPermissionsByRoleName()
getRolesByUser()
→ getRolesByUserId()
• Исправлена ошибка в методе Manager::getDefaultRoles()
: теперь возвращаются роли из хранилища, а не создаются новые.Соответствующие изменения внесены в Yii RBAC PHP File Storage (PR) и демо веб-приложения (PR).
👍4
⚡️ #yiisoftRbac #yiisoftRbacPhp
В интерфейсе
Соответствующим образом адаптировали хранилище Yii RBAC PHP File Storage (PR).
В интерфейсе
ItemsStorageInterface
пакета Yii Role-Based Access Control заменили метод getAllChildren()
на getParents()
(PR).Соответствующим образом адаптировали хранилище Yii RBAC PHP File Storage (PR).
⚡️ #yiisoftRbac #yiisoftRbacPhp #yiisoftDemo
✨ #yiisoftRbacRulesContainer
Переработали хранение и создание правил в пакете Yii Role-Based Access Control (PR). Теперь правила НЕ сохраняются в хранилище, а создаются с помощью абстрактной фабрики
- из хранилища
- у правил теперь нет имён и соответственно удалён метод
- удалён абстрактный класс
Вместо фабрики
К этим изменениям адаптированы хранилище Yii RBAC PHP File Storage (PR) и демо веб-приложения (PR).
✨ #yiisoftRbacRulesContainer
Переработали хранение и создание правил в пакете Yii Role-Based Access Control (PR). Теперь правила НЕ сохраняются в хранилище, а создаются с помощью абстрактной фабрики
RuleFactoryInterface
. Это позволило существенно упростить код:- из хранилища
ItemsStorageInterface
удалены все методы, касающиеся правил;- у правил теперь нет имён и соответственно удалён метод
getName()
;- удалён абстрактный класс
Rule
, так как он был нужен только для удобства работы с именем правила.Вместо фабрики
ClassNameRuleFactory
в новом пакете Yii RBAC Rules Container создан контейнер правил RulesContainer
(реализует интерфейс RuleFactoryInterface
), позволяющий задавать конфигурацию правил с помощью синтаксиса Yii Definitions и использовать любой PSR-11 контейнер для разрешения зависимостей.К этим изменениям адаптированы хранилище Yii RBAC PHP File Storage (PR) и демо веб-приложения (PR).
👍1
⚡️ #yiisoftRbac
В RBAC-менеджере библиотеки Yii Role-Based Access Control в качестве ID пользователя разрешено передавать строку, целое число или объект с методом
В RBAC-менеджере библиотеки Yii Role-Based Access Control в качестве ID пользователя разрешено передавать строку, целое число или объект с методом
__toString()
(PR).⚡️ #yiisoftRbac
В readme пакета Yii Role-Based Access Control добавили схему, иллюстрирующую пример иерархии разрешений и ролей (PR).
На GitHub'e в markdown-файлах добавили поддержку Mermaid. Этот инструмент позволяет описывать диаграммы в текстовом виде. Например, добавленная в readme схема в текстовом виде выглядит так:
В readme пакета Yii Role-Based Access Control добавили схему, иллюстрирующую пример иерархии разрешений и ролей (PR).
На GitHub'e в markdown-файлах добавили поддержку Mermaid. Этот инструмент позволяет описывать диаграммы в текстовом виде. Например, добавленная в readme схема в текстовом виде выглядит так:
```mermaid
flowchart LR
createPost:::permission ---> author:::role
readPost:::permission --> reader:::role --> author:::role
deletePost:::permission ---> author:::role
classDef permission fill:#fc0,stroke:#000,color:#000
classDef role fill:#9c0,stroke:#000,color:#000
```
👍5🔥2