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 <cursoragent@cursor.com>
This commit is contained in:
2026-08-19 18:49:08 +03:30
co-authored by Cursor
parent 71d6f6a534
commit e287f8a54f
@@ -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<string>([
${systemRows.map((r) => ` ${JSON.stringify(r.key)},`).join('\n')}
]);
export const SUPERADMIN_EDITABLE_SETTING_KEYS = new Set<string>([
${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}`);