Début refacto en MVVM (Login, drawer OK
This commit is contained in:
@ -1,39 +1,67 @@
|
||||
import 'package:em2rp/providers/local_auth_provider.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:em2rp/views/widgets/nav/main_drawer.dart';
|
||||
import 'package:em2rp/providers/user_provider.dart'; // Import UserProvider
|
||||
import 'package:provider/provider.dart'; // Import Provider
|
||||
import 'package:provider/provider.dart';
|
||||
import '../view_model/user_management_view_model.dart';
|
||||
|
||||
class UserManagementPage extends StatelessWidget {
|
||||
const UserManagementPage({super.key});
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
final userProvider =
|
||||
Provider.of<UserProvider>(context); // Get UserProvider instance
|
||||
final userViewModel = Provider.of<UserManagementViewModel>(context);
|
||||
final authProvider = Provider.of<LocalAuthProvider>(context);
|
||||
|
||||
if (userProvider.role != 'ADMIN') {
|
||||
// Get role from UserProvider
|
||||
if (authProvider.role != 'ADMIN') {
|
||||
return Scaffold(
|
||||
appBar: AppBar(title: const Text('Gestion des Utilisateurs')),
|
||||
drawer: MainDrawer(
|
||||
currentPage: '/user_management',
|
||||
userProvider: userProvider), // Pass UserProvider to MainDrawer
|
||||
body: const Center(
|
||||
child: Text('Accès non autorisé pour les utilisateurs non-Admin.',
|
||||
style: TextStyle(fontSize: 18, color: Colors.red)),
|
||||
),
|
||||
);
|
||||
} else {
|
||||
return Scaffold(
|
||||
appBar: AppBar(title: const Text('Gestion des Utilisateurs (Admin)')),
|
||||
drawer: MainDrawer(
|
||||
currentPage: '/user_management',
|
||||
userProvider: userProvider), // Pass UserProvider to MainDrawer
|
||||
body: const Center(
|
||||
child: Text('Page de Gestion des Utilisateurs (Admin)',
|
||||
style: TextStyle(fontSize: 24)),
|
||||
),
|
||||
child: Text('Accès non autorisé',
|
||||
style: TextStyle(color: Colors.red))),
|
||||
);
|
||||
}
|
||||
|
||||
return Scaffold(
|
||||
appBar: AppBar(title: const Text('Gestion des Utilisateurs')),
|
||||
body: userViewModel.isLoading
|
||||
? const Center(child: CircularProgressIndicator())
|
||||
: ListView.builder(
|
||||
itemCount: userViewModel.users.length,
|
||||
itemBuilder: (context, index) {
|
||||
final user = userViewModel.users[index];
|
||||
return ListTile(
|
||||
leading: CircleAvatar(
|
||||
backgroundImage: NetworkImage(user.profilePhotoUrl)),
|
||||
title: Text('${user.firstName} ${user.lastName}'),
|
||||
subtitle: Text(user.email),
|
||||
trailing: Row(
|
||||
mainAxisSize: MainAxisSize.min,
|
||||
children: [
|
||||
IconButton(
|
||||
icon: const Icon(Icons.edit),
|
||||
onPressed: () {
|
||||
// Afficher la pop-up d'édition
|
||||
},
|
||||
),
|
||||
IconButton(
|
||||
icon: const Icon(Icons.lock_reset),
|
||||
onPressed: () =>
|
||||
userViewModel.resetPassword(user.email),
|
||||
),
|
||||
IconButton(
|
||||
icon: const Icon(Icons.delete, color: Colors.red),
|
||||
onPressed: () => userViewModel.deleteUser(user.uid),
|
||||
),
|
||||
],
|
||||
),
|
||||
);
|
||||
},
|
||||
),
|
||||
floatingActionButton: FloatingActionButton(
|
||||
onPressed: () {
|
||||
// Ajouter un utilisateur
|
||||
},
|
||||
child: const Icon(Icons.add),
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user