import { PermissionGuardService } from '../services'; import { UserPermission } from '../interfaces'; import { UserProjectRoleAccountServiceResponse } from '../models/dto'; import { GetProjectPermissionRequestDto } from '../models/dto'; import { AclResourcePermissions } from '../interfaces'; export class AuthorizationUtil { public static addSystemPermissionToDictionary(userPermissions: UserPermission, systemPermissions: string[]): void { userPermissions[PermissionGuardService.SYSTEM_KEY] = {}; for (const permission of systemPermissions) { if (!userPermissions[PermissionGuardService.SYSTEM_KEY][permission]) { userPermissions[PermissionGuardService.SYSTEM_KEY][permission] = true; } } } public static getProjectRoleIdsByProjectShortId(userProjectRoleResponseDto: UserProjectRoleAccountServiceResponse[]): GetProjectPermissionRequestDto { const projectRoleMap: Map> = new Map(); const projectIndexResult: Map = new Map(); const result: GetProjectPermissionRequestDto = { projects: [] }; for (const userProjectRole of userProjectRoleResponseDto) { if (!projectRoleMap.has(userProjectRole.project_short_id)) { projectRoleMap.set(userProjectRole.project_short_id, new Set()); projectIndexResult.set(userProjectRole.project_short_id, result.projects.length); result.projects.push({ project_short_id: userProjectRole.project_short_id, role_ids: [] }); } if (!projectRoleMap.get(userProjectRole.project_short_id).has(userProjectRole.role_id)) { projectRoleMap.get(userProjectRole.project_short_id).add(userProjectRole.role_id); result.projects[projectIndexResult.get(userProjectRole.project_short_id)].role_ids.push(userProjectRole.role_id); } } return result; } public static addAclPermissionToDictionary(userPermissions: UserPermission, aclResourcePermissions: AclResourcePermissions, resourcesIds: string): void { userPermissions[PermissionGuardService.ACL_KEY] = {}; for (const key in aclResourcePermissions) { if (aclResourcePermissions.hasOwnProperty(key)) { if (resourcesIds) { userPermissions[PermissionGuardService.ACL_KEY][key] = {}; } for (const permission of aclResourcePermissions[key]) { if (resourcesIds) { if (!userPermissions[PermissionGuardService.ACL_KEY][key][permission]) { userPermissions[PermissionGuardService.ACL_KEY][key][permission] = true; } } else { if (!userPermissions[PermissionGuardService.ACL_KEY][permission]) { userPermissions[PermissionGuardService.ACL_KEY][permission] = true; } } } } } } }