Beispiel #1
0
        /// <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;
        }
Beispiel #2
0
 /// <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 });
     }
 }
Beispiel #3
0
 /// <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 });
     }
 }
Beispiel #4
0
        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;
        }