diff --git a/backend/src/controllers/permission.controller.ts b/backend/src/controllers/permission.controller.ts
index 02548e8..dd97e79 100644
--- a/backend/src/controllers/permission.controller.ts
+++ b/backend/src/controllers/permission.controller.ts
@@ -22,11 +22,22 @@ class PermissionController {
permissions = permissionService.getEffectivePermissions(groups);
}
+ const maintenance = permissionService.getMaintenanceFlags();
+
+ logger.debug('GET /api/permissions/me', {
+ email: req.user?.email,
+ groups,
+ isAdmin,
+ permissionsCount: permissions.length,
+ maintenanceWissen: maintenance['wissen'] ?? false,
+ maintenanceAusruestungsanfrage: maintenance['ausruestungsanfrage'] ?? false,
+ });
+
res.json({
success: true,
data: {
permissions,
- maintenance: permissionService.getMaintenanceFlags(),
+ maintenance,
isAdmin,
},
});
diff --git a/backend/src/database/migrations/054_rename_ausruestungsanfrage_labels.sql b/backend/src/database/migrations/054_rename_ausruestungsanfrage_labels.sql
new file mode 100644
index 0000000..299f95b
--- /dev/null
+++ b/backend/src/database/migrations/054_rename_ausruestungsanfrage_labels.sql
@@ -0,0 +1,7 @@
+-- Update feature_groups label
+UPDATE feature_groups SET label = 'Interne Bestellungen' WHERE id = 'ausruestungsanfrage';
+
+-- Update permission descriptions to remove "Shop-" references
+UPDATE permissions SET description = 'Katalog einsehen' WHERE id = 'ausruestungsanfrage:view';
+UPDATE permissions SET description = 'Artikel im Katalog verwalten' WHERE id = 'ausruestungsanfrage:manage_catalog';
+UPDATE permissions SET description = 'Dashboard-Widget für Anfragen' WHERE id = 'ausruestungsanfrage:widget';
diff --git a/frontend/src/components/admin/BestellungenTab.tsx b/frontend/src/components/admin/BestellungenTab.tsx
index fd6c741..54e71d4 100644
--- a/frontend/src/components/admin/BestellungenTab.tsx
+++ b/frontend/src/components/admin/BestellungenTab.tsx
@@ -44,11 +44,11 @@ function BestellungenTab() {
return (
- {/* Pending Ausrüstungsanfragen */}
+ {/* Pending interne Bestellungen */}
{(requests?.length ?? 0) > 0 && (
- Offene Ausrüstungsanfragen ({requests?.length})
+ Offene interne Bestellungen ({requests?.length})
{requestsLoading ? (
diff --git a/frontend/src/components/admin/DataManagementTab.tsx b/frontend/src/components/admin/DataManagementTab.tsx
index f9743cd..d93020e 100644
--- a/frontend/src/components/admin/DataManagementTab.tsx
+++ b/frontend/src/components/admin/DataManagementTab.tsx
@@ -34,7 +34,7 @@ interface ResetSection {
const RESET_SECTIONS: ResetSection[] = [
{ key: 'reset-bestellungen', label: 'Bestellungen zuruecksetzen', description: 'Alle Bestellungen, Positionen, Dateien, Erinnerungen und Historie loeschen und Nummern zuruecksetzen.' },
- { key: 'reset-ausruestung-anfragen', label: 'Ausruestungsanfragen zuruecksetzen', description: 'Alle Ausruestungsanfragen und zugehoerige Positionen loeschen und Nummern zuruecksetzen.' },
+ { key: 'reset-ausruestung-anfragen', label: 'Interne Bestellungen zuruecksetzen', description: 'Alle internen Bestellungen und zugehoerige Positionen loeschen und Nummern zuruecksetzen.' },
{ key: 'reset-issues', label: 'Issues zuruecksetzen', description: 'Alle Issues und Kommentare loeschen und Nummern zuruecksetzen.' },
];
diff --git a/frontend/src/components/chat/ChatPanel.tsx b/frontend/src/components/chat/ChatPanel.tsx
index 1d924f2..7e04fb7 100644
--- a/frontend/src/components/chat/ChatPanel.tsx
+++ b/frontend/src/components/chat/ChatPanel.tsx
@@ -195,7 +195,7 @@ const ChatPanelInner: React.FC = () => {
sx={{
display: { xs: 'none', sm: 'flex' },
flexDirection: 'column',
- width: 56,
+ width: 120,
flexShrink: 0,
borderRight: 1,
borderColor: 'divider',
@@ -207,12 +207,21 @@ const ChatPanelInner: React.FC = () => {
const isSelected = room.token === selectedRoomToken;
return (
- selectRoom(room.token)}
sx={{
- mx: 'auto',
- my: 0.25,
- p: 0.5,
+ display: 'flex',
+ alignItems: 'center',
+ gap: 0.75,
+ px: 1,
+ py: 0.5,
+ cursor: 'pointer',
+ borderRadius: 1,
+ mx: 0.5,
+ bgcolor: isSelected ? 'action.selected' : 'transparent',
+ '&:hover': {
+ bgcolor: isSelected ? 'action.selected' : 'action.hover',
+ },
}}
>
{
>
{room.displayName.substring(0, 2).toUpperCase()}
-
+
+ {room.displayName}
+
+
);
})}
diff --git a/frontend/src/contexts/PermissionContext.tsx b/frontend/src/contexts/PermissionContext.tsx
index 631785f..c911d53 100644
--- a/frontend/src/contexts/PermissionContext.tsx
+++ b/frontend/src/contexts/PermissionContext.tsx
@@ -28,7 +28,7 @@ export const PermissionProvider: React.FC = ({ children
queryKey: ['my-permissions'],
queryFn: permissionsApi.getMyPermissions,
enabled: isAuthenticated,
- staleTime: 5 * 60 * 1000,
+ staleTime: 60 * 1000,
});
const permissions = useMemo(