118 lines
3.2 KiB
TypeScript
118 lines
3.2 KiB
TypeScript
import { PrismaClient } from '@prisma/client';
|
|
|
|
const prisma = new PrismaClient();
|
|
|
|
async function main() {
|
|
console.log('Adding provider permissions...');
|
|
|
|
// Create provider permissions
|
|
const actions = ['create', 'read', 'update', 'delete'];
|
|
|
|
for (const action of actions) {
|
|
await prisma.permission.upsert({
|
|
where: { resource_action: { resource: 'providers', action } },
|
|
update: {},
|
|
create: { resource: 'providers', action },
|
|
});
|
|
}
|
|
|
|
console.log('Provider permissions created');
|
|
|
|
// Get all provider permissions
|
|
const providerPermissions = await prisma.permission.findMany({
|
|
where: { resource: 'providers' },
|
|
});
|
|
|
|
// Get admin role
|
|
const adminRole = await prisma.role.findUnique({
|
|
where: { name: 'Admin' },
|
|
include: { permissions: true },
|
|
});
|
|
|
|
if (adminRole) {
|
|
// Add provider permissions to admin role if not already assigned
|
|
for (const perm of providerPermissions) {
|
|
const exists = adminRole.permissions.some(rp => rp.permissionId === perm.id);
|
|
if (!exists) {
|
|
await prisma.rolePermission.create({
|
|
data: {
|
|
roleId: adminRole.id,
|
|
permissionId: perm.id,
|
|
},
|
|
});
|
|
console.log(`Added providers:${perm.action} to Admin role`);
|
|
}
|
|
}
|
|
}
|
|
|
|
// Get employee role and add read permission
|
|
const employeeRole = await prisma.role.findUnique({
|
|
where: { name: 'Mitarbeiter' },
|
|
include: { permissions: true },
|
|
});
|
|
|
|
const providerReadPerm = providerPermissions.find(p => p.action === 'read');
|
|
|
|
if (employeeRole && providerReadPerm) {
|
|
const exists = employeeRole.permissions.some(rp => rp.permissionId === providerReadPerm.id);
|
|
if (!exists) {
|
|
await prisma.rolePermission.create({
|
|
data: {
|
|
roleId: employeeRole.id,
|
|
permissionId: providerReadPerm.id,
|
|
},
|
|
});
|
|
console.log('Added providers:read to Mitarbeiter role');
|
|
}
|
|
}
|
|
|
|
// Get read-only role and add read permission
|
|
const readOnlyRole = await prisma.role.findUnique({
|
|
where: { name: 'Mitarbeiter (Nur-Lesen)' },
|
|
include: { permissions: true },
|
|
});
|
|
|
|
if (readOnlyRole && providerReadPerm) {
|
|
const exists = readOnlyRole.permissions.some(rp => rp.permissionId === providerReadPerm.id);
|
|
if (!exists) {
|
|
await prisma.rolePermission.create({
|
|
data: {
|
|
roleId: readOnlyRole.id,
|
|
permissionId: providerReadPerm.id,
|
|
},
|
|
});
|
|
console.log('Added providers:read to Mitarbeiter (Nur-Lesen) role');
|
|
}
|
|
}
|
|
|
|
// Get customer role and add read permission
|
|
const customerRole = await prisma.role.findUnique({
|
|
where: { name: 'Kunde' },
|
|
include: { permissions: true },
|
|
});
|
|
|
|
if (customerRole && providerReadPerm) {
|
|
const exists = customerRole.permissions.some(rp => rp.permissionId === providerReadPerm.id);
|
|
if (!exists) {
|
|
await prisma.rolePermission.create({
|
|
data: {
|
|
roleId: customerRole.id,
|
|
permissionId: providerReadPerm.id,
|
|
},
|
|
});
|
|
console.log('Added providers:read to Kunde role');
|
|
}
|
|
}
|
|
|
|
console.log('Provider permissions setup completed!');
|
|
}
|
|
|
|
main()
|
|
.catch((e) => {
|
|
console.error(e);
|
|
process.exit(1);
|
|
})
|
|
.finally(async () => {
|
|
await prisma.$disconnect();
|
|
});
|