Fiche 10.02 — Écrans login/register/forgot password
Objectif
Savoir structurer les écrans classiques d’authentification : connexion, inscription et mot de passe oublié.
Le but est de gérer proprement les champs, la validation, le loading et les erreurs.
1. LoginViewModel
La vue ne doit pas contenir toute la logique de connexion.
2. LoginView
3. RegisterViewModel
4. ForgotPasswordView
En UIKit (rappel)
En UIKit, un écran de login était un UIViewController : on créait les champs et le bouton à la main, on les empilait dans un UIStackView, et on activait/désactivait le bouton en écoutant chaque frappe.
Différence clé de mentalité : en UIKit tu décris les étapes (lire text, recalculer, écrire isEnabled) à chaque événement ; le contrôleur et la vue peuvent se désynchroniser. En SwiftUI tu décris l'état et la vue s'y conforme automatiquement.
👉 En SwiftUI : @State/@Published + binding ($email) + .disabled(!isFormValid) remplacent le .editingChanged et le isEnabled manuels — l'UI suit l'état toute seule.
5. Points importants
Un écran d’auth réel doit gérer :
- validation avant appel API ;
- loading ;
- erreur compréhensible ;
- bouton désactivé si invalide ;
- clavier propre ;
- stockage session après réussite ;
- redirection vers l’app principale.
Résumé
- Login/register sont des formulaires avec validation.
- La logique doit aller dans un ViewModel.
- La vue affiche les états : normal, loading, erreur.
- Le mot de passe oublié est souvent un écran simple avec email.
- Après login réussi, on met à jour l’AuthState global.