---
tags: specs
---
# Cinématique utilisateurs
Validité du token d'invitation : 7 jours
Validité du token mdp perdu : 1 jour
URL API
- `/auth/reset-password/`
- `/auth/check-token`
- `/auth/change-password`
- `/auth/confirm-email`
## Connexion
- OK (200)
- status doit être `active`
- KO (401) / Mot de passe perdu
- front --> back
```
POST {API_URL}/auth/reset-password/
email: string
```
- KO email (401) : message email inconnu
- OK email (200) : envoie d'email mdp perdu
- (back) generation du forgotten_token
- (back) timestamp forgotten_at à actualiser
- page front `/login/reset-forgotten-password/:email/:token`
## Invitation d'un utilisateur
- envoie d'email d'invitation
- envoie d'email mdp perdu
- (back) generation du forgotten_token
- (back) timestamp forgotten_at à actualiser
- invité a un lien pour changer son mot de passe
- page front: `/login/activate/:email/:token`
- front appelle pour vérifier le couple
```
POST {API_URL}/auth/check-token/
email: string
token: string
```
- KO : message d'erreur -> redirection vers mdp perdu
- OK : accès à la page
- Changement du mdp par le user
```
POST {API_URL}/auth/change-password/
email: string
token: string
password: string
```
- (back) patch du password
- (back) suppression du forgotten_token
- (back) suppression de forgotten_at
- (back) activer le compte si `pending`
- (back) envoie d'un email quand le compte est activé + Welcome + Tutos + Café + ...
## Confirmation de l'email
> expiration 7 jours
- changement de l'email dans le profile de l'utilisateur
- le backend détecte que l'email a été modifié
- (back) changement du status en `pending`
- (back) envoie de l'email avec le lien de confirmation `/login/confirm-email/:email/:token`
- (back) payload de réponse avec un meta: email_changed: true
- (front) validation de l'email
```
POST {API_URL}/auth/confirm-email/
email: string
token: string
```
- (back) OK (200) ou KO (401)
## TODO
- [x] supprimer forgotten_reset
- [x] supprimer email_confirm ?
- [x] supprimer email_token ?
- [x] supprimer email_change_at ?
- [x] supprimer has_reset_password ?
- [x] supprimer email_confirmation
- [x] ajouter les routes dans le proxy
- [x] supprimer l'action `user:changeEmail`
- [x] Suppression des users ne les vire pas complètement
### Schema
```typescript=
export interface UserInterface {
_id?: string;
email: string;
lastname: string;
firstname: string;
group: string;
permissions: string[];
password?: string;
role?: string;
phone?: string;
status?: string;
forgotten_at?: Date;
forgotten_reset?: string;
operator?: string;
territory?: string;
last_connected_at?: Date;
deleted_at?: Date;
created_at?: Date;
updated_at?: Date;
}
```