79 lines
2.1 KiB
TypeScript
79 lines
2.1 KiB
TypeScript
|
|
// 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);
|
|||
|
|
});
|