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