/// <summary> /// 新增模块。 /// </summary> /// <param name="dto">待新增模块的信息。</param> /// <returns>新模块的Id。(-2:Tag重复。)</returns> public static string InsertModule(ModuleDTO dto) { Module existingM = GetModuleByTag(dto.Tag); if (existingM != null) { return("-2"); } Db.SessionFactory.EvictQueries("Module"); //模块基本信息。 Module m = new Module(); m.Id = IdGen.GetNextId(typeof(Module)); m.Tag = dto.Tag; m.Name = dto.Name; m.Remark = dto.Remark; m.OrderId = dto.OrderId; m.ModuleUrl = dto.ModuleUrl; m.Disabled = dto.Disabled; //模块分类。 ModuleType mt = Db.Session.Load(typeof(ModuleType), dto.ModuleTypeId) as ModuleType; mt.AddModule(m); //获取新增模块权限的主键值。 string[] Ids = null; if (dto.ModuleRights.Count > 0) { Ids = IdGen.GetNextId(typeof(ModuleRight), dto.ModuleRights.Count); } //向数据库保存模块和模块权限。 ITransaction transaction = Db.Session.BeginTransaction(); try { Db.Session.Save(m); for (int i = 0; i < dto.ModuleRights.Count; i++) { ModuleRight mr = new ModuleRight(); mr.Id = Ids[i]; mr.RightTag = dto.ModuleRights[i].ToString(); m.AddModuleRight(mr); Db.Session.Save(mr); } transaction.Commit(); } catch { transaction.Rollback(); throw; } //返回新模块的Id。 return(m.Id); }
//返回模块分类 模块 序列化List IList GetModulePermissionList(IList ilModuleType, SysCodeType sct, Role role) { IList l = new List <NodeType>(); foreach (ModuleType sub in ilModuleType) { NodeType ntype = new NodeType(); ntype.id = sub.Id; ntype.text = sub.Name; ntype.ntype = "moduletype"; ntype.state = "closed"; if (sub.SubModuleTypes.Count > 0) { ntype.children = GetModulePermissionList(sub.SubModuleTypes, sct, role); } if (sub.Modules.Count > 0) { ntype.children = ntype.children ?? new List <NodeType>(); //IList l_module = new List<NodeType>(); foreach (Module m in sub.Modules) { NodeType nsubtype = new NodeType(); nsubtype.id = m.Id; nsubtype.text = m.Name; nsubtype.ntype = "module"; IList l_module_rights = new List <NodeType>(); //增加肯定权限。 foreach (SysCode sc in sct.SysCodes) { if (m.ModuleRights.ContainsKey(sc.Tag)) { NodeType rightsType = new NodeType(); ModuleRight mr = m.ModuleRights[sc.Tag] as ModuleRight; rightsType.id = mr.Id; rightsType.ntype = "grant"; rightsType.text = sc.Name; rightsType.Checked = role.ModuleRightsGrant.Contains(mr); l_module_rights.Add(rightsType); } } if (l_module_rights.Count > 0) { nsubtype.children = l_module_rights; ntype.children.Add(nsubtype); } } //ntype.children = l_module; } l.Add(ntype); } return(l); }
private void AddSubNodes(Microsoft.Web.UI.WebControls.TreeNode currentNode, ModuleType currentModuleType, Staff staff, SysCodeType sct) { //增加子模块分类 foreach (ModuleType mt in currentModuleType.SubModuleTypes) { Microsoft.Web.UI.WebControls.TreeNode node = new Microsoft.Web.UI.WebControls.TreeNode(); currentNode.Nodes.Add(node); node.Type = "moduletype"; node.Text = mt.Name; AddSubNodes(node, mt, staff, sct); node.Expanded = true; } //增加模块 foreach (Module m in currentModuleType.Modules) { Microsoft.Web.UI.WebControls.TreeNode node = new Microsoft.Web.UI.WebControls.TreeNode(); currentNode.Nodes.Add(node); node.Type = "module"; node.Text = m.Name; //增加肯定权限。 foreach (SysCode sc in sct.SysCodes) { if (m.ModuleRights.Contains(sc.Tag)) { ModuleRight mr = m.ModuleRights[sc.Tag] as ModuleRight; Microsoft.Web.UI.WebControls.TreeNode rightsNode = new Microsoft.Web.UI.WebControls.TreeNode(); node.Nodes.Add(rightsNode); rightsNode.Type = "grant"; rightsNode.Text = sc.Name; rightsNode.PKId = mr.Id; rightsNode.CheckBox = true; rightsNode.Checked = staff.ModuleRightsGrant.Contains(mr); } } //增加否定权限。 foreach (SysCode sc in sct.SysCodes) { if (m.ModuleRights.Contains(sc.Tag)) { ModuleRight mr = m.ModuleRights[sc.Tag] as ModuleRight; Microsoft.Web.UI.WebControls.TreeNode rightsNode = new Microsoft.Web.UI.WebControls.TreeNode(); node.Nodes.Add(rightsNode); rightsNode.Type = "deny"; rightsNode.Text = sc.Name; rightsNode.PKId = mr.Id; rightsNode.CheckBox = true; rightsNode.Checked = staff.ModuleRightsDeny.Contains(mr); } } } }
//返回模块分类 模块 序列化List IList GetModuleTypeList(IList ilModuleType, Staff staff) { IList l = new List <NodeType>(); foreach (ModuleType sub in ilModuleType) { NodeType ntype = new NodeType(); ntype.id = sub.Id; ntype.text = sub.Name; ntype.ntype = "moduletype"; if (sub.SubModuleTypes.Count > 0) { ntype.children = GetModuleTypeList(sub.SubModuleTypes, staff); } if (sub.Modules.Count > 0) { ntype.children = ntype.children ?? new List <NodeType>(); //IList l_module = new List<NodeType>(); foreach (Module m in sub.Modules) { ModuleRight mr = Gecko.Security.Service.ModuleRightSrv.GetModuleRight(m, "rights_browse"); if (mr != null) { if (staff.HasGrantPermission(mr)) { NodeType nsbutype = new NodeType(); nsbutype.id = m.Id; nsbutype.text = m.Name; nsbutype.suburl = m.ModuleUrl; ntype.children.Add(nsbutype); } } } //ntype.children = l_module; } l.Add(ntype); } return(l); }
/// <summary> /// 更新职员的模块授权信息。 /// </summary> /// <param name="staffId">职员登录ID。</param> /// <param name="grant">肯定授权的权限ID。</param> /// <param name="deny">否定授权的权限ID。</param> public static void UpdatePermissions(string staffId, string[] grant, string[] deny) { ITransaction transaction = Db.Session.BeginTransaction(); try { Staff s = Db.Session.Load(typeof(Staff), staffId) as Staff; //更新肯定权限。 s.ModuleRightsGrant.Clear(); foreach (ModuleRight mr in s.ModuleRightsGrant) { mr.RolesGrant.Remove(s); } for (int i = 0; i < grant.Length; i++) { ModuleRight mr = Db.Session.Load(typeof(ModuleRight), grant[i]) as ModuleRight; s.ModuleRightsGrant.Add(mr); mr.RolesGrant.Add(s); } //更新肯定权限。 s.ModuleRightsDeny.Clear(); foreach (ModuleRight mr in s.ModuleRightsDeny) { mr.RolesGrant.Remove(s); } for (int i = 0; i < deny.Length; i++) { ModuleRight mr = Db.Session.Load(typeof(ModuleRight), deny[i]) as ModuleRight; s.ModuleRightsDeny.Add(mr); mr.RolesDeny.Add(s); } transaction.Commit(); } catch { transaction.Rollback(); throw; } }
public void Remove(ModuleRight moduleRights) { context.Remove(moduleRights); }
public void Add(ModuleRight moduleRights) { context.ModuleRight.Add(moduleRights); }
/// <summary> /// 更新模块。 /// </summary> /// <param name="dto">待更新模块的信息。</param> /// <returns>成功标示。(1:成功;-2:Tag重复。)</returns> public static string UpdateModule(ModuleDTO dto) { Module existingM = GetModuleByTag(dto.Tag); if (existingM != null && existingM.Id != dto.Id) { return("-2"); } Db.SessionFactory.EvictQueries("Module"); //模块基本信息。 Module m = Db.Session.Load(typeof(Module), dto.Id) as Module; m.Tag = dto.Tag; m.Name = dto.Name; m.Remark = dto.Remark; m.OrderId = dto.OrderId; m.ModuleUrl = dto.ModuleUrl; m.Disabled = dto.Disabled; //待删除的权限。 ArrayList ToBeRemoved = new ArrayList(); IDictionaryEnumerator ide = m.ModuleRights.GetEnumerator(); while (ide.MoveNext()) { string key = ((DictionaryEntry)ide.Current).Key.ToString(); bool isFind = false; for (int i = 0; i < dto.ModuleRights.Count; i++) { if (key == dto.ModuleRights[i].ToString()) { isFind = true; break; } } if (!isFind) { ToBeRemoved.Add(key); } } //待增加的权限。 ArrayList ToBeAdded = new ArrayList(); for (int i = 0; i < dto.ModuleRights.Count; i++) { if (!m.ModuleRights.Contains(dto.ModuleRights[i].ToString())) { ToBeAdded.Add(dto.ModuleRights[i].ToString()); } } //获取新增模块权限的主键值。 string[] Ids = null; if (ToBeAdded.Count > 0) { Ids = IdGen.GetNextId(typeof(ModuleRight), ToBeAdded.Count); } //向数据库保存新的模块信息和模块权限信息。 ITransaction transaction = Db.Session.BeginTransaction(); try { //删除权限。 foreach (object key in ToBeRemoved) { ModuleRight mr = m.ModuleRights[key] as ModuleRight; mr.RemoveAllPermissions(); mr.BreakAwayFromModule(); Db.Session.Delete(mr); } //增加权限。 for (int i = 0; i < ToBeAdded.Count; i++) { ModuleRight newMr = new ModuleRight(); newMr.Id = Ids[i]; newMr.RightTag = ToBeAdded[i].ToString(); m.AddModuleRight(newMr); Db.Session.Save(newMr); } Db.Session.Update(m); transaction.Commit(); return("1"); } catch { transaction.Rollback(); throw; } }
//返回模块分类 模块 序列化List IList GetModuleTypeList(IList ilModuleType, Staff staff) { IList l = new List <NodeType>(); foreach (ModuleType sub in ilModuleType) { //当前 是否对 moduletype 下的 module 有肯定权限 bool isBrowse = false; NodeType ntype = new NodeType(); ntype.id = sub.Id; ntype.text = sub.Name; ntype.ntype = "moduletype"; ntype.tag = sub.Remark; if (sub.SubModuleTypes.Count > 0) { ntype.children = GetModuleTypeList(sub.SubModuleTypes, staff); } if (sub.Modules.Count > 0) { ntype.children = ntype.children ?? new List <NodeType>(); //IList l_module = new List<NodeType>(); foreach (Module m in sub.Modules) { //如果禁用 则不显示 if (m.Disabled == 1) { continue; } if (staff.IsInnerUser == 1)//如果是内置用户 平台如果集成单点登录 则获取当前的平台Id 加载对应的module列表 { NodeType nsbutype = new NodeType(); nsbutype.id = m.Id; nsbutype.text = m.Name; nsbutype.suburl = m.ModuleUrl; ntype.children.Add(nsbutype); } else { try { ModuleRight mr = Gecko.Security.Service.ModuleRightSrv.GetModuleRight(m, "rights_browse"); if (mr != null) { if (staff.HasGrantPermission(mr)) { NodeType nsbutype = new NodeType(); nsbutype.id = m.Id; nsbutype.text = m.Name; nsbutype.suburl = m.ModuleUrl; ntype.children.Add(nsbutype); isBrowse = true; } } } catch (Exception ex) { } } } } //查看当前 模块 ntype 是否包含 module if (isBrowse || staff.IsInnerUser == 1) { l.Add(ntype); } } return(l); }