From e287f8a54fcf1ee2df7855b210033809c1ac6c14 Mon Sep 17 00:00:00 2001 From: adonis Date: Wed, 19 Aug 2026 18:49:08 +0330 Subject: [PATCH] chore(settings): sync superadmin key lists to controlpanel_user Extend template sync script to generate frontend allow/deny lists so ProgramSettingsPage can hide can_edit=1 keys before API purge deploys. Co-authored-by: Cursor --- scripts/sync-superadmin-setting-template.mjs | 23 ++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/scripts/sync-superadmin-setting-template.mjs b/scripts/sync-superadmin-setting-template.mjs index d5c3be6..219703c 100644 --- a/scripts/sync-superadmin-setting-template.mjs +++ b/scripts/sync-superadmin-setting-template.mjs @@ -4,6 +4,7 @@ * خروجی: * - prisma/setting-templates-from-deploy.json (فقط can_edit=0 نهایی) * - src/program-settings/deploy-setting-catalog-keys.ts + * - ../controlpanel_user/src/config/superAdminSettingKeys.ts */ import { readFileSync, writeFileSync } from 'fs'; import { dirname, join } from 'path'; @@ -120,5 +121,27 @@ ${editableRows.map((r) => ` ${JSON.stringify(r.key)},`).join('\n')} writeFileSync(join(root, 'prisma/setting-templates-from-deploy.json'), `${JSON.stringify(jsonOut, null, 2)}\n`); writeFileSync(join(root, 'src/program-settings/deploy-setting-catalog-keys.ts'), `${tsKeys}\n`); +const userTs = `/** + * کلیدهای تنظیمات سوپرادمین — هم‌تراز deploy_settings_const.sql + * تولید خودکار: controlpanel_server/scripts/sync-superadmin-setting-template.mjs + */ +export const SUPERADMIN_SYSTEM_SETTING_KEYS = new Set([ +${systemRows.map((r) => ` ${JSON.stringify(r.key)},`).join('\n')} +]); + +export const SUPERADMIN_EDITABLE_SETTING_KEYS = new Set([ +${editableRows.map((r) => ` ${JSON.stringify(r.key)},`).join('\n')} +]); + +export function isSuperAdminSystemSettingKey(key?: string | null): boolean { + const k = String(key || '').trim(); + if (!k) return false; + if (SUPERADMIN_EDITABLE_SETTING_KEYS.has(k)) return false; + return SUPERADMIN_SYSTEM_SETTING_KEYS.has(k); +} +`; + +writeFileSync(join(root, '../controlpanel_user/src/config/superAdminSettingKeys.ts'), `${userTs}\n`); + console.log(`system keys (can_edit=0): ${systemRows.length}`); console.log(`editable keys (can_edit=1): ${editableRows.length}`);