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
JwtAuthGuardverwenden, akzeptieren Trägerschlüssel JWT und, sofern unterstützt, Benutzerschlüssel API. POST /api/user/profile-pictureist 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
| Methode | Pfad | Zweck | Anfrage oder Anfrage | Auth | Quelle |
|---|---|---|---|---|---|
GET | /api/user/profile | Lesen Sie das aktuelle Benutzerprofil und die Einstellungen. | Keine | JWT oder Benutzerschlüssel API | controllers/user-profile.controller.ts |
POST | /api/user/profile-picture | Laden Sie ein Profilbild hoch und legen Sie es fest. | Mehrteiliges Feld: file | JWT oder Benutzerschlüssel API | controllers/user-profile.controller.ts |
PATCH | /api/user/profile | Aktualisieren Sie Profilfelder und UI-Einstellungen. | Körper: Profilfelder | JWT oder Benutzerschlüssel API | controllers/user-profile.controller.ts |
DELETE | /api/user/event-labels/:label | Entfernen Sie eine gespeicherte Ereignisbezeichnung und entfernen Sie sie aus den Ereignissen des Benutzers. | Pfad: label | JWT oder Benutzerschlüssel API | controllers/user-profile.controller.ts |
PATCH | /api/user/theme | Nur die Designfarbe aktualisieren. | Körper: themeColor | JWT oder Benutzerschlüssel API | controllers/user-profile.controller.ts |
PATCH | /api/user/password | Ändern Sie das Passwort des aktuellen Benutzers. | Körper: currentPassword,newPassword | JWT oder Benutzerschlüssel API | controllers/user-profile.controller.ts |
PATCH | /api/users/me/language | Aktualisieren Sie die bevorzugte UI-Sprache. | Körper: preferredLanguage | JWT oder Benutzerschlüssel API | controllers/user-language.controller.ts |
Session Bootstrap und Sharing-Helfer
| Methode | Pfad | Zweck | Anfrage oder Anfrage | Auth | Quelle |
|---|---|---|---|---|---|
GET | /api/users/me | Lesen Sie die aktuelle Benutzerentität aus dem Benutzerdienst. | Keine | JWT oder Benutzerschlüssel API | users/users.controller.ts |
GET | /api/users | Durchsuchen Sie Benutzer nach Sharing-Flows. | Abfrage: search | JWT oder Benutzerschlüssel API | users/users.controller.ts |
GET | /api/user-permissions | Rufen Sie den aktuellen Berechtigungs-Snapshot ab. | Keine | JWT oder Benutzerschlüssel API | controllers/user-permissions.controller.ts |
GET | /api/user-permissions/accessible-organizations | Listen Sie Organisationen auf, auf die der aktuelle Benutzer zugreifen kann. | Keine | JWT oder Benutzerschlüssel API | controllers/user-permissions.controller.ts |
GET | /api/user-permissions/accessible-reservation-calendars | Listen Sie Reservierungskalender auf, auf die der aktuelle Benutzer zugreifen kann. | Keine | JWT oder Benutzerschlüssel API | controllers/user-permissions.controller.ts |
Fordern Sie Formen an
Profil aktualisieren
UpdateProfileDto in backend-nestjs/src/dto/user-profile.dto.ts
username: optional, mindestens 3 Zeichenemail: optionale, gültige E-MailfirstName: optionale ZeichenfolgelastName: optionale ZeichenfolgeprofilePictureUrl: optionale URL, maximal 2048 ZeichenweekStartDay: optionale Ganzzahl0..6defaultCalendarView: optionalmonth|weektimezone: optionale ZeichenfolgetimeFormat: optional12h|24hlanguage: optionale Aufzählungen|hu|de|frpreferredLanguage: optionale Aufzählungen|hu|de|frhideReservationsTab: optionaler boolescher WerthiddenResourceIds: optionales ZahlenarrayvisibleCalendarIds: optionales ZahlenarrayvisibleResourceTypeIds: optionales ZahlenarrayhiddenFromLiveFocusTags: optionales String-Array, jeweils maximal 64 ZeicheneventLabels: optionales String-Array, jeweils maximal 64 ZeichendefaultTasksCalendarId: optionale Nummer odernull
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.
hiddenFromLiveFocusTagsundeventLabelswerden normalisiert, dedupliziert, gekürzt und auf 100 Elemente begrenzt.defaultTasksCalendarIdkann mitnullgelöscht werden.- Das Ändern von
defaultTasksCalendarIdkann 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#rgboder#rrggbbChangePasswordDto.currentPassword: erforderliche ZeichenfolgeChangePasswordDto.newPassword: erforderlich, mindestens 6 Zeichen
Sprache
UpdateLanguagePreferenceDto.preferredLanguage: erforderliche Enumerationen|hu|de|fr
Benutzersuche
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/profilegibt 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/meist eine einfachere Suche nach aktuellen Benutzern über den Benutzerdienst.PATCH /api/user/passwordgibt nach der Validierung des aktuellen Passworts eine einfache Erfolgsmeldung zurück.DELETE /api/user/event-labels/:labelgibt das entfernte Label, die verbleibenden Labels und die Anzahl der betroffenen Ereignisse zurück.
Best Practices
- Verwenden Sie
GET /api/user/profileals 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/profilesenden; Der Controller führt absichtlich enge Eindeutigkeitsprüfungen durch. - Halten Sie
eventLabelsundhiddenFromLiveFocusTagsauch auf dem Client normalisiert, damit der UI-Status mit den Back-End-Normalisierungsregeln übereinstimmt. - Verwenden Sie
Personal Logs APIfür den Prüfverlauf, anstatt diese Einstellungsendpunkte mit Aktivitätsproblemen zu überlasten.