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

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

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

Поддержать разработчиков:
https://opencollective.com/yiisoft
加入频道
⚡️ Практически во всех пакетах добавлен ежедневный запуск тестов через GitHub Workflow.

#yiisoftCacheWincache #yiisoftView #yiisoftDi #yiisoftStrings #yiisoftRbacPhp #yiisoftYiiConsole #yiisoftCache #yiisoftDb #yiisoftRbac #yiisoftYiiAuthClient #yiisoftYiiGii #yiisoftViewTwig #yiisoftYiiWeb #yiisoftDbMssql #yiisoftDbOracle #yiisoftLog #yiisoftYiiDebug #yiisoftDbSqlite #yiisoftDbPgsql #yiisoftDbMysql #yiisoftEventDispatcher #yiisoftI18n #yiisoftYiiEvent #yiisoftYiiDbMigration #yiisoftValidator #yiisoftUser #yiisoftTranslatorMessageGettext #yiisoftSecurity #yiisoftMiddlewareDispatcher #yiisoftMutex #yiisoftNetworkUtilities #yiisoftProfiler #yiisoftProxy #yiisoftRequestBodyParser #yiisoftRouterFastroute #yiisoftInjector #yiisoftCacheApcu #yiisoftAuthJwt #yiisoftAuth #yiisoftAssets #yiisoftArrays #yiisoftAliases #yiisoftDemoApi #yiisoftDemo #yiisoftDataResponse #yiisoftData #yiisoftCsrf #yiisoftCookies #yiisoftConfig #yiisoftCacheMemcached #yiisoftCacheFile #yiisoftHttp #yiisoftHtml #yiisoftFiles #yiisoftFactory #yiisoftErrorHandler #yiisoftLogTargetDb #yiisoftLogTargetEmail #yiisoftLogTargetFile #yiisoftRequestModel #yiisoftRbacSpiralDb #yiisoftRateLimiter #yiisoftPackageTemplate #yiisoftMutexRedis #yiisoftMutexPdoPgsql #yiisoftMutexPdoOracle #yiisoftMutexFile #yiisoftMutexPdoMysql #yiisoftTranslatorFormatterSimple #yiisoftTranslatorFormatterIntl #yiisoftTranslatorExtractor #yiisoftTranslator #yiisoftTestSupport #yiisoftSession #yiisoftRouter #yiisoftRequirements #yiisoftTranslatorMessageDb #yiisoftTranslatorMessagePhp #yiisoftVarDumper #yiisoftWidget #yiisoftYiiBootstrap5 #yiisoftYiiBulma #yiisoftYiiCycle #yiisoftYiiDataview #yiisoftYiiDebugApi #yiisoftYiiDebugViewer #yiisoftMailerSwiftmailer #yiisoftMailer #yiisoftLogTargetSyslog #yiisoftJson #yiisoftForm #yiisoftYiiWidgets #yiisoftYiiView #yiisoftYiiSwagger #yiisoftYiiSentry
⚡️ #yiisoftRbacPhp

В хранилище на основе PHP-файлов Yii RBAC PHP File Storage для библиотеки Yii Role-Based Access Control реализовали интерфейсы RolesStorageInterface и AssignmentsStorageInterface для хранения ролей/прав и их назначений пользователям соответственно (PR).
⚡️ #yiisoftRbacPhp

Исправлена ошибка в пакете Yii RBAC PHP File Storage: после изменения роли без изменения имени сбрасывались все назначения этой роли пользователям (PR).
⚡️ #yiisoftRbac #yiisoftRbacPhp

В пакете Yii Role-Based Access Control финализировали классы Assignment, DenyAll, ClassNameRuleFactory и публичные методы в абстрактном классе Item (PR), а также немного улучшили аннотации для psalm (PR).

В Yii RBAC PHP File Storage подняли уровень psalm до 1, доработали описание в readme и "подчистили" служебные файлы (PR)
⚡️ #yiisoftRbac #yiisoftRbacPhp

Продолжается подготовка 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).
⚡️ #yiisoftRbacPhp

В пакете Yii RBAC PHP File Storage добавлена поддержка создания вложенных папок в случаях, когда папка для хранения данных не существует (PR).
⚡️ #yiisoftRbac #yiisoftRbacPhp

Продолжаем готовить 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).
⚡️ #yiisoftRbacPhp

Исправили ошибку, возникающую при использовании числовых ID пользователя в пакете Yii RBAC PHP File Storage (commit).
⚡️ #yiisoftRbac #yiisoftRbacPhp

Выполнили рефакторинг интерфейса хранилища назначений ролей/прав пользователям AssignmentsStorageInterface в пакете Yii Role-Based Access Control (PR):

• сделали более консистентные и понятные имена методов;

• в аргументах методов заменили объекты ролей/прав на их имена.

Соответствующим образом изменили реализацию хранилища в Yii RBAC PHP File Storage (PR).
⚡️ #yiisoftRbac #yiisoftRbacPhp #yiisoftDemo

Продолжаем рефакторинг 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 $itemNamestring $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

В интерфейсе 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). Теперь правила НЕ сохраняются в хранилище, а создаются с помощью абстрактной фабрики RuleFactoryInterface. Это позволило существенно упростить код:

- из хранилища ItemsStorageInterface удалены все методы, касающиеся правил;

- у правил теперь нет имён и соответственно удалён метод getName();

- удалён абстрактный класс Rule, так как он был нужен только для удобства работы с именем правила.

Вместо фабрики ClassNameRuleFactory в новом пакете Yii RBAC Rules Container создан контейнер правил RulesContainer (реализует интерфейс RuleFactoryInterface), позволяющий задавать конфигурацию правил с помощью синтаксиса Yii Definitions и использовать любой PSR-11 контейнер для разрешения зависимостей.

К этим изменениям адаптированы хранилище Yii RBAC PHP File Storage (PR) и демо веб-приложения (PR).
👍1