using System; using System.Collections.Generic; using System.Collections.ObjectModel; using Aitex.Core.RT.Log; using MECF.Framework.UI.Client.ClientBase; namespace MECF.Framework.UI.Client.CenterViews.Configs.Roles; public class PermissionHelper { #region Constructors public MenuPermissionEnum this[string permName] => GetPermissionByID(permName); #endregion #region Properties public Dictionary MenuPermissionDictionary { get; } = new(); #endregion #region Methods /// /// 解析_Account.xml文件中的权限字串。 /// /// public void ParsePermission(string permissionString) { try { permissionString = permissionString.Replace("\n", "").Replace(" ", ""); var groupIndex = permissionString.IndexOf(';'); if (groupIndex == -1) { AddToDictionary(permissionString); return; } var strGroup = permissionString.Substring(0, groupIndex); AddToDictionary(strGroup); ParsePermission(permissionString.Substring(groupIndex + 1)); } catch (Exception ex) { LOG.Write(ex); } } /// /// 创建保存于_Account.xml中的权限字串。 /// /// 底部菜单栏访问权限列表 /// Recipe列访问权限列表 /// 内容访问权限列表 /// Recipe步骤访问权限列表 /// public static string PermissionToString(ObservableCollection menuPermission, ObservableCollection recipeColumnsPermission, ObservableCollection contentPermission, ObservableCollection recipeStepPermission) { var strResult = ""; if (menuPermission == null) return strResult; foreach (var info in menuPermission) { strResult += info.ID; strResult += ","; strResult += info.Permission.EnumValue; strResult += ";"; } foreach (var info in recipeColumnsPermission) { strResult += info.Name; strResult += ","; strResult += info.Permission.EnumValue; strResult += ";"; } foreach (var info in contentPermission) { strResult += info.Name; strResult += ","; strResult += info.Permission.EnumValue; strResult += ";"; } foreach (var info in recipeStepPermission) { strResult += info.Name; strResult += ","; strResult += info.Permission.EnumValue; strResult += ";"; } return strResult; } public MenuPermissionEnum GetPermissionByID(string id) { if (MenuPermissionDictionary.TryGetValue(id, out var perm)) return perm; return MenuPermissionEnum.MP_NONE; } private void AddToDictionary(string permItem) { var index = permItem.IndexOf(','); if (index == -1) return; var strMenuID = permItem.Substring(0, index); var strMenuPermission = permItem.Substring(index + 1); MenuPermissionDictionary.Add(strMenuID, (MenuPermissionEnum)Convert.ToInt32(strMenuPermission)); } #endregion }