From: fomichev Date: Fri, 22 May 2026 08:13:38 +0000 (+0300) Subject: правки по миграциям X-Git-Url: https://gitweb.erp-flowers.ru/?a=commitdiff_plain;h=3427445bfcd573831dd86ee38fb3797742cef64e;p=erp24_rep%2Fyii-erp24%2F.git правки по миграциям --- diff --git a/erp24/migrations/m260522_120000_add_catmanager_rbac_to_rs_and_kik.php b/erp24/migrations/m260522_120000_add_catmanager_rbac_to_rs_and_kik.php new file mode 100644 index 00000000..096969c7 --- /dev/null +++ b/erp24/migrations/m260522_120000_add_catmanager_rbac_to_rs_and_kik.php @@ -0,0 +1,94 @@ +db->createCommand( + 'SELECT config FROM ' . self::TABLE . ' WHERE admin_group_id = :gid', + [':gid' => $groupId] + )->queryScalar(); + + if ($existing === false) { + $this->insert(self::TABLE, [ + 'admin_group_id' => $groupId, + 'config' => implode(',', self::PERMISSIONS), + ]); + echo " Группа {$groupId}: создана запись [" . implode(', ', self::PERMISSIONS) . "]\n"; + } else { + $current = array_filter(array_map('trim', explode(',', (string)$existing))); + $merged = array_values(array_unique(array_merge($current, self::PERMISSIONS))); + $added = array_diff(self::PERMISSIONS, $current); + $this->update(self::TABLE, ['config' => implode(',', $merged)], ['admin_group_id' => $groupId]); + echo " Группа {$groupId}: добавлено [" . implode(', ', $added ?: ['—уже было']) . "]\n"; + } + } + + \Yii::$app->cache->set('dirtyAuthSettings', true); + + echo "\n"; + echo "==============================================================\n"; + echo " Запустите:\n"; + echo " php yii auth/init --force=1\n"; + echo "==============================================================\n"; + } + + public function safeDown(): void + { + foreach (self::TARGET_GROUPS as $groupId) { + $existing = $this->db->createCommand( + 'SELECT config FROM ' . self::TABLE . ' WHERE admin_group_id = :gid', + [':gid' => $groupId] + )->queryScalar(); + + if ($existing === false) { + continue; + } + + $current = array_filter(array_map('trim', explode(',', (string)$existing))); + $filtered = array_values(array_diff($current, self::PERMISSIONS)); + + if ($filtered === []) { + $this->delete(self::TABLE, ['admin_group_id' => $groupId]); + } else { + $this->update(self::TABLE, ['config' => implode(',', $filtered)], ['admin_group_id' => $groupId]); + } + echo " Группа {$groupId}: разрешения удалены\n"; + } + + \Yii::$app->cache->set('dirtyAuthSettings', true); + echo "\nПосле отката запустите: php yii auth/init --force=1\n"; + } +}