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 :
- Valide le format de l'email
- Recherche l'utilisateur dans la base de données
- Génère un jeton de récupération unique
- Envoie un email avec un lien pour réinitialiser le mot de passe
Flux détaillé :
- Le client envoie l'email au format JSON
- Le serveur valide le format de l'email (401 si invalide)
- Recherche l'utilisateur par email
- Génère un jeton aléatoire
- Stocke le jeton dans la base de données associé à l'utilisateur
- Envoie un email avec un lien contenant le jeton
- 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>