You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
127 lines
3.8 KiB
127 lines
3.8 KiB
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<void> 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<void> 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<void> 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<bool> 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<bool> hasAnyPermission(List<String> permissionNames, String menuRoute) async {
|
|
for (String permissionName in permissionNames) {
|
|
if (await hasPermission(permissionName, menuRoute)) {
|
|
return true;
|
|
}
|
|
}
|
|
return false;
|
|
}
|
|
}
|