============================ Identity — Vues API ============================ Le Identity Context expose des endpoints REST pour la gestion des utilisateurs, l'authentification et la vérification d'email. Module : ``src.module.identity.presentation.views`` .. module:: src.module.identity.presentation.views :synopsis: ViewSets et vues API pour l'identité Gestion des utilisateurs ========================= .. class:: UserViewSet(ModelViewSet) CRUD des utilisateurs avec endpoint profil. ``GET/PUT/PATCH /api/v1/users/`` ``GET /api/v1/users/me/`` (profil courant) .. method:: profile(request) -> Response ``GET /api/v1/users/me/`` Retourne le profil de l'utilisateur authentifié. Vérification d'email ===================== .. class:: EmailVerificationSendView(APIView) ``POST /api/v1/auth/email/verify/send/`` Envoie un email de vérification avec un token unique. :Response 200: ``{"message": "Verification email sent"}`` .. class:: EmailVerificationConfirmView(APIView) ``POST /api/v1/auth/email/verify/confirm/`` Confirme la vérification d'email avec le token. :Body: ``{"token": "..."}`` :Response 200: ``{"message": "Email verified"}`` :Response 400: Token invalide ou expiré Événements domaine ================== Module : ``src.module.identity.domain.events`` .. module:: src.module.identity.domain.events :synopsis: Événements domaine de l'Identity Context .. class:: UserCreated(DomainEvent) :event_type: ``"identity.user_created"`` :Champs: ``user_id``, ``email`` .. class:: UserUpdated(DomainEvent) :event_type: ``"identity.user_updated"`` :Champs: ``user_id`` .. class:: EmailVerified(DomainEvent) :event_type: ``"identity.email_verified"`` :Champs: ``user_id``, ``email`` .. class:: OTPDeviceConfirmed(DomainEvent) :event_type: ``"identity.otp_device_confirmed"`` :Champs: ``user_id``, ``device_type`` Sérialiseurs ============= Module : ``src.module.identity.serializers`` .. class:: RegisterSerializer Sérialiseur pour l'inscription. :Champs: ``email``, ``password``, ``first_name``, ``last_name`` .. class:: UserSerializer Sérialiseur pour la lecture/mise à jour des utilisateurs. :Champs: ``id``, ``email``, ``first_name``, ``last_name``, ``is_active``, ``date_joined`` .. class:: SwitchTenantSerializer Sérialiseur pour le changement de tenant. :Champs: ``tenant_id``