160 lines
5.0 KiB
C#
160 lines
5.0 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Collections.ObjectModel;
|
|
using Aitex.Core.RT.Log;
|
|
|
|
namespace MECF.Framework.Common.Account;
|
|
|
|
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;
|
|
}
|
|
|
|
/// <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 Dictionary<string, MenuPermissionEnum> PermissionToDictionary(ObservableCollection<PermissionControlItem> menuPermission,
|
|
ObservableCollection<PermissionControlItem> recipeColumnsPermission,
|
|
ObservableCollection<PermissionControlItem> contentPermission,
|
|
ObservableCollection<PermissionControlItem> recipeStepPermission)
|
|
{
|
|
var dictPerm = new Dictionary<string, MenuPermissionEnum>();
|
|
|
|
if (menuPermission == null)
|
|
return null;
|
|
|
|
foreach (var info in menuPermission)
|
|
dictPerm.Add(info.ID, info.Permission.EnumValue);
|
|
|
|
foreach (var info in recipeColumnsPermission)
|
|
dictPerm.Add(info.ID, info.Permission.EnumValue);
|
|
|
|
foreach (var info in contentPermission)
|
|
dictPerm.Add(info.ID, info.Permission.EnumValue);
|
|
|
|
foreach (var info in recipeStepPermission)
|
|
dictPerm.Add(info.ID, info.Permission.EnumValue);
|
|
|
|
return dictPerm;
|
|
}
|
|
|
|
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
|
|
|
|
}
|
|
|