import 'package:flutter/material.dart'; import 'package:go_router/go_router.dart'; import 'package:geosector_app/core/repositories/user_repository.dart'; import 'package:geosector_app/presentation/widgets/loading_overlay.dart'; /// Service qui gère les opérations d'authentification avec affichage d'un overlay de chargement class AuthService { final UserRepository _userRepository; AuthService(this._userRepository); /// Méthode de connexion avec affichage d'un overlay de chargement Future login(BuildContext context, String username, String password, {required String type}) async { return await LoadingOverlay.show( context: context, spinnerSize: 80.0, // Spinner plus grand strokeWidth: 6.0, // Trait plus épais future: _userRepository.login(username, password, type: type), ); } /// Méthode de déconnexion avec affichage d'un overlay de chargement /// et redirection vers la page de démarrage Future logout(BuildContext context) async { final bool result = await LoadingOverlay.show( context: context, spinnerSize: 80.0, // Spinner plus grand strokeWidth: 6.0, // Trait plus épais future: _userRepository.logout(), ); // Si la déconnexion a réussi, rediriger vers la page de démarrage if (result && context.mounted) { // Utiliser GoRouter pour naviguer vers la page de démarrage GoRouter.of(context).go('/'); } return result; } /// Vérifie si un utilisateur est connecté bool isLoggedIn() { return _userRepository.isLoggedIn; } /// Récupère le rôle de l'utilisateur connecté int getUserRole() { return _userRepository.getUserRole(); } }