Mise en place du permission gate sur les pages de data managment

This commit is contained in:
ElPoyo
2025-10-17 15:59:53 +02:00
parent 5057bf9a77
commit ef638d8c8c
2 changed files with 49 additions and 15 deletions

View File

@@ -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/data_management/options_management.dart';
import 'package:em2rp/views/widgets/nav/main_drawer.dart'; import 'package:em2rp/views/widgets/nav/main_drawer.dart';
import 'package:em2rp/views/widgets/nav/custom_app_bar.dart'; import 'package:em2rp/views/widgets/nav/custom_app_bar.dart';
import 'package:em2rp/utils/permission_gate.dart';
class DataManagementPage extends StatefulWidget { class DataManagementPage extends StatefulWidget {
const DataManagementPage({super.key}); const DataManagementPage({super.key});
@@ -31,15 +32,44 @@ class _DataManagementPageState extends State<DataManagementPage> {
Widget build(BuildContext context) { Widget build(BuildContext context) {
final isMobile = MediaQuery.of(context).size.width < 800; 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'), appBar: CustomAppBar(title: 'Gestion des données'),
drawer: const MainDrawer(currentPage: '/data_management'), // Ajout du drawer drawer: const MainDrawer(currentPage: '/data_management'), // Ajout du drawer
body: isMobile ? _buildMobileLayout() : _buildDesktopLayout(), body: isMobile ? _buildMobileLayout() : _buildDesktopLayout(),
),
); );
} }
Widget _buildMobileLayout() { 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: [ children: [
// Menu horizontal en mobile // Menu horizontal en mobile
Container( Container(
@@ -86,6 +116,7 @@ class _DataManagementPageState extends State<DataManagementPage> {
child: _categories[_selectedIndex].widget, child: _categories[_selectedIndex].widget,
), ),
], ],
)
); );
} }

View File

@@ -134,19 +134,22 @@ class MainDrawer extends StatelessWidget {
}, },
), ),
), ),
ListTile( PermissionGate(
leading: const Icon(Icons.data_usage), requiredPermissions: const ['edit_data'],
title: const Text('Gestion des Données'), child: ListTile(
selected: currentPage == '/data_management', leading: const Icon(Icons.data_usage),
selectedColor: AppColors.rouge, title: const Text('Gestion des Données'),
onTap: () { selected: currentPage == '/data_management',
Navigator.pop(context); selectedColor: AppColors.rouge,
Navigator.pushReplacement( onTap: () {
context, Navigator.pop(context);
MaterialPageRoute( Navigator.pushReplacement(
builder: (context) => const DataManagementPage()), context,
); MaterialPageRoute(
}, builder: (context) => const DataManagementPage()),
);
},
),
), ),
], ],
), ),