2023-04-13 11:51:03 +08:00
|
|
|
using System;
|
2023-09-05 00:12:08 +08:00
|
|
|
using System.Collections.Generic;
|
2023-09-20 17:25:51 +08:00
|
|
|
using MECF.Framework.Common.Account.Permissions;
|
2023-04-13 11:51:03 +08:00
|
|
|
|
|
|
|
namespace MECF.Framework.Common.Account.Extends
|
|
|
|
{
|
2023-09-04 11:51:05 +08:00
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
/// 角色对象。Sic系统中对于各个操作权限以“角色”为单位进行设置。
|
|
|
|
/// </summary>
|
2023-04-13 11:51:03 +08:00
|
|
|
[Serializable]
|
|
|
|
public class Role
|
|
|
|
{
|
2023-08-28 11:30:57 +08:00
|
|
|
#region Variables
|
2023-04-13 11:51:03 +08:00
|
|
|
|
2023-08-28 11:30:57 +08:00
|
|
|
private string _roleId;
|
|
|
|
private string _roleName;
|
|
|
|
private bool _autoLogout;
|
|
|
|
private int _logoutTime;
|
2023-09-04 11:51:05 +08:00
|
|
|
private string _permissionContent;
|
2023-08-28 11:30:57 +08:00
|
|
|
private string _description;
|
2023-04-13 11:51:03 +08:00
|
|
|
|
2023-09-18 10:13:40 +08:00
|
|
|
#endregion
|
2023-04-13 11:51:03 +08:00
|
|
|
|
2023-09-18 10:13:40 +08:00
|
|
|
#region Constructors
|
2023-04-13 11:51:03 +08:00
|
|
|
|
2023-08-28 11:30:57 +08:00
|
|
|
/// <summary>
|
|
|
|
/// 构造角色的对象实例。
|
|
|
|
/// </summary>
|
|
|
|
/// <param name="id">角色ID</param>
|
|
|
|
/// <param name="name">角色名称</param>
|
|
|
|
/// <param name="isAutoLogout">是否启用超时自动注销功能</param>
|
|
|
|
/// <param name="autoLogoutTime">自动注销的超时时间,单位秒</param>
|
2023-09-05 00:12:08 +08:00
|
|
|
/// <param name="permString">角色权限字符串</param>
|
2023-09-04 16:28:14 +08:00
|
|
|
/// <param name="isBuildIn">当前账户是否为系统保留账户。</param>
|
2023-08-28 11:30:57 +08:00
|
|
|
/// <param name="description">角色描述</param>
|
2023-09-05 00:12:08 +08:00
|
|
|
private Role(string id, string name, bool isAutoLogout, int autoLogoutTime, string permString, bool isBuildIn = false, string description = "")
|
2023-08-28 11:30:57 +08:00
|
|
|
{
|
|
|
|
RoleId = id;
|
|
|
|
_roleName = name;
|
|
|
|
_autoLogout = isAutoLogout;
|
|
|
|
_logoutTime = autoLogoutTime;
|
|
|
|
_description = description;
|
2023-09-05 00:12:08 +08:00
|
|
|
_permissionContent = permString;
|
|
|
|
IsSuper = false;
|
|
|
|
IsBuildIn = isBuildIn;
|
|
|
|
}
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
/// 构造角色的对象实例。
|
|
|
|
/// </summary>
|
|
|
|
/// <param name="id">角色ID</param>
|
|
|
|
/// <param name="name">角色名称</param>
|
|
|
|
/// <param name="isAutoLogout">是否启用超时自动注销功能</param>
|
|
|
|
/// <param name="autoLogoutTime">自动注销的超时时间,单位秒</param>
|
|
|
|
/// <param name="permItemList">角色权限列表</param>
|
|
|
|
/// <param name="isBuildIn">当前账户是否为系统保留账户。</param>
|
|
|
|
/// <param name="description">角色描述</param>
|
|
|
|
public Role(string id, string name, bool isAutoLogout, int autoLogoutTime, Dictionary<string, MenuPermissionEnum> permItemList, bool isBuildIn = false, string description = "")
|
|
|
|
{
|
|
|
|
RoleId = id;
|
|
|
|
_roleName = name;
|
|
|
|
_autoLogout = isAutoLogout;
|
|
|
|
_logoutTime = autoLogoutTime;
|
|
|
|
_description = description;
|
|
|
|
PermissionControlItems = permItemList ?? new Dictionary<string, MenuPermissionEnum>();
|
2023-08-28 11:30:57 +08:00
|
|
|
IsSuper = false;
|
2023-09-04 16:28:14 +08:00
|
|
|
IsBuildIn = isBuildIn;
|
2023-08-28 11:30:57 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
#endregion
|
2023-04-13 11:51:03 +08:00
|
|
|
|
2023-08-28 11:30:57 +08:00
|
|
|
#region Properties
|
2023-04-13 11:51:03 +08:00
|
|
|
|
2023-08-28 11:30:57 +08:00
|
|
|
/// <summary>
|
|
|
|
/// 设置或返回角色ID。
|
|
|
|
/// </summary>
|
|
|
|
public string RoleId
|
2023-04-13 11:51:03 +08:00
|
|
|
{
|
2023-08-28 11:30:57 +08:00
|
|
|
get => _roleId;
|
|
|
|
set => _roleId = value;
|
2023-04-13 11:51:03 +08:00
|
|
|
}
|
|
|
|
|
2023-08-28 11:30:57 +08:00
|
|
|
/// <summary>
|
|
|
|
/// 设置或返回角色名称。
|
|
|
|
/// </summary>
|
2023-04-13 11:51:03 +08:00
|
|
|
public string RoleName
|
|
|
|
{
|
2023-08-28 11:30:57 +08:00
|
|
|
get => _roleName;
|
|
|
|
set => _roleName = value;
|
2023-04-13 11:51:03 +08:00
|
|
|
}
|
|
|
|
|
2023-08-28 11:30:57 +08:00
|
|
|
/// <summary>
|
|
|
|
/// 设置或返回是否启用超时自动注销功能。
|
|
|
|
/// </summary>
|
2023-04-13 11:51:03 +08:00
|
|
|
public bool IsAutoLogout
|
|
|
|
{
|
2023-08-28 11:30:57 +08:00
|
|
|
get => _autoLogout;
|
|
|
|
set => _autoLogout = value;
|
2023-04-13 11:51:03 +08:00
|
|
|
}
|
|
|
|
|
2023-08-28 11:30:57 +08:00
|
|
|
/// <summary>
|
|
|
|
/// 设置或返回自动注销的超时时间,单位秒。
|
|
|
|
/// </summary>
|
2023-04-13 11:51:03 +08:00
|
|
|
public int LogoutTime
|
|
|
|
{
|
2023-08-28 11:30:57 +08:00
|
|
|
get => _logoutTime;
|
|
|
|
set => _logoutTime = value;
|
2023-04-13 11:51:03 +08:00
|
|
|
}
|
|
|
|
|
2023-08-28 11:30:57 +08:00
|
|
|
/// <summary>
|
2023-09-04 11:51:05 +08:00
|
|
|
/// 设置或返回描述当前角色权限的字串。
|
2023-08-28 11:30:57 +08:00
|
|
|
/// </summary>
|
2023-09-04 11:51:05 +08:00
|
|
|
public string PermissionContent
|
2023-04-13 11:51:03 +08:00
|
|
|
{
|
2023-09-04 11:51:05 +08:00
|
|
|
get => _permissionContent;
|
|
|
|
set => _permissionContent = value;
|
2023-04-13 11:51:03 +08:00
|
|
|
}
|
|
|
|
|
2023-09-20 17:25:51 +08:00
|
|
|
/// <summary>
|
|
|
|
/// 权限控制项列表。
|
|
|
|
/// </summary>
|
2023-09-05 00:12:08 +08:00
|
|
|
public Dictionary<string, MenuPermissionEnum> PermissionControlItems { get; }
|
|
|
|
|
2023-08-28 11:30:57 +08:00
|
|
|
/// <summary>
|
|
|
|
/// 设置或返回当前角色描述。
|
|
|
|
/// </summary>
|
2023-04-13 11:51:03 +08:00
|
|
|
public string Description
|
|
|
|
{
|
2023-08-28 11:30:57 +08:00
|
|
|
get => _description;
|
|
|
|
set => _description = value;
|
2023-04-13 11:51:03 +08:00
|
|
|
}
|
|
|
|
|
2023-08-28 11:30:57 +08:00
|
|
|
/// <summary>
|
|
|
|
/// 设置或返回当前角色是否为超级用户。
|
|
|
|
/// </summary>
|
2023-04-13 11:51:03 +08:00
|
|
|
public bool IsSuper { get; set; }
|
2023-09-04 16:28:14 +08:00
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
/// 返回当前账户是否为系统保留账户。
|
|
|
|
/// </summary>
|
2023-09-04 17:22:01 +08:00
|
|
|
public bool IsBuildIn { get; set; }
|
2023-04-13 11:51:03 +08:00
|
|
|
|
2023-08-28 11:30:57 +08:00
|
|
|
#endregion
|
|
|
|
|
2023-09-05 00:40:37 +08:00
|
|
|
#region Methods
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
/// 获取指定项目的权限。
|
|
|
|
/// </summary>
|
|
|
|
/// <param name="name"></param>
|
|
|
|
/// <returns></returns>
|
2023-09-18 10:13:40 +08:00
|
|
|
public virtual MenuPermissionEnum GetPermission(string name)
|
2023-09-05 00:40:37 +08:00
|
|
|
{
|
|
|
|
if (PermissionControlItems.TryGetValue(name, out var permissionEnum))
|
|
|
|
return permissionEnum;
|
|
|
|
|
|
|
|
return MenuPermissionEnum.MP_NONE;
|
|
|
|
}
|
|
|
|
|
2023-09-20 17:25:51 +08:00
|
|
|
/// <inheritdoc />
|
|
|
|
public override string ToString()
|
|
|
|
{
|
|
|
|
return $"ID = {RoleId}, Name = {RoleName}, Permission Items = {PermissionControlItems.Count}";
|
|
|
|
}
|
|
|
|
|
2023-09-05 00:40:37 +08:00
|
|
|
#endregion
|
2023-04-13 11:51:03 +08:00
|
|
|
}
|
|
|
|
}
|