Aller au contenu principal
Was this helpful?

Utilisateur API

Surface utilisateur, profil et autorisation

Gérer les données de profil, la langue, les préférences de visibilité et l'amorçage des autorisations

Ces itinéraires renvoient à la zone des paramètres de l'utilisateur connecté et aux API d'assistance que le frontend utilise pour hydrater la séance en cours. Ils n'incluent pas la gestion des utilisateurs réservée aux administrateurs.

JWT ou clé utilisateur APITéléchargement partitionnéPréférences de profilAmorçage des autorisations

Source

  • Contrôleur de profil : backend-nestjs/src/controllers/user-profile.controller.ts
  • Contrôleur de langue : backend-nestjs/src/controllers/user-language.controller.ts
  • Contrôleur d'autorisations : backend-nestjs/src/controllers/user-permissions.controller.ts
  • Contrôleur des utilisateurs : backend-nestjs/src/users/users.controller.ts
  • DTO : backend-nestjs/src/dto/user-profile.dto.ts, backend-nestjs/src/users/dto/list-users.query.dto.ts

Authentification et autorisations

  • Tous les itinéraires sur cette page nécessitent une authentification.
  • Les routes utilisant JwtAuthGuard acceptent les clés du porteur JWT et, lorsqu'elles sont prises en charge, les clés de l'utilisateur API.
  • POST /api/user/profile-picture est marqué par @AllowIncompleteOnboarding(), il peut donc être utilisé avant la fin de l'intégration.
  • Les écritures de profil s'appliquent uniquement à l'utilisateur authentifié.

Référence du point de terminaison

Profil et paramètres

MéthodeCheminObjectifDemande ou requêteAuthentificationSource
GET/api/user/profileLisez le profil utilisateur et les paramètres actuels.AucunClé JWT ou utilisateur APIcontrollers/user-profile.controller.ts
POST/api/user/profile-pictureTéléchargez et définissez une photo de profil.Champ en plusieurs parties : fileClé JWT ou utilisateur APIcontrollers/user-profile.controller.ts
PATCH/api/user/profileMettez à jour les champs de profil et les préférences de l'interface utilisateur.Corps : champs de profilClé JWT ou utilisateur APIcontrollers/user-profile.controller.ts
DELETE/api/user/event-labels/:labelSupprimez une étiquette d'événement enregistrée et supprimez-la des événements de l'utilisateur.Chemin : labelClé JWT ou utilisateur APIcontrollers/user-profile.controller.ts
PATCH/api/user/themeMettez à jour la couleur du thème uniquement.Corps : themeColorClé JWT ou utilisateur APIcontrollers/user-profile.controller.ts
PATCH/api/user/passwordChangez le mot de passe de l'utilisateur actuel.Corps : currentPassword,newPasswordClé JWT ou utilisateur APIcontrollers/user-profile.controller.ts
PATCH/api/users/me/languageMettez à jour la langue préférée de l'interface utilisateur.Corps : preferredLanguageClé JWT ou utilisateur APIcontrollers/user-language.controller.ts

Assistants d'amorçage de session et de partage

MéthodeCheminObjectifDemande ou requêteAuthentificationSource
GET/api/users/meLisez l'entité utilisateur actuelle à partir du service utilisateurs.AucunClé JWT ou utilisateur APIusers/users.controller.ts
GET/api/usersRecherchez des utilisateurs pour partager des flux.Requête : searchClé JWT ou utilisateur APIusers/users.controller.ts
GET/api/user-permissionsObtenez l’instantané d’autorisation actuel.AucunClé JWT ou utilisateur APIcontrollers/user-permissions.controller.ts
GET/api/user-permissions/accessible-organizationsRépertoriez les organisations accessibles à l’utilisateur actuel.AucunClé JWT ou utilisateur APIcontrollers/user-permissions.controller.ts
GET/api/user-permissions/accessible-reservation-calendarsRépertoriez les calendriers de réservation accessibles à l'utilisateur actuel.AucunClé JWT ou utilisateur APIcontrollers/user-permissions.controller.ts

