export const Permission = { MANAGE_ALL: 'MANAGE_ALL', PROCESS_MANUALLY: 'PROCESS_MANUALLY', VIEW_MAIL: 'VIEW_MAIL', VIEW_INBOX: 'VIEW_INBOX', VIEW_SCANNER: 'VIEW_SCANNER', MANAGE_SETTINGS: 'MANAGE_SETTINGS', VIEW_FREIGABE: 'VIEW_FREIGABE', VIEW_ZAHLUNG: 'VIEW_ZAHLUNG', } as const; export type Permission = (typeof Permission)[keyof typeof Permission]; export function mapGroupsToPermissions( groups: string[] | undefined | null, ): Permission[] { const permissions = new Set(); if (!groups || !Array.isArray(groups)) { return []; } if (groups.includes('PM_Admin')) { permissions.add(Permission.MANAGE_ALL); permissions.add(Permission.PROCESS_MANUALLY); permissions.add(Permission.VIEW_MAIL); permissions.add(Permission.VIEW_INBOX); permissions.add(Permission.VIEW_SCANNER); permissions.add(Permission.MANAGE_SETTINGS); permissions.add(Permission.VIEW_FREIGABE); permissions.add(Permission.VIEW_ZAHLUNG); return Array.from(permissions); } if (groups.includes('PM_Belege')) permissions.add(Permission.PROCESS_MANUALLY); if (groups.includes('PM_Maileingang')) permissions.add(Permission.VIEW_MAIL); if (groups.includes('PM_Posteingang')) permissions.add(Permission.VIEW_INBOX); if (groups.includes('PM_Scanner')) permissions.add(Permission.VIEW_SCANNER); if (groups.includes('PM_Freigabe')) permissions.add(Permission.VIEW_FREIGABE); if (groups.includes('PM_Zahlung')) permissions.add(Permission.VIEW_ZAHLUNG); return Array.from(permissions); }