[UI.Client]

修正Role编辑界面中没有显示权限条目的问题。
This commit is contained in:
SL 2023-09-05 00:40:37 +08:00
parent a913ebe2b5
commit 86aed90177
3 changed files with 52 additions and 20 deletions

View File

@ -139,5 +139,21 @@ namespace MECF.Framework.Common.Account.Extends
#endregion
#region Methods
/// <summary>
/// 获取指定项目的权限。
/// </summary>
/// <param name="name"></param>
/// <returns></returns>
public MenuPermissionEnum GetPermission(string name)
{
if (PermissionControlItems.TryGetValue(name, out var permissionEnum))
return permissionEnum;
return MenuPermissionEnum.MP_NONE;
}
#endregion
}
}

View File

@ -1,7 +1,6 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.ServiceModel.Description;
using System.Text;
using System.Xml.Linq;
using Aitex.Core.RT.Log;
@ -91,25 +90,47 @@ namespace MECF.Framework.Common.Account.Extends
var strAutoLogoutTime = roleNode.Attribute("logouttime").Value;
int.TryParse(strAutoLogoutTime, out var logoutTime);
var isAutoLogout = ((strIsAutoLogout == "1"));
var strBuildIn = roleNode.Attribute("buildin")?.Value ?? "false";
if (!bool.TryParse(strBuildIn, out var isBuildIn))
isBuildIn = false;
// ID为0 ~ 3的角色强制为系统内置角色禁止删除
// ID为0 ~ 3的角色强制为系统内置角色禁止删除
if (strRoleId is "0" or "1" or "2" or "3")
isBuildIn = true;
var strDescription = roleNode.Attribute("description")?.Value ?? "";
// 旧版的权限保存方式为字符串形式,新版更改为<Perm />节点列表。
// 为兼容旧格式此处应该判断roleNode节点中的内容将旧版自动转换为PermissionControlItem列表
var permContent= roleNode.Value;
var helper = new PermissionHelper();
helper.ParsePermission(permContent);
var role = new Role(strRoleId, strRoleName, isAutoLogout, logoutTime, helper.MenuPermissionDictionary, isBuildIn, strDescription);
list.Add(role);
if (roleNode.FirstNode is XText)
{
var permContent = roleNode.Value;
var helper = new PermissionHelper();
helper.ParsePermission(permContent);
var role = new Role(strRoleId, strRoleName, isAutoLogout, logoutTime,
helper.MenuPermissionDictionary, isBuildIn, strDescription);
list.Add(role);
}
else
{
var permList = new Dictionary<string, MenuPermissionEnum>();
foreach (var xe in roleNode.Elements("Perm"))
{
var permName = xe.Attribute("name")?.Value;
var strPermValue = xe.Attribute("value")?.Value ?? "1";
if (!int.TryParse(strPermValue, out var permValue))
permValue = (int)MenuPermissionEnum.MP_NONE;
if (!string.IsNullOrEmpty(permName))
permList[permName] = (MenuPermissionEnum)permValue;
}
var role = new Role(strRoleId, strRoleName, isAutoLogout, logoutTime,
permList, isBuildIn, strDescription);
list.Add(role);
}
}
var roleAdmin = new Role("-1", "Administrators", true, 20, null, true, null)
{
IsSuper = true

View File

@ -84,12 +84,7 @@ namespace MECF.Framework.UI.Client.CenterViews.Configs.Roles
foreach (var role in roles)
{
var ri = new RoleItem(role);
// 从Role的权限字串创建权限列表。
var permHelper = new PermissionHelper();
permHelper.ParsePermission(role.PermissionContent);
var headerPerm = RolePermissionMapper.FromMenuPermissionEnum(permHelper.GetPermissionByID("Header"));
var headerPerm = RolePermissionMapper.FromMenuPermissionEnum(role.PermissionControlItems["Header"]);
var mp = new PermissionControlItem("Header", headerPerm, "Header");
ri.AddMenuInfo(mp);
@ -102,7 +97,7 @@ namespace MECF.Framework.UI.Client.CenterViews.Configs.Roles
var appName = topMenuItem.ResKey + "." + subMenuItem.ResKey;
var id = subMenuItem.MenuID;
var appPerm = RolePermissionMapper.FromMenuPermissionEnum(
permHelper.GetPermissionByID(id));
role.GetPermission(id));
var perm = new PermissionControlItem(appName, appPerm, id);
ri.AddMenuInfo(perm);
}
@ -111,7 +106,7 @@ namespace MECF.Framework.UI.Client.CenterViews.Configs.Roles
foreach (var recipeInfo in _recipeColumnPermSource)
{
var recipePerm = RolePermissionMapper.FromMenuPermissionEnum(
permHelper.GetPermissionByID(recipeInfo.Name));
role.GetPermission(recipeInfo.Name));
var perm = new PermissionControlItem(recipeInfo.Name, recipePerm);
ri.AddRecipeInfo(perm);
}
@ -119,7 +114,7 @@ namespace MECF.Framework.UI.Client.CenterViews.Configs.Roles
foreach (var stepInfo in _recipeStepPermSource)
{
var stepPerm = RolePermissionMapper.FromMenuPermissionEnum(
permHelper.GetPermissionByID(stepInfo.Name));
role.GetPermission(stepInfo.Name));
var perm = new PermissionControlItem(stepInfo.Name, stepPerm);
ri.AddStepInfo(perm);
}
@ -127,7 +122,7 @@ namespace MECF.Framework.UI.Client.CenterViews.Configs.Roles
foreach (var contentInfo in _contentPermSource)
{
var contentPerm = RolePermissionTrueFalseMapper.FromMenuPermissionEnum(
permHelper.GetPermissionByID(contentInfo.Name));
role.GetPermission(contentInfo.Name));
var perm = new PermissionControlItem(contentInfo.Name, contentPerm, description:contentInfo.Description);
ri.AddContentInfo(perm);