diff --git a/src/App.tsx b/src/App.tsx
index 81b8c58..00018db 100644
--- a/src/App.tsx
+++ b/src/App.tsx
@@ -36,7 +36,7 @@ import { DashboardPage } from './pages/Dashboard';
import { SettingsPage } from './pages/Settings';
import { GDPRPage } from './pages/GDPR';
import { FeatureViewPage } from './pages/FeatureView';
-import { AdminMandatesPage, AdminUsersPage, AdminUserMandatesPage, AdminFeatureAccessPage, AdminInvitationsPage, AdminFeatureRolesPage, AdminFeatureInstanceUsersPage, AdminMandateRolesPage, AdminMandateRolePermissionsPage, AdminUserAccessOverviewPage } from './pages/admin';
+import { AdminMandatesPage, AdminUsersPage, AdminUserMandatesPage, AdminFeatureAccessPage, AdminInvitationsPage, AdminFeatureRolesPage, AdminFeatureInstanceUsersPage, AdminMandateRolesPage, AdminMandateRolePermissionsPage, AdminUserAccessOverviewPage, AccessManagementHub } from './pages/admin';
import { PlaygroundPage, WorkflowsPage, AutomationsPage } from './pages/workflows';
import { PromptsPage, FilesPage, ConnectionsPage } from './pages/basedata';
function App() {
@@ -163,6 +163,7 @@ function App() {
} />
} />
} />
+ } />
} />
} />
} />
diff --git a/src/hooks/useFeatureAccess.ts b/src/hooks/useFeatureAccess.ts
index a8b8cd7..739c022 100644
--- a/src/hooks/useFeatureAccess.ts
+++ b/src/hooks/useFeatureAccess.ts
@@ -102,7 +102,15 @@ export function useFeatureAccess() {
setError(null);
try {
const response = await api.get('/api/features/');
- const data = Array.isArray(response.data) ? response.data : [];
+ // Handle different API response formats (array, {items}, {data})
+ let data: Feature[] = [];
+ if (Array.isArray(response.data)) {
+ data = response.data;
+ } else if (response.data?.items && Array.isArray(response.data.items)) {
+ data = response.data.items;
+ } else if (response.data?.data && Array.isArray(response.data.data)) {
+ data = response.data.data;
+ }
setFeatures(data);
return data;
} catch (err: any) {
diff --git a/src/pages/admin/AdminFeatureAccessPage.tsx b/src/pages/admin/AdminFeatureAccessPage.tsx
index af99f07..1f7c83c 100644
--- a/src/pages/admin/AdminFeatureAccessPage.tsx
+++ b/src/pages/admin/AdminFeatureAccessPage.tsx
@@ -390,6 +390,7 @@ export const AdminFeatureAccessPage: React.FC = () => {
className={styles.primaryButton}
onClick={() => setShowCreateModal(true)}
disabled={features.length === 0}
+ title={features.length === 0 ? 'Keine Features verfügbar. Bitte laden Sie die Seite neu oder prüfen Sie die Konsole auf Fehler.' : undefined}
>
Neue Instanz
@@ -397,8 +398,8 @@ export const AdminFeatureAccessPage: React.FC = () => {
)}
- {/* Available Features Info */}
- {features.length > 0 && (
+ {/* Available Features Info / Empty Features Warning */}
+ {features.length > 0 ? (
Verfügbare Features:
@@ -409,7 +410,23 @@ export const AdminFeatureAccessPage: React.FC = () => {
))}
- )}
+ ) : selectedMandateId && !loading ? (
+
+
+
+ Keine Features geladen.
+ {error ? ` Fehler: ${error}` : ' Die API hat keine Features zurückgegeben.'}
+ {' '}Öffnen Sie die Browser-Konsole (F12) und prüfen Sie den Netzwerk-Tab für /api/features/
+
+ fetchFeatures()}
+ style={{ marginLeft: '1rem' }}
+ >
+ Features erneut laden
+
+
+ ) : null}
{/* Content */}
{!selectedMandateId ? (
@@ -436,6 +453,7 @@ export const AdminFeatureAccessPage: React.FC = () => {
className={styles.primaryButton}
onClick={() => setShowCreateModal(true)}
disabled={features.length === 0}
+ title={features.length === 0 ? 'Keine Features verfügbar. Bitte laden Sie die Features erneut.' : undefined}
>
Erste Instanz erstellen