import type { PermissionType } from "@/@types/types/permission.types"; import type { IPermission } from "@/models/permission.model"; import { PermissionAdapter } from "./permission-services.adapter"; import type { Permission, PermissonResponse, } from "./permission-services.types"; export const permissionResultSerializer = ( data: PermissonResponse, ): { success: boolean; permissions: IPermission[]; } => { const { AllowPermission, DenyPermission } = data; const permissions: IPermission[] = []; function mappingPermission( permission: PermissonResponse["AllowPermission" | "DenyPermission"], type: keyof typeof PermissionType, ) { if (permission && permission.length > 0) { permission.forEach((permissionsItem: Permission[]) => { permissionsItem.forEach((permissionItem: Permission) => { if (permissionItem.PermissionPath) { const adaptedPerm = PermissionAdapter( permissionItem.PermissionPath, type, ); permissions.push(adaptedPerm); } }); }); } } mappingPermission(AllowPermission, "Allow"); mappingPermission(DenyPermission, "Deny"); return { success: true, permissions, }; };