import { Container, Box, Typography, Avatar, Grid, TextField, Card, CardContent, Divider, Chip, } from '@mui/material'; import { Person, Email, Badge, Group, AccessTime } from '@mui/icons-material'; import { useAuth } from '../contexts/AuthContext'; import DashboardLayout from '../components/dashboard/DashboardLayout'; function Profile() { const { user } = useAuth(); if (!user) { return null; } // Get initials for large avatar const getInitials = () => { const initials = (user.given_name?.[0] || '') + (user.family_name?.[0] || ''); return initials || user.name?.[0] || '?'; }; // Format date (if we had lastLogin) const formatDate = (date?: Date | string) => { if (!date) return 'Nicht verfügbar'; const d = typeof date === 'string' ? new Date(date) : date; return d.toLocaleDateString('de-DE', { year: 'numeric', month: 'long', day: 'numeric', hour: '2-digit', minute: '2-digit', }); }; const dashboardGroups = (user.groups ?? []).filter((g) => g.startsWith('dashboard_')); return ( Mein Profil {/* User Info Card */} {getInitials()} {user.name} {user.email} {user.preferred_username && ( @{user.preferred_username} )} {/* Groups/Roles */} {dashboardGroups.length > 0 && ( Gruppen {dashboardGroups.map((group) => { const name = group.replace(/^dashboard_/, ''); const label = name.charAt(0).toUpperCase() + name.slice(1); return ; })} )} {/* Personal Information */} Persönliche Informationen ), }} variant="outlined" /> ), }} variant="outlined" /> ), }} variant="outlined" helperText="E-Mail-Adresse wird von Authentik verwaltet" /> {user.preferred_username && ( ), }} variant="outlined" /> )} Diese Informationen werden von Authentik verwaltet und können hier nicht bearbeitet werden. Bitte wenden Sie sich an Ihren Administrator, um Änderungen vorzunehmen. {/* Activity Information */} Aktivitätsinformationen Letzte Anmeldung {formatDate(new Date())} {/* User Preferences */} Benutzereinstellungen Kommende Features: Benachrichtigungseinstellungen, Anzeigeoptionen, Spracheinstellungen ); } export default Profile;