=> {
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) => (
))}