/// <summary> /// 建立一个新的角色 /// </summary> /// <param name="name"></param> /// <param name="modules"></param> /// <param name="nodes"></param> /// <param name="isEffect"> </param> /// <returns></returns> public Role CreateRole(string name, string[] modules, string[] nodes, bool isEffect = true) { if(ExistRole(name)) throw new ApplicationException("管理员分组已经存在"); var role = new Role { Name = name.Trim(), Accesses = new List<RoleAccess>(), IsDelete = false, IsEffect = isEffect }; AddModulesForRole(role, modules); AddNodesForRole(role, nodes); DbProvider.Add(role); DbProvider.SaveChanges(); return role; }
/// <summary> /// 为角色添加基于模块的访问权限 /// </summary> /// <param name="role"></param> /// <param name="modules"></param> private static void AddModulesForRole(Role role, IEnumerable<string> modules) { foreach (var mid in modules??new string[]{}) { role.Accesses.Add(new RoleAccess { RoleId = role.ID,Module = mid, Node = string.Empty }); } }
/// <summary> /// 为角色添加基于节点的访问权限 /// </summary> /// <param name="role"></param> /// <param name="nodes"></param> private static void AddNodesForRole(Role role, IEnumerable<string> nodes) { foreach (var nid in nodes ?? new string[] { }) { role.Accesses.Add(new RoleAccess { RoleId =role.ID ,Module = string.Empty, Node = nid }); } }
private RoleModel CreateRoleModel(Role role,PermissionCollection permissions) { var model = role==null?new RoleModel(): new RoleModel { ID = role.ID, Name = role.Name, IsEffect = role.IsEffect }; IDictionary<string, RoleModuleModel> modules = new Dictionary<string, RoleModuleModel>(); foreach (var node in SecurityManager.Instance.Nodes) { var v = node.Value; if (!modules.ContainsKey(v.ModuleKey)) { modules.Add(v.ModuleKey, new RoleModuleModel { Name = v.Module, Value = v.ModuleKey,IsSelect = permissions.HasModule(v)}); } modules[v.ModuleKey].RoleNodes.Add(new RoleNodeModel() { IsDisable = false, IsSelect = !modules[v.ModuleKey].IsSelect && permissions.HasNode(v), Name = v.Name, Value = v.NodeKey }); } model.Modules = modules.Values.ToList(); return model; }