Zum Hauptinhalt springen
Was this helpful?

Benutzer API

Benutzer-, Profil- und Berechtigungsoberfläche

Profildaten, Sprache, Sichtbarkeitseinstellungen und Berechtigungs-Bootstrap verwalten

Diese leiten zurück zum Einstellungsbereich des angemeldeten Benutzers und zu den Hilfs-APIs, die das Frontend verwendet Hydratisieren Sie die aktuelle Sitzung. Sie umfassen keine Benutzerverwaltung nur für Administratoren.

JWT oder Benutzer API SchlüsselMehrteiliger UploadProfileinstellungenBerechtigungs-Bootstrap

Quelle

  • Profilcontroller: backend-nestjs/src/controllers/user-profile.controller.ts
  • Sprachcontroller: backend-nestjs/src/controllers/user-language.controller.ts
  • Berechtigungscontroller: backend-nestjs/src/controllers/user-permissions.controller.ts
  • Benutzercontroller: backend-nestjs/src/users/users.controller.ts
  • DTOs: backend-nestjs/src/dto/user-profile.dto.ts, backend-nestjs/src/users/dto/list-users.query.dto.ts

Authentifizierung und Berechtigungen

  • Alle Routen auf dieser Seite erfordern eine Authentifizierung.
  • Routen, die JwtAuthGuard verwenden, akzeptieren Trägerschlüssel JWT und, sofern unterstützt, Benutzerschlüssel API.
  • POST /api/user/profile-picture ist mit @AllowIncompleteOnboarding() gekennzeichnet, sodass es verwendet werden kann, bevor das Onboarding abgeschlossen ist.
  • Profilschreibvorgänge sind nur auf den authentifizierten Benutzer beschränkt.

Endpunktreferenz

Profil und Einstellungen

MethodePfadZweckAnfrage oder AnfrageAuthQuelle
GET/api/user/profileLesen Sie das aktuelle Benutzerprofil und die Einstellungen.KeineJWT oder Benutzerschlüssel APIcontrollers/user-profile.controller.ts
POST/api/user/profile-pictureLaden Sie ein Profilbild hoch und legen Sie es fest.Mehrteiliges Feld: fileJWT oder Benutzerschlüssel APIcontrollers/user-profile.controller.ts
PATCH/api/user/profileAktualisieren Sie Profilfelder und UI-Einstellungen.Körper: ProfilfelderJWT oder Benutzerschlüssel APIcontrollers/user-profile.controller.ts
DELETE/api/user/event-labels/:labelEntfernen Sie eine gespeicherte Ereignisbezeichnung und entfernen Sie sie aus den Ereignissen des Benutzers.Pfad: labelJWT oder Benutzerschlüssel APIcontrollers/user-profile.controller.ts
PATCH/api/user/themeNur die Designfarbe aktualisieren.Körper: themeColorJWT oder Benutzerschlüssel APIcontrollers/user-profile.controller.ts
PATCH/api/user/passwordÄndern Sie das Passwort des aktuellen Benutzers.Körper: currentPassword,newPasswordJWT oder Benutzerschlüssel APIcontrollers/user-profile.controller.ts
PATCH/api/users/me/languageAktualisieren Sie die bevorzugte UI-Sprache.Körper: preferredLanguageJWT oder Benutzerschlüssel APIcontrollers/user-language.controller.ts

Session Bootstrap und Sharing-Helfer

MethodePfadZweckAnfrage oder AnfrageAuthQuelle
GET/api/users/meLesen Sie die aktuelle Benutzerentität aus dem Benutzerdienst.KeineJWT oder Benutzerschlüssel APIusers/users.controller.ts
GET/api/usersDurchsuchen Sie Benutzer nach Sharing-Flows.Abfrage: searchJWT oder Benutzerschlüssel APIusers/users.controller.ts
GET/api/user-permissionsRufen Sie den aktuellen Berechtigungs-Snapshot ab.KeineJWT oder Benutzerschlüssel APIcontrollers/user-permissions.controller.ts
GET/api/user-permissions/accessible-organizationsListen Sie Organisationen auf, auf die der aktuelle Benutzer zugreifen kann.KeineJWT oder Benutzerschlüssel APIcontrollers/user-permissions.controller.ts
GET/api/user-permissions/accessible-reservation-calendarsListen Sie Reservierungskalender auf, auf die der aktuelle Benutzer zugreifen kann.KeineJWT oder Benutzerschlüssel APIcontrollers/user-permissions.controller.ts

Fordern Sie Formen an

Profil aktualisieren

