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