Ajout des permissions
This commit is contained in:
@ -6,6 +6,8 @@ import 'package:em2rp/models/user_model.dart';
|
||||
import 'package:em2rp/views/widgets/user_management/user_card.dart';
|
||||
import 'package:em2rp/views/widgets/user_management/edit_user_dialog.dart';
|
||||
import 'package:em2rp/utils/colors.dart';
|
||||
import 'package:em2rp/widgets/permission_gate.dart';
|
||||
import 'package:em2rp/models/role_model.dart';
|
||||
|
||||
class UserManagementPage extends StatefulWidget {
|
||||
const UserManagementPage({Key? key}) : super(key: key);
|
||||
@ -24,66 +26,79 @@ class _UserManagementPageState extends State<UserManagementPage> {
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return Scaffold(
|
||||
appBar: AppBar(
|
||||
title: const Text('Gestion des utilisateurs'),
|
||||
backgroundColor: AppColors.rouge,
|
||||
return PermissionGate(
|
||||
requiredPermissions: [Permission.viewUsers],
|
||||
fallback: Scaffold(
|
||||
appBar: AppBar(
|
||||
title: const Text('Accès refusé'),
|
||||
backgroundColor: AppColors.rouge,
|
||||
),
|
||||
body: const Center(
|
||||
child: Text(
|
||||
'Vous n\'avez pas les permissions nécessaires pour accéder à cette page.',
|
||||
textAlign: TextAlign.center,
|
||||
style: TextStyle(fontSize: 16),
|
||||
),
|
||||
),
|
||||
),
|
||||
drawer: const MainDrawer(currentPage: '/account_management'),
|
||||
body: Consumer<UsersProvider>(
|
||||
builder: (context, usersProvider, child) {
|
||||
if (usersProvider.isLoading) {
|
||||
return const Center(child: CircularProgressIndicator());
|
||||
}
|
||||
final users = usersProvider.users;
|
||||
if (users.isEmpty) {
|
||||
return const Center(child: Text("Aucun utilisateur trouvé"));
|
||||
}
|
||||
child: Scaffold(
|
||||
appBar: AppBar(
|
||||
title: const Text('Gestion des utilisateurs'),
|
||||
backgroundColor: AppColors.rouge,
|
||||
),
|
||||
drawer: const MainDrawer(currentPage: '/account_management'),
|
||||
body: Consumer<UsersProvider>(
|
||||
builder: (context, usersProvider, child) {
|
||||
if (usersProvider.isLoading) {
|
||||
return const Center(child: CircularProgressIndicator());
|
||||
}
|
||||
final users = usersProvider.users;
|
||||
if (users.isEmpty) {
|
||||
return const Center(child: Text("Aucun utilisateur trouvé"));
|
||||
}
|
||||
|
||||
final width = MediaQuery.of(context).size.width;
|
||||
int crossAxisCount;
|
||||
final width = MediaQuery.of(context).size.width;
|
||||
int crossAxisCount;
|
||||
|
||||
// Ajustement du nombre de colonnes selon la taille d'écran
|
||||
if (width > 1200) {
|
||||
crossAxisCount = 4;
|
||||
} else if (width > 800) {
|
||||
crossAxisCount = 3;
|
||||
} else if (width > 600) {
|
||||
crossAxisCount = 2;
|
||||
} else {
|
||||
crossAxisCount = 1;
|
||||
}
|
||||
if (width > 1200) {
|
||||
crossAxisCount = 4;
|
||||
} else if (width > 800) {
|
||||
crossAxisCount = 3;
|
||||
} else if (width > 600) {
|
||||
crossAxisCount = 2;
|
||||
} else {
|
||||
crossAxisCount = 1;
|
||||
}
|
||||
|
||||
return Padding(
|
||||
padding: const EdgeInsets.all(16),
|
||||
child: GridView.builder(
|
||||
itemCount: users.length,
|
||||
gridDelegate: SliverGridDelegateWithFixedCrossAxisCount(
|
||||
crossAxisCount: crossAxisCount,
|
||||
crossAxisSpacing: 16,
|
||||
mainAxisSpacing: 16,
|
||||
mainAxisExtent: width < 600
|
||||
? 80
|
||||
: 180, // Augmenté de 170 à 180 pour le desktop
|
||||
return Padding(
|
||||
padding: const EdgeInsets.all(16),
|
||||
child: GridView.builder(
|
||||
itemCount: users.length,
|
||||
gridDelegate: SliverGridDelegateWithFixedCrossAxisCount(
|
||||
crossAxisCount: crossAxisCount,
|
||||
crossAxisSpacing: 16,
|
||||
mainAxisSpacing: 16,
|
||||
mainAxisExtent: width < 600 ? 80 : 180,
|
||||
),
|
||||
itemBuilder: (context, i) {
|
||||
final user = users[i];
|
||||
return UserCard(
|
||||
user: user,
|
||||
onEdit: () => showDialog(
|
||||
context: context,
|
||||
builder: (_) => EditUserDialog(user: user)),
|
||||
onDelete: () => usersProvider.deleteUser(user.uid),
|
||||
);
|
||||
},
|
||||
),
|
||||
itemBuilder: (context, i) {
|
||||
final user = users[i];
|
||||
return UserCard(
|
||||
user: user,
|
||||
onEdit: () => showDialog(
|
||||
context: context,
|
||||
builder: (_) => EditUserDialog(user: user)),
|
||||
onDelete: () => usersProvider.deleteUser(user.uid),
|
||||
);
|
||||
},
|
||||
),
|
||||
);
|
||||
},
|
||||
),
|
||||
floatingActionButton: FloatingActionButton(
|
||||
backgroundColor: AppColors.rouge,
|
||||
child: const Icon(Icons.add, color: AppColors.blanc),
|
||||
onPressed: () => _showCreateUserDialog(context),
|
||||
);
|
||||
},
|
||||
),
|
||||
floatingActionButton: FloatingActionButton(
|
||||
backgroundColor: AppColors.rouge,
|
||||
child: const Icon(Icons.add, color: AppColors.blanc),
|
||||
onPressed: () => _showCreateUserDialog(context),
|
||||
),
|
||||
),
|
||||
);
|
||||
}
|
||||
|
Reference in New Issue
Block a user