library-picturebook-activity/backend/scripts/fix-student-perm.ts

47 lines
1.4 KiB
TypeScript
Raw Normal View History

2026-01-09 18:14:35 +08:00
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());