// eslint-disable-next-line @typescript-eslint/ban-ts-comment // @ts-nocheck import * as dotenv from 'dotenv'; import * as path from 'path'; const nodeEnv = process.env.NODE_ENV || 'development'; const envFile = `.env.${nodeEnv}`; const backendDir = path.resolve(__dirname, '..'); const envPath = path.resolve(backendDir, envFile); dotenv.config({ path: envPath }); if (!process.env.DATABASE_URL) { dotenv.config({ path: path.resolve(backendDir, '.env') }); } if (!process.env.DATABASE_URL) { console.error('DATABASE_URL not found'); process.exit(1); } import { PrismaClient } from '@prisma/client'; const prisma = new PrismaClient(); async function updateTenantMenuPermission() { try { console.log('🚀 开始更新租户管理菜单权限...\n'); // 查找租户管理菜单 const tenantMenu = await prisma.menu.findFirst({ where: { name: '租户管理', path: '/system/tenants', }, }); if (!tenantMenu) { console.log('❌ 租户管理菜单不存在'); return; } console.log(`找到租户管理菜单: ID=${tenantMenu.id}, 当前权限=${tenantMenu.permission}`); if (tenantMenu.permission === 'tenant:update') { console.log('✅ 菜单权限已经是 tenant:update,无需更新'); return; } // 更新菜单权限 await prisma.menu.update({ where: { id: tenantMenu.id }, data: { permission: 'tenant:update', }, }); console.log('✅ 菜单权限已更新为 tenant:update'); console.log('\n说明:'); console.log(' - 普通租户只有 tenant:read 权限,可以读取租户列表(用于发布赛事选择公开范围)'); console.log(' - 只有超级租户才有 tenant:update 权限,才能看到租户管理菜单'); } catch (error) { console.error('❌ 更新失败:', error); throw error; } finally { await prisma.$disconnect(); } } updateTenantMenuPermission() .then(() => { console.log('\n🎉 脚本执行完成!'); process.exit(0); }) .catch((error) => { console.error('\n💥 脚本执行失败:', error); process.exit(1); });