Пример #1
0
        /// <summary>
        /// 判断职员是否对某一项模块权限拥有肯定授权。
        /// </summary>
        /// <remarks>
        /// 授权判断顺序如下:
        /// (1)职员是否为内置用户。如果是则返回true,否则执行下一步。
        /// (2)职员本身是否对此权限做了否定授权。如果是则返回false,否则执行下一步。
        /// (3)职员本身是否对此权限做了肯定授权。如果是则返回true,否则执行下一步。
        /// (4)职员拥有的所有角色的集合中,是否有任何一个角色对此权限做了否定授权。如果是则返回false,否则执行下一步。
        /// (5)职员拥有的所有角色的集合中,是否有任何一个角色对此权限做了肯定授权。如果是则返回true,否则执行下一步。
        /// (6)返回false。(即职员不是内置用户,并且职员本身以及职员拥有的所有角色都没有提供对此权限的任何授权信息。)
        /// </remarks>
        /// <param name="moduleRight">模块权限。</param>
        /// <returns>是否有肯定授权。</returns>
        public virtual bool HasGrantPermission(ModuleRight moduleRight)
        {
            if (this.IsInnerUser == 1)
            {
                return(true);
            }

            if (this.ModuleRightsDeny.Contains(moduleRight))
            {
                return(false);
            }
            if (this.ModuleRightsGrant.Contains(moduleRight))
            {
                return(true);
            }

            bool hasRoleGrant = false;

            foreach (Role role in this.Roles)
            {
                if (role.ModuleRightsDeny.Contains(moduleRight))
                {
                    return(false);
                }
                if (role.ModuleRightsGrant.Contains(moduleRight))
                {
                    hasRoleGrant = true;
                }
            }

            return(hasRoleGrant);
        }
Пример #2
0
        /// <summary>
        /// 根据 moduletag rights_tag 获取用户是否有权限
        /// </summary>
        /// <param name="moduleTag"></param>
        /// <returns></returns>
        public virtual bool HasGrantPermission(string moduleTag, string rightsTag)
        {
            var         m  = Gecko.Security.Service.ModuleSrv.GetModuleByTag(moduleTag);
            ModuleRight mr = Gecko.Security.Service.ModuleRightSrv.GetModuleRight(m, rightsTag);

            return(this.HasGrantPermission(mr));
        }
Пример #3
0
        /// <summary>
        /// 获取对于某模块的所有肯定授权的权限标示。
        /// </summary>
        /// <param name="module">模块。</param>
        /// <returns>权限标示集合。</returns>
        public virtual ArrayList GetGrantPermissions(Module module)
        {
            ArrayList alPermissions = new ArrayList();

            foreach (var k in module.ModuleRights)
            {
                ModuleRight mr = k.Value;
                if (this.HasGrantPermission(mr))
                {
                    alPermissions.Add(mr.RightTag);
                }
            }

            return(alPermissions);
        }
Пример #4
0
        /// <summary>
        /// 获取当前登录用户可操作的菜单项
        /// </summary>
        /// <returns></returns>
        public virtual string GetSecurityMenu()
        {
            string items = string.Empty;

            IList modellist = Gecko.Security.Service.ModuleSrv.GetAllDisabledModule();

            if (modellist != null)
            {
                foreach (Module module in modellist)
                {
                    ModuleRight mr = Gecko.Security.Service.ModuleRightSrv.GetModuleRight(module, "rights_browse");
                    if (mr != null)
                    {
                        if (HasGrantPermission(mr))
                        {
                            items += module.ModuleUrl + ",";
                        }
                    }
                }
            }

            return(items);
        }
Пример #5
0
 /// <summary>
 /// 增加模块权限。
 /// </summary>
 /// <param name="moduleRight">模块权限。</param>
 public virtual void AddModuleRight(ModuleRight moduleRight)
 {
     this.ModuleRights.Add(moduleRight.RightTag, moduleRight);
     moduleRight.Module = this;
 }