import { PrismaClient } from '@prisma/client'; const prisma = new PrismaClient(); async function main() { const studentRole = await prisma.role.findFirst({ where: { code: 'student' } }); if (!studentRole) { console.log('未找到学生角色'); return; } // 需要的权限 const neededPerms = ['workbench:read', 'homework:read', 'contest:activity:read']; for (const permCode of neededPerms) { const perm = await prisma.permission.findFirst({ where: { tenantId: studentRole.tenantId, code: permCode } }); if (perm) { const existing = await prisma.rolePermission.findFirst({ where: { roleId: studentRole.id, permissionId: perm.id } }); if (!existing) { await prisma.rolePermission.create({ data: { roleId: studentRole.id, permissionId: perm.id } }); console.log(`✅ 已添加: ${permCode}`); } else { console.log(`⏭️ 已存在: ${permCode}`); } } else { console.log(`❌ 权限不存在: ${permCode}`); } } // 显示最终权限 const perms = await prisma.rolePermission.findMany({ where: { roleId: studentRole.id }, include: { permission: true } }); console.log('\n📋 学生最终权限:'); perms.forEach(p => console.log(` - ${p.permission.code}: ${p.permission.name}`)); } main().catch(console.error).finally(() => prisma.$disconnect());