52 lines
1.7 KiB
Dart
52 lines
1.7 KiB
Dart
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<bool> 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<bool> 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();
|
|
}
|
|
}
|