From 44283cd5c2af20bce48307ee864c030138cedec0 Mon Sep 17 00:00:00 2001 From: ValueOn AG Date: Tue, 10 Feb 2026 01:44:28 +0100 Subject: [PATCH] fixed mandate routing --- src/api/featuresApi.ts | 2 +- src/hooks/useUserMandates.ts | 15 ++++----------- .../admin/AdminMandateRolePermissionsPage.tsx | 2 +- src/pages/admin/AdminUserAccessOverviewPage.tsx | 2 +- src/pages/billing/BillingAdmin.tsx | 2 +- 5 files changed, 8 insertions(+), 15 deletions(-) diff --git a/src/api/featuresApi.ts b/src/api/featuresApi.ts index f6eb298..0e29e09 100644 --- a/src/api/featuresApi.ts +++ b/src/api/featuresApi.ts @@ -189,7 +189,7 @@ export async function fetchMyFeatures(): Promise { if (feature.code === 'chatbot') { console.log('🔍 [DEBUG] featuresApi: Found chatbot feature', { mandateId: mandate.id, - mandateName: mandate.name, + mandateName: mandate.label || mandate.name, featureCode: feature.code, instanceCount: feature.instances.length, }); diff --git a/src/hooks/useUserMandates.ts b/src/hooks/useUserMandates.ts index f52b6f3..1d7c666 100644 --- a/src/hooks/useUserMandates.ts +++ b/src/hooks/useUserMandates.ts @@ -235,23 +235,16 @@ export function useUserMandates() { */ const fetchRoles = useCallback(async (mandateId?: string): Promise => { try { - const response = await api.get('/api/rbac/roles'); + // Fetch roles server-side filtered by mandate (or templates if no mandateId) + const params = mandateId ? { mandateId } : {}; + const response = await api.get('/api/rbac/roles', { params }); let roles: Role[] = []; if (response.data?.items && Array.isArray(response.data.items)) { roles = response.data.items; } else if (Array.isArray(response.data)) { roles = response.data; } - - // Only mandate-instance roles (mandateId matches, no featureInstanceId) - // Global templates (mandateId=null) are NOT assignable to users - if (mandateId) { - return roles.filter(r => - !r.featureInstanceId && r.mandateId === mandateId - ); - } - // Without mandateId, no roles available (roles are always mandate-specific) - return []; + return roles; } catch (err: any) { console.error('Error fetching roles:', err); return []; diff --git a/src/pages/admin/AdminMandateRolePermissionsPage.tsx b/src/pages/admin/AdminMandateRolePermissionsPage.tsx index b54ebc1..5d1bfff 100644 --- a/src/pages/admin/AdminMandateRolePermissionsPage.tsx +++ b/src/pages/admin/AdminMandateRolePermissionsPage.tsx @@ -252,7 +252,7 @@ export const AdminMandateRolePermissionsPage: React.FC = () => { > {mandates.map(mandate => ( ))} diff --git a/src/pages/admin/AdminUserAccessOverviewPage.tsx b/src/pages/admin/AdminUserAccessOverviewPage.tsx index 9416c86..d4fd3bd 100644 --- a/src/pages/admin/AdminUserAccessOverviewPage.tsx +++ b/src/pages/admin/AdminUserAccessOverviewPage.tsx @@ -197,7 +197,7 @@ export const AdminUserAccessOverviewPage: React.FC = () => { >
{expandedMandates.has(mandate.id) ? : } - {mandate.name} + {mandate.label || mandate.name} {mandate.featureInstances.length} Feature-Instanz(en) diff --git a/src/pages/billing/BillingAdmin.tsx b/src/pages/billing/BillingAdmin.tsx index 416bd70..92a5825 100644 --- a/src/pages/billing/BillingAdmin.tsx +++ b/src/pages/billing/BillingAdmin.tsx @@ -36,7 +36,7 @@ const MandateSelector: React.FC = ({ selectedMandateId, on {mandates.map((mandate) => ( ))}