import 'package:get/get.dart'; import 'package:shared_preferences/shared_preferences.dart'; import 'package:youmazgestion/Models/users.dart'; import 'package:youmazgestion/Services/app_database.dart'; class UserController extends GetxController { final _username = ''.obs; final _email = ''.obs; final _role = ''.obs; final _name = ''.obs; final _lastname = ''.obs; final _password = ''.obs; String get username => _username.value; String get email => _email.value; String get role => _role.value; String get name => _name.value; String get lastname => _lastname.value; String get password => _password.value; @override void onInit() { super.onInit(); loadUserData(); // Charger les données au démarrage } // Charger les données depuis SharedPreferences Future loadUserData() async { try { final prefs = await SharedPreferences.getInstance(); _username.value = prefs.getString('username') ?? ''; _email.value = prefs.getString('email') ?? ''; _role.value = prefs.getString('role') ?? ''; _name.value = prefs.getString('name') ?? ''; _lastname.value = prefs.getString('lastname') ?? ''; print("Données chargées - Username: ${_username.value}"); print("Role: ${_role.value}"); } catch (e) { print('Erreur lors du chargement des données utilisateur: $e'); } } void setUser(Users user) { _username.value = user.username; print("username " + _username.value); _email.value = user.email; print(_email.value); _role.value = user.role; print(_role.value); _name.value = user.name; print(_name.value); _lastname.value = user.lastName; print(_lastname.value); _password.value = user.password; print(_password.value); // Sauvegarder dans SharedPreferences saveUserData(); } // Sauvegarder les données dans SharedPreferences Future saveUserData() async { try { final prefs = await SharedPreferences.getInstance(); await prefs.setString('username', _username.value); await prefs.setString('email', _email.value); await prefs.setString('role', _role.value); await prefs.setString('name', _name.value); await prefs.setString('lastname', _lastname.value); print("Données sauvegardées avec succès"); } catch (e) { print('Erreur lors de la sauvegarde des données utilisateur: $e'); } } // Méthode pour vider les données utilisateur Future clearUserData() async { try { final prefs = await SharedPreferences.getInstance(); await prefs.remove('username'); await prefs.remove('email'); await prefs.remove('role'); await prefs.remove('name'); await prefs.remove('lastname'); // Vider les variables observables _username.value = ''; _email.value = ''; _role.value = ''; _name.value = ''; _lastname.value = ''; _password.value = ''; print("Données utilisateur effacées"); } catch (e) { print('Erreur lors de l\'effacement des données utilisateur: $e'); } } Future hasPermission(String permission, String route) async { try { if (_username.value.isEmpty) { print('Username vide, rechargement des données...'); await loadUserData(); } return await AppDatabase.instance.hasPermission(username, permission, route); } catch (e) { print('Erreur vérification permission: $e'); return false; // Sécurité : refuser l'accès en cas d'erreur } } Future hasAnyPermission(List permissionNames, String menuRoute) async { for (String permissionName in permissionNames) { if (await hasPermission(permissionName, menuRoute)) { return true; } } return false; } }