Files
wgenerator/docs/pages/user-info.md
T
2026-05-15 11:03:02 +02:00

40 lines
2.0 KiB
Markdown

# Benutzerprofil
## Route
`/user/info`
## Zweck
Die Seite zeigt das Profil des angemeldeten Benutzers, dessen Rollen und persönliche Anzeigeeinstellungen. Administratoren sehen zusätzlich die Benutzerverwaltung.
## Datenquellen
- `InfoComponent` liest den aktuellen Benutzer über `UserService.user$`.
- Änderungen an Benutzerdaten werden über `UserService.update$(uid, data)` in `users/{uid}` gespeichert.
- Die Admin-Liste verwendet `UsersComponent`, `UserComponent` und `UserService.list$()` für alle Benutzer.
## UI
Im Profilbereich werden Begrüßung, Rollenanzeige und die bevorzugte Akkordanzeige dargestellt. Die Akkordanzeige ist ein Auswahlfeld mit den Werten leer, `hide`, `onlyFirst` und `show`.
Für Administratoren erscheint zusätzlich eine Karte `registrierte Benutzer`. Jeder Listeneintrag kann angeklickt werden und wechselt dann in einen Bearbeitungsmodus mit Namensfeld und Mehrfachauswahl für Rollen.
## Aktionen
- Akkordmodus ändern: speichert `chordMode` direkt am aktuellen Benutzer.
- Abmelden: navigiert nach `../logout`.
- Benutzer bearbeiten: Administratoren können Namen und Rollen einzelner Benutzer ändern.
- Bearbeitung schließen: beendet den Bearbeitungsmodus des Benutzerlisteneintrags.
## Rollen und Berechtigungen
Die Route ist durch `AuthGuard` geschützt und setzt einen angemeldeten Benutzer voraus. Die Benutzerverwaltung wird über `*appRole="['admin']"` nur für Administratoren angezeigt. In `RoleDirective` gilt `admin` als Vollberechtigung; andere Rollen werden gegen die angeforderte Rollenliste geprüft.
## Technische Hinweise
- Rollen werden als semikolongetrennter String im Feld `role` gespeichert und für die UI in Arrays umgewandelt.
- Verfügbare Rollen kommen aus `ROLE_TYPES`: `admin`, `user`, `member`, `leader`, `presenter`, `contributor`.
- Die Rollenanzeige nutzt `RolePipe`; bei fehlenden Rollen erscheint ein Warnhinweis.
- Die Methode `transdormUserRoles` enthält einen Schreibfehler im Namen, ist aber die aktuell verwendete UI-Hilfsmethode.