47 lines
1.4 KiB
TypeScript
47 lines
1.4 KiB
TypeScript
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());
|