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