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