using System; using System.Collections.Generic; using System.Linq; using System.Text; using HslCommunication; using Newtonsoft.Json.Linq; namespace CommonLibrary { /********************************************************************************** * * 说明:本系统的角色设计 * * 角色功能的设计就是针对一些特殊功能权限的账户设计的,我们希望实现对某一个功能的角色可以 * 任意的配置账户 * **********************************************************************************/ /// /// 角色分配的管理器 /// public class RoleAssign : HslCommunication.BasicFramework.SoftFileSaveBase { #region Constructor public RoleAssign() { // 添加一个初始化的测试例子 m_roles.Add(new RoleItem() { RoleName = "审计员", Accounts = new List() { "admin" } }); } #endregion #region Override Method public override string ToSaveString() { string json = string.Empty; hybirdLock.Enter(); json = JArray.FromObject(m_roles).ToString(); hybirdLock.Leave(); return json; } public override void LoadByString(string content) { hybirdLock.Enter(); m_roles = JArray.Parse(content).ToObject>(); hybirdLock.Leave(); } #endregion #region Public Method public bool IsAllowAccountOperate(string roleCode,string name) { bool result = false; hybirdLock.Enter(); for (int i = 0; i < m_roles.Count; i++) { if (m_roles[i].RoleCode == roleCode) { if (m_roles[i].Accounts != null) { if (m_roles[i].Accounts.Contains(name)) { result = true; } } } } hybirdLock.Leave(); return result; } #endregion #region Private Members private List m_roles = new List(); private SimpleHybirdLock hybirdLock = new SimpleHybirdLock(); #endregion } /// /// 单个角色对象 /// public class RoleItem { #region Public Property /// /// 角色的唯一代码 /// public string RoleCode { get; set; } = Guid.NewGuid().ToString("N"); /// /// 角色名称 /// public string RoleName { get; set; } /// /// 角色描述 /// public string Description { get; set; } /// /// 关联的账户列表 /// public List Accounts { get; set; } = new List(); #endregion #region Object Override /// /// 返回对象的字符串标识形式 /// /// public override string ToString() { return RoleName; } #endregion } }