using HMI.Core.Entity; using System.Linq; using System.Windows; namespace HMI.Core.DpUtil { public class PermissionHelper { public static string GetRequiredPermission(UIElement element) { return (string)element.GetValue(RequiredPermissionProperty); } public static void SetRequiredPermission(UIElement element, string requiredPermission) { element.SetValue(RequiredPermissionProperty, requiredPermission); } public static readonly DependencyProperty RequiredPermissionProperty = DependencyProperty.RegisterAttached("RequiredPermission", typeof(string), typeof(UIElement), new PropertyMetadata(string.Empty, OnRequiredPermissionChanged)); private static void OnRequiredPermissionChanged(DependencyObject d, DependencyPropertyChangedEventArgs e) { if (d is UIElement element) { if (e.Property == RequiredPermissionProperty) { var requiredPermission = (string)e.NewValue; if (string.IsNullOrEmpty(requiredPermission)) return; if (UserInfo.User == null) { element.Visibility = Visibility.Collapsed; return; } if (UserInfo.User?.AllPermissions == null) { element.Visibility = Visibility.Collapsed; return; } if (UserInfo.User.AllPermissions.FirstOrDefault(p => p.Code == requiredPermission) != null) return; element.Visibility = Visibility.Collapsed; } } } } }