--- 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; } ```