* @throws \Exception
*/
public function actionInit() {
- $isDirty = Yii::$app->cache->get("dirtyAuthSettings") ?? true;
+ // cache->get() возвращает false и при промахе, и когда значение явно false — различить нельзя.
+ // Используем exists(): если ключа нет (flush или первый запуск) — запускаем на всякий случай.
+ $keyExists = Yii::$app->cache->exists("dirtyAuthSettings");
+ $isDirty = !$keyExists || (bool)Yii::$app->cache->get("dirtyAuthSettings");
if (!$this->force && !$isDirty) {
echo "Нет изменений в настройках разрешений\n";
return 'ok';
['id' => $adminGroupRbacConfig->admin_group_id - (1e+6)]
])->all() as $admin) {
if ($roleOrPermission) {
- $auth->assign($roleOrPermission, $admin->id);
+ if (!$auth->getAssignment($roleOrPermission->name, $admin->id)) {
+ $auth->assign($roleOrPermission, $admin->id);
+ }
} else {
- $auth->assign($permission, $admin->id);
+ if (!$auth->getAssignment($permission->name, $admin->id)) {
+ $auth->assign($permission, $admin->id);
+ }
}
}
}