Хроники Yii3
623 subscribers
43 photos
1.7K links
Описание процесса разработки фреймворка из первых рук 😎

Обсуждение:
https://yangx.top/yii3ru

Сводка по всем пакетам:
https://www.yiiframework.com/status/3.0

Поддержать разработчиков:
https://opencollective.com/yiisoft
加入频道
⚡️ #yiisoftRbacSpiralDb #yiisoftRbacCycleDb

Переименовали пакет Yii RBAC Spiral Database.

Yii RBAC Spiral Database (yiisoft/rbac-spiral-db)

Yii RBAC Cycle Database (yiisoft/rbac-cycle-db)
#yiisoftRbacCycleDb

Создали новый пакет Yii RBAC Cycle Database Storage для реализации на базе Cycle DBAL хранилища ролей, разрешений и назначений их пользователям для Yii RBAC.
👍1
⚡️ #yiisoftRbacCycleDb

Сделали первую реализацию хранилища ролей, разрешений и назначений их пользователям для Yii RBAC на базе Cycle DBAL в пакете Yii RBAC Cycle Database Storage (PR).
👍4
⚡️ #yiisoftRbacCycleDb

Выполнили небольшой рефакторинг и улучшили запросы к БД в пакете Yii RBAC Cycle Database Storage (PR).
👍1
⚡️ #yiisoftRbacCycleDb

Несколько изменений в пакете Yii RBAC Cycle Database Storage.

• Актуализировали конфигурацию scrutinizer, а в GitHub Actions перешли на использование Yii GitHub Actions (PR).

• Адаптировали пакет к последней версии Yii RBAC (PR).
🔥3
⚡️ #yiisoftRbacCycleDb

В Yii RBAC Cycle Database Storage добавили тестов и исправили несколько ошибок:
- метод AssignmentsStorage::getByUserId() возвращал некорректный результат (PR);
- метод ItemsStorage::getParents() возвращал некорректный результат (PR);
- при получении элементов RBAC при отсутствии правила вместо null устанавливалась пустая строка в качестве имени правила (PR).
⚡️ #yiisoftRbacCycleDb

Несколько улучшений в Yii RBAC Cycle Database Storage.

• В CI пакета добавили проверку транзитивных зависимостей (PR).

• В CI пакета добавили Rector и применили предлагаемые изменения (PR, PR).

• Обновили dev-зависимости (PR):
- vimeo/psalm до ^4.30|^5.2;
- roave/infection-static-analysis-plugin до ^1.25,
- maglnet/composer-require-checker до ^4.3.
👍3
#yiisoftRbacCycleDb #ПервыйРелиз #МажорныйРелиз #Релиз

🎁 Yii RBAC Cycle Database Storage 1.0

Первая стабильная версия хранилища связки ролей с пользователями и иерархии ролей/разрешений для Yii RBAC на основе базы данных с использованием абстракции Cycle DBAL.

Пакет предоставляет:

• реализации интерфейсов хранилища Yii RBAC;

• консольную команду rbac/cycle/init для создания необходимых таблиц в БД.
🔥15👍4🏆2
#yiisoftRbacCycleDb #МажорныйРелиз #Релиз

🎁 Yii RBAC Cycle Database 2.0.0

• Добавлена поддержка уровня вложенности больше 1 для ролей и прав.
• Исправлен неработающий флаг --force для консольной команды RbacCycleInit.
• Исправлена поддержка всех доступных в Cycle реляционных баз данных.
• Тип timestamp заменен на integer.

😎 Релиз подготовил Алексей Рогачев. Отдельная благодарность пользователю sobhan-m94 за обнаружение некоторых проблем и попытки их исправить.
🔥92
#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

В предыдущей версии было уделено недостаточное внимание тестированию хранилищ в связке с Manager. Напомним, что
именно через него нужно взаимодействовать с хранилищами, а не напрямую. Были добавлены соответствующие тесты, а также
устранен ряд сопутствующих проблем.

В частности, убрана связность хранилищ (это было более актуально для реализаций на основе БД). То есть теперь можно
полноценно использовать разные комбинации хранилищ, как и задумывалось изначально. Такое было возможно и в Yii 2. Один
из частых кейсов - когда права и роли хранятся в PHP файле (обновляются реже), а назначения - в базе данных (обновляются
чаще).

Также проведена масштабная оптимизация производительности.

Проверка прав доступа

- Исправлена проблема, когда правила не выполнялись для гостей и других элементов в ветви дерева иерархии.
- Теперь можно проверять наличие у пользователя не только прав, но и ролей.
- Право теперь разрешается для пользователя при наличии доступа хотя бы по одной ветви иерархии доступа.

Простые реализации хранилищ

Добавлены простые реализация хранилищ. Главная их особенность - наполнение свойств соответствующего класса при
считывании из хранилищ и дальнейшее продолжение работы уже со свойствами. Помимо полноценного тестирования базового
пакета (он не может быть использован отдельно), это позволило избавиться от повторяющегося кода в PHP реализации (с
соответствующими доработками для конкуретности).

Специфические изменения для разных реализаций хранилищ

Хранилище RBAC PHP

- Добавлена поддержка конкурентности, что может быть полезно при одновременном редактировании файла.
- Исправлены проблемы с сохранением времени создания и редактирования прав / ролей и назначений.
- Немного упростили процесс указания файла при конфигурировании хранилищ.

Сохранена возможность ручного редактирования файла. Заметьте, что в этом случае вам нужно вручную синхронизировать
изменения в другом хранилище. Если предпочтение отдаётся этому способу - опциональные поля можно не указывать, как и
временные метки - в случае их отсутствия будет выполен fallback на дату изменения файла. Дата изменения файла теперь
тоже кастомизируется. Помимо временных меток, её изменение является триггером к обновлению данных при включённом режиме
обработки конкуретности.

Хранилища RBAC Cycle DB & RBAC Yii DB

Оптимизация производительности

Помимо оптимизации в базовом пакете, проведена оптимизация, специфическая для БД.

Миграции

Мы наконец-то определились, как будут выполняться миграции. Решили отказаться от экспериментальных подходов с чистым
SQL, CLI и использовать соответствующие пакеты - Cycle Migrations и
Yii DB Migration (тем более, что последний не так давно получил первую
стабильную версию).

В продолжение темы убирания связности - каждое хранилище получило свой независимый набор миграций. Таким образом, если
вы решите хранить в базе только назначения - то таблицы для элементов даже не будут созданы изначально.

Также была облегчена миграция существующих данных с Yii 2 путём сохранения оригинальных имён свойств сущностей,
насколько это возможно.
🔥23👍3