Ajout d'utilisateur OK
Ajout bouton de deconnexion
This commit is contained in:
		
							
								
								
									
										42
									
								
								em2rp/lib/utils/permission_gate.dart
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										42
									
								
								em2rp/lib/utils/permission_gate.dart
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,42 @@ | ||||
| import 'package:flutter/material.dart'; | ||||
| import 'package:provider/provider.dart'; | ||||
| import 'package:em2rp/models/role_model.dart'; | ||||
| import 'package:em2rp/providers/local_user_provider.dart'; | ||||
|  | ||||
| class PermissionGate extends StatelessWidget { | ||||
|   final Widget child; | ||||
|   final List<Permission> requiredPermissions; | ||||
|   final bool requireAll; | ||||
|   final Widget? fallback; | ||||
|  | ||||
|   const PermissionGate({ | ||||
|     super.key, | ||||
|     required this.child, | ||||
|     required this.requiredPermissions, | ||||
|     this.requireAll = true, | ||||
|     this.fallback, | ||||
|   }); | ||||
|  | ||||
|   @override | ||||
|   Widget build(BuildContext context) { | ||||
|     return Consumer<LocalUserProvider>( | ||||
|       builder: (context, localUserProvider, _) { | ||||
|         final currentUser = localUserProvider.currentUser; | ||||
|         if (currentUser == null) { | ||||
|           return fallback ?? const SizedBox.shrink(); | ||||
|         } | ||||
|  | ||||
|         final userRole = Roles.fromString(currentUser.role); | ||||
|         final hasPermission = requireAll | ||||
|             ? userRole.hasAllPermissions(requiredPermissions) | ||||
|             : userRole.hasAnyPermission(requiredPermissions); | ||||
|  | ||||
|         if (hasPermission) { | ||||
|           return child; | ||||
|         } | ||||
|  | ||||
|         return fallback ?? const SizedBox.shrink(); | ||||
|       }, | ||||
|     ); | ||||
|   } | ||||
| } | ||||
		Reference in New Issue
	
	Block a user