refactor: the whole role and permission flow
This commit is contained in:
@@ -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);
|
||||
|
||||
@@ -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));
|
||||
|
||||
Reference in New Issue
Block a user