Page d'Authentification

La Page d'Authentification (AuthPage) constitue le point d'entrée de l'application mobile. Elle permet aux utilisateurs de s'authentifier via Firebase Authentication et gère les sessions utilisateur.

AuthPage

Type : ConsumerStatefulWidget
State : _AuthPageState extends ConsumerState (AuthPage)

Description

Widget principal de la page d'authentification qui écoute les changements d'état de l'authentification et affiche les dialogues appropriés (conflit de session, erreurs).

Éléments principaux

Méthode build

build(BuildContext context)

Description : Construit l'interface utilisateur et configure les écouteurs de state.

Écouteurs :

Retour : Widget

Composants utilisés

AuthForm

Type : ConsumerStatefulWidget
State : _AuthFormState extends ConsumerState (AuthForm)

Composant de formulaire complet gérant la connexion et l'inscription avec validation en temps réel.

Propriétés

Propriété Type Description
_formKey GlobalKey Clé de formulaire pour validation
_usernameController TextEditingController Contrôleur pour le nom d'utilisateur (inscription)
_loginUsernameController TextEditingController Contrôleur pour le nom d'utilisateur (connexion)
_emailController TextEditingController Contrôleur pour l'email
_passwordController TextEditingController Contrôleur pour le mot de passe
_usernameFocusNode FocusNode Focus pour le champ username (inscription)
_loginUsernameFocusNode FocusNode Focus pour le champ username (connexion)
_emailFocusNode FocusNode Focus pour le champ email
_passwordFocusNode FocusNode Focus pour le champ password
_isLoginMode bool Indique si le mode connexion est actif
_obscurePassword bool Contrôle la visibilité du mot de passe
_isCheckingUsername bool Indique si la vérification du username est en cours
_hasCheckedUsername bool Indique si le username a été vérifié
_isUsernameAvailable bool Indique si le username est disponible
_selectedAvatarFile File? Fichier d'avatar personnalisé sélectionné
_selectedPredefinedAvatarId String? ID de l'avatar prédéfini sélectionné

Méthodes

dispose()

Description : Libère les ressources (contrôleurs et focus nodes).
Retour : void

_toggleMode()

Description : Bascule entre le mode connexion et inscription, et réinitialise le formulaire.
Retour : void

_clearForm()

Description : Réinitialise tous les champs et états du formulaire.
Retour : void

String? _validateEmail(String? value)

Description : Valide le format de l'email avec RegEx strict.
Paramètres :

Validation :

Retour : String? (message d'erreur ou null)

String? _validatePassword(String? value)

Description : Valide le mot de passe.
Paramètres :

Validation :

Retour : String? (message d'erreur ou null)

String? _validateUsername(String? value)

Description : Valide le nom d'utilisateur pour l'inscription.
Paramètres :

Validation :

Retour : String? (message d'erreur ou null)

String? _validateLoginUsername(String? value)

Description : Valide le nom d'utilisateur pour la connexion.
Paramètres :

Validation :

Retour : String? (message d'erreur ou null)

_checkUsernameAvailability()

Description : Vérifie la disponibilité du nom d'utilisateur via le AuthNotifier.
État : Met à jour _isCheckingUsername, _hasCheckedUsername, _isUsernameAvailable
Retour : Future

_submit()

Description : Soumet le formulaire après validation et appelle signIn ou signUp.
Flux :

  1. Valide le formulaire
  2. Appelle AuthNotifier.signIn() ou AuthNotifier.signUp()
  3. Navigue vers HomePage en cas de succès

Retour : Future

_selectAvatar()

Description : Ouvre le popup de sélection d'avatar (AvatarSelectorPopup).
Retour : Future

Éléments visuels

OneButtonPopup

Widget de dialogue modal avec un seul bouton de confirmation.

Propriétés

Propriété Type Description
message String Message à afficher dans le popup
buttonText String? Texte du bouton (défaut: "OK")
onButtonPressed VoidCallback? Callback appelé lors du clic sur le bouton

LanguageSelectorWidget

Widget de sélection de langue (Français/English) affiché dans le coin supérieur droit.

Providers utilisés

authNotifierProvider

Type : StateNotifierProvider (AuthNotifier, AuthState)

Provider gérant l'état d'authentification de l'application.

AuthState

Propriété Type Description
isLoading bool Indique si une opération d'authentification est en cours
errorMessage String? Message d'erreur à afficher
user UserEntity? Utilisateur authentifié
showSessionConflictDialog bool Indique si le dialogue de conflit de session doit être affiché

AuthNotifier - Méthodes principales

signIn(String username, String password)

Description : Authentifie un utilisateur avec username et password.
Paramètres :

Retour : Future (bool) (true si succès, false sinon)

signUp(String email, String username, String password, File? avatarFile, String? predefinedAvatarId)

Description : Crée un nouveau compte utilisateur.
Paramètres :

Retour : Future (bool) (true si succès, false sinon)

checkUsernameAvailability(String username)

Description : Vérifie si un nom d'utilisateur est disponible.
Paramètres :

Retour : Future (bool) (true si disponible, false sinon)

void clearError()

Description : Efface le message d'erreur actuel.
Retour : void

void dismissSessionConflictDialog()

Description : Ferme le dialogue de conflit de session.
Retour : void

translationProvider

Type : Provider (TranslationWrapper)

Provider pour la gestion de l'internationalisation (i18n).

Use Cases

L'authentification utilise la Clean Architecture avec les use cases suivants :

Navigation