Mise en place du permission gate sur les pages de data managment
This commit is contained in:
		| @@ -4,6 +4,7 @@ import 'package:em2rp/views/widgets/data_management/event_types_management.dart' | ||||
| import 'package:em2rp/views/widgets/data_management/options_management.dart'; | ||||
| import 'package:em2rp/views/widgets/nav/main_drawer.dart'; | ||||
| import 'package:em2rp/views/widgets/nav/custom_app_bar.dart'; | ||||
| import 'package:em2rp/utils/permission_gate.dart'; | ||||
| class DataManagementPage extends StatefulWidget { | ||||
|   const DataManagementPage({super.key}); | ||||
|  | ||||
| @@ -31,15 +32,44 @@ class _DataManagementPageState extends State<DataManagementPage> { | ||||
|   Widget build(BuildContext context) { | ||||
|     final isMobile = MediaQuery.of(context).size.width < 800; | ||||
|  | ||||
|     return Scaffold( | ||||
|     return PermissionGate( | ||||
|       requiredPermissions: const ['view_all_users'], | ||||
|       fallback: const Scaffold( | ||||
|         appBar: CustomAppBar( | ||||
|           title: 'Accès refusé', | ||||
|         ), | ||||
|         body: Center( | ||||
|           child: Text( | ||||
|             'Vous n\'avez pas les permissions nécessaires pour accéder à cette page.', | ||||
|             textAlign: TextAlign.center, | ||||
|             style: TextStyle(fontSize: 16), | ||||
|           ), | ||||
|         ), | ||||
|       ), | ||||
|       child: Scaffold( | ||||
|       appBar: CustomAppBar(title: 'Gestion des données'), | ||||
|       drawer: const MainDrawer(currentPage: '/data_management'), // Ajout du drawer | ||||
|       body: isMobile ? _buildMobileLayout() : _buildDesktopLayout(), | ||||
|     ), | ||||
|     ); | ||||
|   } | ||||
|  | ||||
|   Widget _buildMobileLayout() { | ||||
|     return Column( | ||||
|     return PermissionGate( | ||||
|       requiredPermissions: const ['view_all_users'], | ||||
|       fallback: const Scaffold( | ||||
|         appBar: CustomAppBar( | ||||
|           title: 'Accès refusé', | ||||
|         ), | ||||
|         body: Center( | ||||
|           child: Text( | ||||
|             'Vous n\'avez pas les permissions nécessaires pour accéder à cette page.', | ||||
|             textAlign: TextAlign.center, | ||||
|             style: TextStyle(fontSize: 16), | ||||
|           ), | ||||
|         ), | ||||
|       ), | ||||
|       child: Column( | ||||
|       children: [ | ||||
|         // Menu horizontal en mobile | ||||
|         Container( | ||||
| @@ -86,6 +116,7 @@ class _DataManagementPageState extends State<DataManagementPage> { | ||||
|           child: _categories[_selectedIndex].widget, | ||||
|         ), | ||||
|       ], | ||||
|       ) | ||||
|     ); | ||||
|   } | ||||
|  | ||||
|   | ||||
| @@ -134,19 +134,22 @@ class MainDrawer extends StatelessWidget { | ||||
|                         }, | ||||
|                       ), | ||||
|                     ), | ||||
|                     ListTile( | ||||
|                       leading: const Icon(Icons.data_usage), | ||||
|                       title: const Text('Gestion des Données'), | ||||
|                       selected: currentPage == '/data_management', | ||||
|                       selectedColor: AppColors.rouge, | ||||
|                       onTap: () { | ||||
|                         Navigator.pop(context); | ||||
|                         Navigator.pushReplacement( | ||||
|                           context, | ||||
|                           MaterialPageRoute( | ||||
|                               builder: (context) => const DataManagementPage()), | ||||
|                         ); | ||||
|                       }, | ||||
|                     PermissionGate( | ||||
|                       requiredPermissions: const ['edit_data'], | ||||
|                       child:  ListTile( | ||||
|                         leading: const Icon(Icons.data_usage), | ||||
|                         title: const Text('Gestion des Données'), | ||||
|                         selected: currentPage == '/data_management', | ||||
|                         selectedColor: AppColors.rouge, | ||||
|                         onTap: () { | ||||
|                           Navigator.pop(context); | ||||
|                           Navigator.pushReplacement( | ||||
|                             context, | ||||
|                             MaterialPageRoute( | ||||
|                                 builder: (context) => const DataManagementPage()), | ||||
|                           ); | ||||
|                         }, | ||||
|                       ), | ||||
|                     ), | ||||
|                   ], | ||||
|                 ), | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 ElPoyo
					ElPoyo