Demander des formes

Mettre à jour le profil

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

  • username : facultatif, minimum 3 caractères
  • email : e-mail facultatif et valide
  • firstName : chaîne facultative
  • lastName : chaîne facultative
  • profilePictureUrl : URL facultative, maximum 2 048 caractères
  • weekStartDay : entier facultatif 0..6
  • defaultCalendarView : month|week facultatif
  • timezone : chaîne facultative
  • timeFormat : 12h|24h facultatif
  • language : énumération facultative en|hu|de|fr
  • preferredLanguage : énumération facultative en|hu|de|fr
  • hideReservationsTab : booléen facultatif
  • hiddenResourceIds : tableau de nombres facultatif
  • visibleCalendarIds : tableau de nombres facultatif
  • visibleResourceTypeIds : tableau de nombres facultatif
  • hiddenFromLiveFocusTags : tableau de chaînes facultatif, maximum 64 caractères chacun
  • eventLabels : tableau de chaînes facultatif, maximum 64 caractères chacun
  • defaultTasksCalendarId : numéro optionnel ou null

Comportement d'implémentation du contrôleur :

  • L’unicité du nom d’utilisateur et de l’e-mail est revérifiée uniquement si ces champs ont réellement changé.
  • hiddenFromLiveFocusTags et eventLabels sont normalisés, dédupliqués, rognés et limités à 100 éléments.
  • defaultTasksCalendarId peut être effacé avec null.
  • La modification de defaultTasksCalendarId peut déclencher des resynchronisations tâche-calendrier pour les tâches avec des dates d'échéance.

Téléchargement de la photo de profil

Règles appliquées dans backend-nestjs/src/controllers/user-profile.controller.ts

  • nom du champ : file
  • Types MIME autorisés : image/jpeg, image/png, image/gif, image/webp
  • taille maximale du fichier : 2MB

Thème et mot de passe

  • UpdateThemeDto.themeColor : chaîne hexadécimale facultative #rgb ou #rrggbb
  • ChangePasswordDto.currentPassword : chaîne obligatoire
  • ChangePasswordDto.newPassword : obligatoire, minimum 6 caractères

Langue

  • UpdateLanguagePreferenceDto.preferredLanguage : énumération requise en|hu|de|fr
  • ListUsersQueryDto.search : texte sécurisé facultatif, 80 caractères maximum

Exemples d'appels

Mettre à jour les préférences du profil

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
}'

Téléchargez une photo de profil

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

Rechercher des utilisateurs pour le partage

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

Interface utilisateur prenant en charge les autorisations Bootstrap

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

Notes de réponse

  • GET /api/user/profile renvoie la charge utile de paramètres utilisateur la plus riche, y compris les préférences de visibilité, les balises cachées en direct, les étiquettes d'événement, l'état d'intégration et les informations d'acceptation de la politique de confidentialité.
  • GET /api/users/me est une recherche d'utilisateur actuel plus légère à partir du service utilisateurs.
  • PATCH /api/user/password renvoie un simple message de réussite après avoir validé le mot de passe actuel.
  • DELETE /api/user/event-labels/:label renvoie l'étiquette supprimée, les étiquettes restantes et le nombre d'événements affectés.

Meilleures pratiques

  • Utilisez GET /api/user/profile comme route d'amorçage des paramètres principaux.
  • Utilisez GET /api/user-permissions avant d'afficher les réservations, les paramètres d'organisation ou l'interface utilisateur sensible au rôle.
  • Envoyer uniquement les champs modifiés dans PATCH /api/user/profile ; le contrôleur effectue intentionnellement des contrôles d'unicité étroits.
  • Conservez également eventLabels et hiddenFromLiveFocusTags normalisés sur le client, afin que l'état de l'interface utilisateur corresponde aux règles de normalisation du backend.
  • Utilisez Personal Logs API pour l'historique d'audit plutôt que de surcharger ces points de terminaison de paramètres avec des problèmes d'activité.