library-picturebook-activity/backend/scripts/update-tenant-menu-permission.ts
2026-01-12 16:06:34 +08:00

79 lines
2.1 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

// 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);
});