UpdateProfileDto in backend-nestjs/src/dto/user-profile.dto.ts

  • username: optional, mindestens 3 Zeichen
  • email: optionale, gültige E-Mail
  • firstName: optionale Zeichenfolge
  • lastName: optionale Zeichenfolge
  • profilePictureUrl: optionale URL, maximal 2048 Zeichen
  • weekStartDay: optionale Ganzzahl 0..6
  • defaultCalendarView: optional month|week
  • timezone: optionale Zeichenfolge
  • timeFormat: optional 12h|24h
  • language: optionale Aufzählung en|hu|de|fr
  • preferredLanguage: optionale Aufzählung en|hu|de|fr
  • hideReservationsTab: optionaler boolescher Wert
  • hiddenResourceIds: optionales Zahlenarray
  • visibleCalendarIds: optionales Zahlenarray
  • visibleResourceTypeIds: optionales Zahlenarray
  • hiddenFromLiveFocusTags: optionales String-Array, jeweils maximal 64 Zeichen
  • eventLabels: optionales String-Array, jeweils maximal 64 Zeichen
  • defaultTasksCalendarId: optionale Nummer oder null

Implementierungsverhalten des Controllers:

  • Die Eindeutigkeit von Benutzername und E-Mail wird nur dann erneut überprüft, wenn sich diese Felder tatsächlich geändert haben.
  • hiddenFromLiveFocusTags und eventLabels werden normalisiert, dedupliziert, gekürzt und auf 100 Elemente begrenzt.
  • defaultTasksCalendarId kann mit null gelöscht werden.
  • Das Ändern von defaultTasksCalendarId kann bei Aufgaben mit Fälligkeitsdatum eine Neusynchronisierung der Aufgabe mit dem Kalender auslösen.

Profilbild hochladen

Durchgesetzte Regeln in backend-nestjs/src/controllers/user-profile.controller.ts

  • Feldname: file
  • Zulässige MIME-Typen: image/jpeg, image/png, image/gif, image/webp
  • maximale Dateigröße: 2MB

Thema und Passwort

  • UpdateThemeDto.themeColor: optionaler Hex-String #rgb oder #rrggbb
  • ChangePasswordDto.currentPassword: erforderliche Zeichenfolge
  • ChangePasswordDto.newPassword: erforderlich, mindestens 6 Zeichen

Sprache

  • UpdateLanguagePreferenceDto.preferredLanguage: erforderliche Enumeration en|hu|de|fr
  • ListUsersQueryDto.search: optionaler sicherer Text, maximal 80 Zeichen

Beispielanrufe

Profileinstellungen aktualisieren

curl -X PATCH "$PRIMECAL_API/api/user/profile" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"timezone": "Europe/Budapest",
"timeFormat": "24h",
"weekStartDay": 1,
"visibleCalendarIds": [2, 3, 5],
"hiddenFromLiveFocusTags": ["no_focus", "private"],
"defaultTasksCalendarId": 7
}'

Laden Sie ein Profilbild hoch

curl -X POST "$PRIMECAL_API/api/user/profile-picture" \
-H "Authorization: Bearer $TOKEN" \
-F "file=@C:/tmp/avatar.webp"

Suchen Sie nach Benutzern zum Teilen

curl "$PRIMECAL_API/api/users?search=justin" \
-H "Authorization: Bearer $TOKEN"

Bootstrap-Benutzeroberfläche mit Berechtigungserkennung

curl "$PRIMECAL_API/api/user-permissions" \
-H "Authorization: Bearer $TOKEN"

Antwortnotizen

  • GET /api/user/profile gibt die umfassendste Nutzlast für Benutzereinstellungen zurück, einschließlich Sichtbarkeitseinstellungen, versteckter Live-Fokus-Tags, Ereignisbezeichnungen, Onboarding-Status und Informationen zur Akzeptanz von Datenschutzrichtlinien.
  • GET /api/users/me ist eine einfachere Suche nach aktuellen Benutzern über den Benutzerdienst.
  • PATCH /api/user/password gibt nach der Validierung des aktuellen Passworts eine einfache Erfolgsmeldung zurück.
  • DELETE /api/user/event-labels/:label gibt das entfernte Label, die verbleibenden Labels und die Anzahl der betroffenen Ereignisse zurück.

Best Practices

  • Verwenden Sie GET /api/user/profile als primäre Bootstrap-Route für die Einstellungen.
  • Verwenden Sie GET /api/user-permissions, bevor Sie Reservierungen, Organisationseinstellungen oder rollensensitive Benutzeroberflächen rendern.
  • Nur geänderte Felder in PATCH /api/user/profile senden; Der Controller führt absichtlich enge Eindeutigkeitsprüfungen durch.
  • Halten Sie eventLabels und hiddenFromLiveFocusTags auch auf dem Client normalisiert, damit der UI-Status mit den Back-End-Normalisierungsregeln übereinstimmt.
  • Verwenden Sie Personal Logs API für den Prüfverlauf, anstatt diese Einstellungsendpunkte mit Aktivitätsproblemen zu überlasten.