Sic.Framework-Nanjing-Baishi/MECF.Framework.UI.Client/CenterViews/Configs/Roles/PermissionHelper.cs

130 lines
3.6 KiB
C#

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<string, MenuPermissionEnum> MenuPermissionDictionary { get; } = new();
#endregion
#region Methods
/// <summary>
/// 解析_Account.xml文件中的权限字串。
/// </summary>
/// <param name="permissionString"></param>
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);
}
}
/// <summary>
/// 创建保存于_Account.xml中的权限字串。
/// </summary>
/// <param name="menuPermission">底部菜单栏访问权限列表</param>
/// <param name="recipeColumnsPermission">Recipe列访问权限列表</param>
/// <param name="contentPermission">内容访问权限列表</param>
/// <param name="recipeStepPermission">Recipe步骤访问权限列表</param>
/// <returns></returns>
public static string PermissionToString(ObservableCollection<PermissionControlItem> menuPermission,
ObservableCollection<PermissionControlItem> recipeColumnsPermission,
ObservableCollection<PermissionControlItem> contentPermission,
ObservableCollection<PermissionControlItem> 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
}