]> gitweb.erp-flowers.ru Git - erp24_rep/yii-erp24/.git/commitdiff
правки по дубликации при назначении прав
authorfomichev <vladimir.fomichev@erp-flowers.ru>
Mon, 25 May 2026 08:03:01 +0000 (11:03 +0300)
committerfomichev <vladimir.fomichev@erp-flowers.ru>
Mon, 25 May 2026 08:03:01 +0000 (11:03 +0300)
erp24/commands/AuthController.php

index 1d8573556bfda93487319620f2de8e603132c88a..eca4b2d29cdf79457605f8b81dc259a2edba87fc 100644 (file)
@@ -30,7 +30,10 @@ class AuthController extends Controller
      * @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';
@@ -130,9 +133,13 @@ class AuthController extends Controller
                         ['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);
+                            }
                         }
                     }
                 }