⚡️ #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
⚡️ #yiisoftRbac
В пакете Yii Role-Based Access Control реализовали текучий интерфейс у класса
Теперь можно делать, например, так:
В пакете Yii Role-Based Access Control реализовали текучий интерфейс у класса
Manager
и добавили ещё тестов (PR).Теперь можно делать, например, так:
$manager
->addPermission(new Permission('signup'))
->addRole(new Role('guest'))
->addChild('guest', 'signup');
👍3
⚡️ #yiisoftRbac
В пакете Yii Role-Based Access Control добавили ещё тестов и немного поправили стиль кода (PR).
В пакете Yii Role-Based Access Control добавили ещё тестов и немного поправили стиль кода (PR).
⚡️ #yiisoftRbac
Немного доработали и причесали пакет Yii Role-Based Access Control (PR):
• исправлена ошибка: при удалении роли не удалялись связи роли с пользователем;
• удалён неиспользуемый код;
• обновлены dev-зависимости;
• версия экшена
• добавлены тесты, MSI увеличен до 95,8%.
Немного доработали и причесали пакет Yii Role-Based Access Control (PR):
• исправлена ошибка: при удалении роли не удалялись связи роли с пользователем;
• удалён неиспользуемый код;
• обновлены dev-зависимости;
• версия экшена
actions/cache
в GitHub Actions поднята до 3;• добавлены тесты, MSI увеличен до 95,8%.
⚡️ #yiisoftRbac #yiisoftRbacPhp
В пакете Yii Role-Based Access Control при добавлении роли или разрешения добавили проверку на существование в хранилище роли или разрешения с таким именем (PR).
Если роль или разрешение уже существуют (даже если добавляется роль, а существует разрешение, и наоборот), то будет брошено исключение
Для проверки существования роли или разрешения был добавлен метод
Новый метод уже реализован в пакете Yii RBAC PHP File Storage (PR).
В пакете Yii Role-Based Access Control при добавлении роли или разрешения добавили проверку на существование в хранилище роли или разрешения с таким именем (PR).
Если роль или разрешение уже существуют (даже если добавляется роль, а существует разрешение, и наоборот), то будет брошено исключение
ItemAlreadyExistsException
.Для проверки существования роли или разрешения был добавлен метод
exists()
в интерфейсе ItemsStorageInterface
. Новый метод уже реализован в пакете Yii RBAC PHP File Storage (PR).
👍1
#yiisoftRbac #yiisoftRbacPhp #yiisoftRbacRulesContainer #ПервыйРелиз #МажорныйРелиз #Релиз
🎁 Yii Role-Based Access Control 1.0.0
Библиотека для управления доступом на основе ролей (RBAC).
• Гибкая иерархия ролей, разрешений и правил.
• Наследование ролей и разрешений.
• Интерфейсы для хранилищ и фабрики правил.
• Возможность использовать разные хранилища для связки ролей с пользователями и иерархии ролей/разрешений.
• Удобное API для управления иерархией ролей/разрешений.
🎁 Yii RBAC PHP File Storage 1.0.0
Реализация хранилища для связки ролей с пользователями и иерархии ролей/разрешений на основе PHP-файлов.
🎁 Yii RBAC Rules Container 1.0.0
Фабрика для создания объектов правил RBAC на базе Yii Factory с использованием синтаксиса Yii Definition. Правила создаются один раз и кэшируются, при последующих запросах возвращается тот же экземпляр.
🎁 Yii Role-Based Access Control 1.0.0
Библиотека для управления доступом на основе ролей (RBAC).
• Гибкая иерархия ролей, разрешений и правил.
• Наследование ролей и разрешений.
• Интерфейсы для хранилищ и фабрики правил.
• Возможность использовать разные хранилища для связки ролей с пользователями и иерархии ролей/разрешений.
• Удобное API для управления иерархией ролей/разрешений.
🎁 Yii RBAC PHP File Storage 1.0.0
Реализация хранилища для связки ролей с пользователями и иерархии ролей/разрешений на основе PHP-файлов.
🎁 Yii RBAC Rules Container 1.0.0
Фабрика для создания объектов правил RBAC на базе Yii Factory с использованием синтаксиса Yii Definition. Правила создаются один раз и кэшируются, при последующих запросах возвращается тот же экземпляр.
🔥6👍2
⚡️ #yiisoftRbac #yiisoftView #yiisoftYiiView #yiisoftYiiWidgets #yiisoftWidget #yiisoftYiiBulma #yiisoftYiiConsole #yiisoftRequirements #yiisoftYiiQueue #yiisoftYiiRunner #yiisoftMailer #yiisoftYiiDebugApi #yiisoftYiiQueueAmqp #yiisoftHtml #yiisoftYiiMiddleware #yiisoftValidator #yiisoftFiles #yiisoftPackageTemplate #yiisoftYiiBootstrap5 #yiisoftForm #yiisoftClassifier #yiisoftYiiDevTool
Заменили рабочие процессы на переиспользуемые из Yii GitHub Actions в пакетах:
- Yii Role-Based Access Control (PR)
- Yii View (PR)
- Yii View Extension (PR)
- Yii Widgets (PR)
- Yii Widget (PR)
- Yii Bulma (PR)
- Yii Console (PR)
- Yii Requirements Checker (PR)
- Yii Queue (PR)
- Yii Runner (PR)
- Yii Mailer Library (PR)
- Yii Debug API (PR)
- Yii Queue AMQP Driver (PR)
- Yii HTML (PR)
- Yii Middleware (PR)
- Yii Validator (PR)
- Yii Files (PR)
- Yii Package Template (PR)
- Yii Bootstrap 5 (PR)
- Yii Form (PR)
- Yii Classifier (PR)
- Yii Development Tool (PR)
Заменили рабочие процессы на переиспользуемые из Yii GitHub Actions в пакетах:
- Yii Role-Based Access Control (PR)
- Yii View (PR)
- Yii View Extension (PR)
- Yii Widgets (PR)
- Yii Widget (PR)
- Yii Bulma (PR)
- Yii Console (PR)
- Yii Requirements Checker (PR)
- Yii Queue (PR)
- Yii Runner (PR)
- Yii Mailer Library (PR)
- Yii Debug API (PR)
- Yii Queue AMQP Driver (PR)
- Yii HTML (PR)
- Yii Middleware (PR)
- Yii Validator (PR)
- Yii Files (PR)
- Yii Package Template (PR)
- Yii Bootstrap 5 (PR)
- Yii Form (PR)
- Yii Classifier (PR)
- Yii Development Tool (PR)
🔥6
⚡️ #yiisoftMailer #yiisoftLogTargetSyslog #yiisoftHttp #yiisoftI18n #yiisoftLog #yiisoftLogTargetDb #yiisoftLogTargetEmail #yiisoftMailerSymfony #yiisoftMiddlewareDispatcher #yiisoftMutexPdoOracle #yiisoftMutexRedis #yiisoftRbac #yiisoftRbacDb #yiisoftRbacPhp #yiisoftRequestBodyParser #yiisoftRateLimiter #yiisoftProxy #yiisoftProfiler #yiisoftMutexPdoPgsql #yiisoftMutexPdoMysql #yiisoftMailerSwiftmailer #yiisoftHtml #yiisoftRequestModel #yiisoftRequirements #yiisoftRouter #yiisoftRouterFastroute #yiisoftSession #yiisoftStrings #yiisoftTestSupport #yiisoftTranslator #yiisoftTranslatorMessageDb #yiisoftUser #yiisoftView #yiisoftViewTwig #yiisoftWidget #yiisoftYiiConsole
Сделали изменения в стили кода. Методы, вызываемые «цепочкой», перенесли на новую строку:
- Yii Mailer Library (PR)
- Yii Logging Syslog Target (PR)
- Yii HTTP (PR)
- Yii Internationalization Library (PR)
- Yii Logging Library (PR)
- Yii Logging DB Target (PR)
- Yii Logging Email Target (PR)
- Yii Mailer Symfony Mailer Extension (PR)
- Yii Middleware Dispatcher (PR)
- Yii Mutex Oracle PDO Driver (PR)
- Yii Mutex Redis Driver (PR)
- Yii Role-Based Access Control (PR)
- Yii RBAC Database (PR)
- Yii RBAC PHP File Storage (PR)
- Yii Request Body Parser (PR)
- Yii Rate Limiter Middleware (PR)
- Yii Proxy (PR)
- Yii Profiler (PR)
- Yii Mutex PostgreSQL PDO Driver (PR)
- Yii Mutex MySQL PDO Driver (PR)
- Yii Mailer SwiftMailer Extension (PR)
- Yii HTML (PR)
- Yii Request Model (PR)
- Yii Requirements Checker (PR)
- Yii Router (PR)
- Yii Router FastRoute Adapter (PR)
- Yii Session (PR)
- Yii Strings (PR)
- Yii Test Support (PR)
- Yii Message Translator (PR)
- Yii Translator DB Message Storage (PR)
- Yii User (PR)
- Yii View (PR)
- Yii View Twig Renderer (PR)
- Yii Widget (PR)
- Yii Console (PR)
Сделали изменения в стили кода. Методы, вызываемые «цепочкой», перенесли на новую строку:
- Yii Mailer Library (PR)
- Yii Logging Syslog Target (PR)
- Yii HTTP (PR)
- Yii Internationalization Library (PR)
- Yii Logging Library (PR)
- Yii Logging DB Target (PR)
- Yii Logging Email Target (PR)
- Yii Mailer Symfony Mailer Extension (PR)
- Yii Middleware Dispatcher (PR)
- Yii Mutex Oracle PDO Driver (PR)
- Yii Mutex Redis Driver (PR)
- Yii Role-Based Access Control (PR)
- Yii RBAC Database (PR)
- Yii RBAC PHP File Storage (PR)
- Yii Request Body Parser (PR)
- Yii Rate Limiter Middleware (PR)
- Yii Proxy (PR)
- Yii Profiler (PR)
- Yii Mutex PostgreSQL PDO Driver (PR)
- Yii Mutex MySQL PDO Driver (PR)
- Yii Mailer SwiftMailer Extension (PR)
- Yii HTML (PR)
- Yii Request Model (PR)
- Yii Requirements Checker (PR)
- Yii Router (PR)
- Yii Router FastRoute Adapter (PR)
- Yii Session (PR)
- Yii Strings (PR)
- Yii Test Support (PR)
- Yii Message Translator (PR)
- Yii Translator DB Message Storage (PR)
- Yii User (PR)
- Yii View (PR)
- Yii View Twig Renderer (PR)
- Yii Widget (PR)
- Yii Console (PR)
🔥4👍3
⚡️ #yiisoftRbac
В Yii Role-Based Access Control исправили опечатку в phpdoc (PR) и реализовали дружественное исключение для случая, когда роли по умолчанию не найдены (PR).
В Yii Role-Based Access Control исправили опечатку в phpdoc (PR) и реализовали дружественное исключение для случая, когда роли по умолчанию не найдены (PR).
👍1
⚡️ #yiisoftRbac #yiisoftMutex #yiisoftMutexPdoOracle #yiisoftMutexPdoPgsql #yiisoftMutexPdoMysql #yiisoftDataResponse
Обновили версию
- Yii Mutex (PR),
- Yii Mutex Oracle PDO Driver (PR),
- Yii Mutex PostgreSQL PDO Driver (PR),
- Yii Mutex MySQL PDO Driver (PR),
- Yii Role-Based Access Control (PR),
- Yii Data Response (PR).
Обновили версию
vimeo/psalm
до ^4.30|^5.3
в пакетах:- Yii Mutex (PR),
- Yii Mutex Oracle PDO Driver (PR),
- Yii Mutex PostgreSQL PDO Driver (PR),
- Yii Mutex MySQL PDO Driver (PR),
- Yii Role-Based Access Control (PR),
- Yii Data Response (PR).
👍4
#yiisoftRbac #ПатчРелиз #Релиз
🎁 Yii Role-Based Access Control 1.0.1
• При получении несуществующих дефолтных ролей теперь выбрасывается исключение, притом "дружественное".
😎 Релиз подготовил Dmitriy Goriaev.
🎁 Yii Role-Based Access Control 1.0.1
• При получении несуществующих дефолтных ролей теперь выбрасывается исключение, притом "дружественное".
😎 Релиз подготовил Dmitriy Goriaev.
🔥10👍2😁1👀1
#yiisoftRbac #yiisoftRbacPhp #yiisoftRbacCycleDb #yiisoftRbacDb #МажорныйРелиз #МинорныйРелиз #Релиз
Большой релиз RBAC пакетов
RBAC пакеты получили большое обновление:
- 🎁 RBAC 2.0
- 🎁 RBAC PHP Storage 2.0
- 🎁 RBAC Cycle Database Storage 3.0
- 🎁 RBAC Yii Database Storage 2.0
- 🎁 RBAC Rules Container 2.1
Рассказываем, что было исправлено и появилось нового.
Поднятие версии PHP
Подняли минимальную версию PHP во всех RBAC пакетах до 8.1.
Качество кода
Повысили качество кода согласно установленным стандартам во всех пакетах:
- 1й уровень в статическом анализаторе Psalm.
- 100% покрытие кода юнит тестами.
- 100% в мутационном тестировании.
Использование хранилищ через Manager
В предыдущей версии было уделено недостаточное внимание тестированию хранилищ в связке с
именно через него нужно взаимодействовать с хранилищами, а не напрямую. Были добавлены соответствующие тесты, а также
устранен ряд сопутствующих проблем.
В частности, убрана связность хранилищ (это было более актуально для реализаций на основе БД). То есть теперь можно
полноценно использовать разные комбинации хранилищ, как и задумывалось изначально. Такое было возможно и в Yii 2. Один
из частых кейсов - когда права и роли хранятся в PHP файле (обновляются реже), а назначения - в базе данных (обновляются
чаще).
Также проведена масштабная оптимизация производительности.
Проверка прав доступа
- Исправлена проблема, когда правила не выполнялись для гостей и других элементов в ветви дерева иерархии.
- Теперь можно проверять наличие у пользователя не только прав, но и ролей.
- Право теперь разрешается для пользователя при наличии доступа хотя бы по одной ветви иерархии доступа.
Простые реализации хранилищ
Добавлены простые реализация хранилищ. Главная их особенность - наполнение свойств соответствующего класса при
считывании из хранилищ и дальнейшее продолжение работы уже со свойствами. Помимо полноценного тестирования базового
пакета (он не может быть использован отдельно), это позволило избавиться от повторяющегося кода в PHP реализации (с
соответствующими доработками для конкуретности).
Специфические изменения для разных реализаций хранилищ
Хранилище RBAC PHP
- Добавлена поддержка конкурентности, что может быть полезно при одновременном редактировании файла.
- Исправлены проблемы с сохранением времени создания и редактирования прав / ролей и назначений.
- Немного упростили процесс указания файла при конфигурировании хранилищ.
Сохранена возможность ручного редактирования файла. Заметьте, что в этом случае вам нужно вручную синхронизировать
изменения в другом хранилище. Если предпочтение отдаётся этому способу - опциональные поля можно не указывать, как и
временные метки - в случае их отсутствия будет выполен fallback на дату изменения файла. Дата изменения файла теперь
тоже кастомизируется. Помимо временных меток, её изменение является триггером к обновлению данных при включённом режиме
обработки конкуретности.
Хранилища RBAC Cycle DB & RBAC Yii DB
Оптимизация производительности
Помимо оптимизации в базовом пакете, проведена оптимизация, специфическая для БД.
Миграции
Мы наконец-то определились, как будут выполняться миграции. Решили отказаться от экспериментальных подходов с чистым
SQL, CLI и использовать соответствующие пакеты - Cycle Migrations и
Yii DB Migration (тем более, что последний не так давно получил первую
стабильную версию).
В продолжение темы убирания связности - каждое хранилище получило свой независимый набор миграций. Таким образом, если
вы решите хранить в базе только назначения - то таблицы для элементов даже не будут созданы изначально.
Также была облегчена миграция существующих данных с Yii 2 путём сохранения оригинальных имён свойств сущностей,
насколько это возможно.
Большой релиз RBAC пакетов
RBAC пакеты получили большое обновление:
- 🎁 RBAC 2.0
- 🎁 RBAC PHP Storage 2.0
- 🎁 RBAC Cycle Database Storage 3.0
- 🎁 RBAC Yii Database Storage 2.0
- 🎁 RBAC Rules Container 2.1
Рассказываем, что было исправлено и появилось нового.
Поднятие версии PHP
Подняли минимальную версию PHP во всех RBAC пакетах до 8.1.
Качество кода
Повысили качество кода согласно установленным стандартам во всех пакетах:
- 1й уровень в статическом анализаторе Psalm.
- 100% покрытие кода юнит тестами.
- 100% в мутационном тестировании.
Использование хранилищ через Manager
В предыдущей версии было уделено недостаточное внимание тестированию хранилищ в связке с
Manager
. Напомним, что именно через него нужно взаимодействовать с хранилищами, а не напрямую. Были добавлены соответствующие тесты, а также
устранен ряд сопутствующих проблем.
В частности, убрана связность хранилищ (это было более актуально для реализаций на основе БД). То есть теперь можно
полноценно использовать разные комбинации хранилищ, как и задумывалось изначально. Такое было возможно и в Yii 2. Один
из частых кейсов - когда права и роли хранятся в PHP файле (обновляются реже), а назначения - в базе данных (обновляются
чаще).
Также проведена масштабная оптимизация производительности.
Проверка прав доступа
- Исправлена проблема, когда правила не выполнялись для гостей и других элементов в ветви дерева иерархии.
- Теперь можно проверять наличие у пользователя не только прав, но и ролей.
- Право теперь разрешается для пользователя при наличии доступа хотя бы по одной ветви иерархии доступа.
Простые реализации хранилищ
Добавлены простые реализация хранилищ. Главная их особенность - наполнение свойств соответствующего класса при
считывании из хранилищ и дальнейшее продолжение работы уже со свойствами. Помимо полноценного тестирования базового
пакета (он не может быть использован отдельно), это позволило избавиться от повторяющегося кода в PHP реализации (с
соответствующими доработками для конкуретности).
Специфические изменения для разных реализаций хранилищ
Хранилище RBAC PHP
- Добавлена поддержка конкурентности, что может быть полезно при одновременном редактировании файла.
- Исправлены проблемы с сохранением времени создания и редактирования прав / ролей и назначений.
- Немного упростили процесс указания файла при конфигурировании хранилищ.
Сохранена возможность ручного редактирования файла. Заметьте, что в этом случае вам нужно вручную синхронизировать
изменения в другом хранилище. Если предпочтение отдаётся этому способу - опциональные поля можно не указывать, как и
временные метки - в случае их отсутствия будет выполен fallback на дату изменения файла. Дата изменения файла теперь
тоже кастомизируется. Помимо временных меток, её изменение является триггером к обновлению данных при включённом режиме
обработки конкуретности.
Хранилища RBAC Cycle DB & RBAC Yii DB
Оптимизация производительности
Помимо оптимизации в базовом пакете, проведена оптимизация, специфическая для БД.
Миграции
Мы наконец-то определились, как будут выполняться миграции. Решили отказаться от экспериментальных подходов с чистым
SQL, CLI и использовать соответствующие пакеты - Cycle Migrations и
Yii DB Migration (тем более, что последний не так давно получил первую
стабильную версию).
В продолжение темы убирания связности - каждое хранилище получило свой независимый набор миграций. Таким образом, если
вы решите хранить в базе только назначения - то таблицы для элементов даже не будут созданы изначально.
Также была облегчена миграция существующих данных с Yii 2 путём сохранения оригинальных имён свойств сущностей,
насколько это возможно.
GitHub
GitHub - yiisoft/rbac: Role based access control
Role based access control. Contribute to yiisoft/rbac development by creating an account on GitHub.
🔥23👍3
#yiisoftRbac #МинорныйРелиз #Релиз
🎁 Yii Role-Based Access Control 2.1
• В классе
• Ограничение версии PHP в
• Исправлена ошибка: в методе
🎁 Yii Role-Based Access Control 2.1
• В классе
Manager
добавлена опциональная зависимость ClockInterface
для получения текущего времени.• Ограничение версии PHP в
composer.json
изменено на 8.1 - 8.4
.• Исправлена ошибка: в методе
Manager::userHasPermission()
не учитывались роли по умолчанию.👍5👾1