Password Recovery Request
POST/company/auth/recovery
Endpoint per richiedere il recupero della password degli utenti aziendali.
Esegue le seguenti operazioni:
- Valida il formato dell'email
- Cerca l'utente nel database
- Genera un token di recupero univoco
- Invia un'email con il link per reimpostare la password
Flusso dettagliato:
- Il client invia l'email in formato JSON
- Il server valida il formato dell'email (401 se non valido)
- Cerca l'utente tramite email
- Genera un token casuale
- Memorizza il token nel database associato all'utente
- Invia un'email con un link contenente il token
- Il link reindirizza al modulo per la nuova password
Sicurezza:
- Per motivi di sicurezza, restituisce sempre 200 OK per non rivelare email registrate
- I token hanno validità limitata
- Ogni token è monouso
- Richiede HTTPS
- Verifica anche gli utenti disabilitati (soft delete)
Comportamento speciale:
- Se l'email non esiste: restituisce 200 con
USER_NOT_FOUND - Se l'utente è disabilitato: restituisce 200 con
USER_DISABLED - Utenti demo (cia@testing.com, ciamu@testing.com): restituiscono 200 senza inviare email
Esempio di richiesta:
{
email: utente@azienda.com
}
Esempi di risposta:
Email valida trovata:
{
op: recovery,
message: RECOVERY_EMAIL_SENT,
email: utente@azienda.com
}
Email non trovata (per sicurezza restituisce 200):
{
op: recovery,
message: USER_NOT_FOUND,
email: inesistente@azienda.com
}
Utente disabilitato:
\{
op: recovery,
message: USER_DISABLED
<Heading
id={"request"}
as={"h2"}
className={"openapi-tabs__heading"}
children={"Request"}
>
</Heading>
<ParamsDetails
parameters={[{"name":"lang","in":"query","description":"Lingua per l'email di recupero","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":"Email dell'utente per recuperare la password","example":"usuario@empresa.com"}},"required":["email"],"title":"RecoveryRequest"}}},"required":true}}
>
</RequestSchema>
<StatusCodes
id={undefined}
label={undefined}
responses={{"200":{"description":"Elaborato (restituisce sempre 200 per sicurezza)","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":"Email non fornito o formato non valido","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"integer","example":401},"message":{"type":"string","example":"NOT_VALID"}}}}},"headers":{}}}}
>
</StatusCodes>