47 lines
1.3 KiB
TypeScript
47 lines
1.3 KiB
TypeScript
import { PrismaClient } from '@prisma/client';
|
||
|
||
const prisma = new PrismaClient();
|
||
|
||
async function main() {
|
||
console.log('🔧 修复重复的赛事活动菜单...\n');
|
||
|
||
// 查找原来的赛事活动菜单(在赛事管理下的,路径是 /contests/activities)
|
||
const oldActivityMenu = await prisma.menu.findFirst({
|
||
where: { path: '/contests/activities' }
|
||
});
|
||
|
||
if (oldActivityMenu) {
|
||
// 把它改回 contest:read 权限,这样只有管理员能看到
|
||
await prisma.menu.update({
|
||
where: { id: oldActivityMenu.id },
|
||
data: { permission: 'contest:read' }
|
||
});
|
||
console.log('✅ 原赛事活动菜单权限更新为 contest:read');
|
||
}
|
||
|
||
// 验证最终结果
|
||
console.log('\n📋 最终菜单配置:');
|
||
const menus = await prisma.menu.findMany({
|
||
where: {
|
||
OR: [
|
||
{ path: '/contests/activities' },
|
||
{ path: '/student-activities' },
|
||
]
|
||
},
|
||
select: { name: true, path: true, permission: true, parentId: true }
|
||
});
|
||
|
||
menus.forEach(m => {
|
||
const type = m.parentId ? '(子菜单)' : '(一级菜单)';
|
||
console.log(` - ${m.name} ${type}`);
|
||
console.log(` 路径: ${m.path}`);
|
||
console.log(` 权限: ${m.permission}`);
|
||
});
|
||
|
||
console.log('\n✅ 修复完成!');
|
||
}
|
||
|
||
main()
|
||
.catch(console.error)
|
||
.finally(() => prisma.$disconnect());
|