refactor: the whole role and permission flow

This commit is contained in:
mahyargdz
2025-02-17 13:54:34 +03:30
parent ad673613d9
commit 763b6b49d9
42 changed files with 479 additions and 387 deletions
+1 -1
View File
@@ -21,7 +21,7 @@ export const seedAdmin = async (dataSource: DataSource, logger: Logger) => {
const roleRepo = dataSource.getRepository(Role);
const userRepo = dataSource.getRepository(User);
const adminRole = await roleRepo.findOneBy({ name: RoleEnum.ADMIN });
const adminRole = await roleRepo.findOneBy({ name: RoleEnum.SUPER_ADMIN });
if (!adminRole) throw new Error("Role not found");
const hashedPassword = await hash(defaultAdmin.password!, 10);
+2 -10
View File
@@ -12,17 +12,9 @@ const permissions = Object.values(PermissionEnum).map((perm) => ({ name: perm })
// Define roles with their default permissions
const rolesWithPermissions: { name: RoleEnum; permissions: PermissionEnum[] }[] = [
{
name: RoleEnum.ADMIN,
name: RoleEnum.SUPER_ADMIN,
permissions: Object.values(PermissionEnum),
},
{
name: RoleEnum.AGENT,
permissions: [PermissionEnum.CUSTOMERS, PermissionEnum.TICKETS, PermissionEnum.TRANSACTIONS],
},
{
name: RoleEnum.DEVELOPER,
permissions: [PermissionEnum.SERVICES, PermissionEnum.LOGS, PermissionEnum.LEARNINGS],
},
{
name: RoleEnum.USER,
permissions: [],
@@ -54,7 +46,7 @@ export const seedPermissionsAndRoles = async (dataSource: DataSource, logger: Lo
let role = await roleRepo.findOne({ where: { name: roleData.name }, relations: ["permissions"] });
if (!role) {
role = roleRepo.create({ name: roleData.name, permissions: [] });
role = roleRepo.create({ name: roleData.name, permissions: [], isAdmin: roleData.name === RoleEnum.SUPER_ADMIN });
}
role.permissions = allPermissions.filter((perm) => roleData.permissions.includes(perm.name as PermissionEnum));