示例#1
0
        /// <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);
        }
示例#2
0
        //返回模块分类 模块 序列化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);
        }
示例#3
0
    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);
                }
            }
        }
    }
示例#4
0
        //返回模块分类 模块 序列化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);
        }
示例#5
0
        /// <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);
 }
示例#8
0
        /// <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;
            }
        }
示例#9
0
        //返回模块分类 模块 序列化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);
        }