Aller au contenu principal

Password Recovery Request

POST 

/company/auth/recovery

Point de terminaison pour demander la récupération de mot de passe des utilisateurs d'entreprise.

Effectue les opérations suivantes :

  1. Valide le format de l'email
  2. Recherche l'utilisateur dans la base de données
  3. Génère un jeton de récupération unique
  4. Envoie un email avec un lien pour réinitialiser le mot de passe

Flux détaillé :

  1. Le client envoie l'email au format JSON
  2. Le serveur valide le format de l'email (401 si invalide)
  3. Recherche l'utilisateur par email
  4. Génère un jeton aléatoire
  5. Stocke le jeton dans la base de données associé à l'utilisateur
  6. Envoie un email avec un lien contenant le jeton
  7. Le lien redirige vers un formulaire pour le nouveau mot de passe

Sécurité :

  • Pour des raisons de sécurité, retourne toujours 200 OK pour ne pas révéler les emails enregistrés
  • Les jetons ont une validité limitée
  • Chaque jeton est à usage unique
  • Requiert HTTPS
  • Vérifie également dans les utilisateurs désactivés (soft delete)

Comportement spécial :

  • Si l'email n'existe pas : retourne 200 avec USER_NOT_FOUND
  • Si l'utilisateur est désactivé : retourne 200 avec USER_DISABLED
  • Utilisateurs de démonstration (cia@testing.com, ciamu@testing.com) : retournent 200 sans envoyer d'email

Exemple de requête :

{
email: utilisateur@entreprise.com
}

Exemples de réponse :

Email valide trouvé :

{
op: recovery,
message: RECOVERY_EMAIL_SENT,
email: utilisateur@entreprise.com
}

Email non trouvé (pour sécurité retourne 200) :

{
op: recovery,
message: USER_NOT_FOUND,
email: inexistant@entreprise.com
}

Utilisateur désactivé :


<Heading
id={"request"}
as={"h2"}
className={"openapi-tabs__heading"}
children={"Request"}
>
</Heading>

<ParamsDetails
parameters={[{"name":"lang","in":"query","description":"Langue pour l'e-mail de récupération","required":false,"schema":{"type":"string","default":"en","enum":["en","es"]}}]}
>

</ParamsDetails>

<RequestSchema
title={"Body"}
body={{"content":{"application/json":{"schema":{"type":"object","properties":{"email":{"type":"string","format":"email","description":"Courriel de l'utilisateur pour récupérer le mot de passe","example":"usuario@empresa.com"}},"required":["email"],"title":"RecoveryRequest"}}},"required":true}}
>

</RequestSchema>

<StatusCodes
id={undefined}
label={undefined}
responses={{"200":{"description":"Traité (retourne toujours 200 par sécurité)","content":{"application/json":{"schema":{"type":"object","properties":{"op":{"type":"string","enum":["recovery"],"example":"recovery"},"message":{"type":"string","enum":["RECOVERY_EMAIL_SENT","USER_NOT_FOUND","USER_DISABLED"],"example":"RECOVERY_EMAIL_SENT"},"email":{"type":"string","format":"email","example":"usuario@empresa.com"}}}}},"headers":{}},"401":{"description":"E-mail non fourni ou format invalide","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"integer","example":401},"message":{"type":"string","example":"NOT_VALID"}}}}},"headers":{}}}}
>

</StatusCodes>