Passa al contenuto principale

Password Recovery Request

POST 

/company/auth/recovery

Endpoint per richiedere il recupero della password degli utenti aziendali.
Esegue le seguenti operazioni:

  1. Valida il formato dell'email
  2. Cerca l'utente nel database
  3. Genera un token di recupero univoco
  4. Invia un'email con il link per reimpostare la password

Flusso dettagliato:

  1. Il client invia l'email in formato JSON
  2. Il server valida il formato dell'email (401 se non valido)
  3. Cerca l'utente tramite email
  4. Genera un token casuale
  5. Memorizza il token nel database associato all'utente
  6. Invia un'email con un link contenente il token
  7. 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>