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/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,
),
],
)
);
}

View File

@@ -134,7 +134,9 @@ class MainDrawer extends StatelessWidget {
},
),
),
ListTile(
PermissionGate(
requiredPermissions: const ['edit_data'],
child: ListTile(
leading: const Icon(Icons.data_usage),
title: const Text('Gestion des Données'),
selected: currentPage == '/data_management',
@@ -148,6 +150,7 @@ class MainDrawer extends StatelessWidget {
);
},
),
),
],
),
),