library-picturebook-activity/backend/scripts/assign-homework-permissions.ts

55 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() {
console.log('🔍 查询角色和权限...');
// 获取所有角色
const roles = await prisma.role.findMany({
select: { id: true, name: true, code: true, tenantId: true }
});
console.log('角色:', roles);
// 获取 homework 权限
const homeworkPerms = await prisma.permission.findMany({
where: { resource: 'homework' },
select: { id: true, code: true, tenantId: true }
});
console.log('Homework 权限:', homeworkPerms);
// 为每个角色分配所有 homework 权限
for (const role of roles) {
console.log(`\n🔐 为角色 "${role.name}" 分配权限...`);
const permsForTenant = homeworkPerms.filter(p => p.tenantId === role.tenantId);
for (const perm of permsForTenant) {
const existing = await prisma.rolePermission.findFirst({
where: {
roleId: role.id,
permissionId: perm.id,
}
});
if (!existing) {
await prisma.rolePermission.create({
data: {
roleId: role.id,
permissionId: perm.id,
}
});
console.log(` ✅ 已分配 ${perm.code}`);
} else {
console.log(` ⏭️ ${perm.code} 已分配`);
}
}
}
console.log('\n✅ 权限分配完成!请重新登录以刷新权限。');
}
main()
.catch(console.error)
.finally(() => prisma.$disconnect());