Esempio n. 1
0
        /// <summary>
        /// 权限验证方法,返回权限对象
        /// </summary>
        /// <param name="action"></param>
        /// <returns></returns>
        public YD_Sys_Power SafePowerPage(string action)
        {
            if (!IsLogin())
            {
                return(null);
            }
            if (action == null)
            {
                return(null);
            }
            var module = new YD_Sys_Module();

            //带有参数的链接将参数去掉
            if (action.Contains("?"))
            {
                action = action.Substring(0, action.IndexOf('?'));
            }
            action = action.EndsWith("/") ? action.Substring(0, action.Length - 1) : action;
            using (var yunEntities = new IYunEntities())
            {
                var modules = yunEntities.YD_Sys_Module.Where(u => true).ToList();
                for (var i = 0; i < modules.Count(); i++)
                {
                    var moduleName = modules[i].y_url;
                    //带有参数的链接将参数去掉
                    if (moduleName.Contains("/?"))
                    {
                        moduleName = moduleName.Substring(0, moduleName.IndexOf("/?"));
                    }
                    //带有/结尾的链接将/去掉
                    if (moduleName.EndsWith("/"))
                    {
                        moduleName = moduleName.Substring(0, moduleName.Length - 1);
                    }
                    if (moduleName.ToLower() != action.ToLower())
                    {
                        continue;
                    }
                    module = modules[i];
                    break;
                }
                return(module == null
                    ? null
                    : yunEntities.YD_Sys_Power.FirstOrDefault(
                           u => u.y_moduleID == module.id && u.y_roleID == YdAdminRoleId));
            }
        }
Esempio n. 2
0
        /// <summary>
        /// 对栏目内具体方法的权限验证
        /// </summary>
        /// <returns></returns>
        public YD_Sys_Power SafePowerAction()
        {
            if (!IsLogin())
            {
                return(null);
            }
            if (Request.UrlReferrer == null)
            {
                return(null);
            }
            var module = new YD_Sys_Module();
            var url    = Request.UrlReferrer.AbsolutePath;

            using (var yunEntities = new IYunEntities())
            {
                var modules = yunEntities.YD_Sys_Module.Where(u => true).ToList();
                for (var i = 0; i < modules.Count(); i++)
                {
                    var moduleName = modules[i].y_url;
                    //带有参数的链接将参数去掉
                    if (moduleName.Contains("/?"))
                    {
                        moduleName = moduleName.Substring(0, moduleName.IndexOf("/?"));
                    }
                    //带有/结尾的链接将/去掉
                    if (moduleName.EndsWith("/"))
                    {
                        moduleName = moduleName.Substring(0, moduleName.Length - 1);
                    }
                    if (moduleName.ToLower() != url.ToLower())
                    {
                        continue;
                    }
                    module = modules[i];
                    break;
                }
                return(module == null
                    ? null
                    : yunEntities.YD_Sys_Power.FirstOrDefault(
                           u => u.y_moduleID == module.id && u.y_roleID == YdAdminRoleId));
            }
        }
Esempio n. 3
0
        /// <summary>
        /// 权限验证方法,返回权限验证信息
        /// </summary>
        /// <param name="action">需要验证的栏目url(例:/SysAdmin/Site)</param>
        /// <param name="flag">需要验证的栏目权限(枚举)</param>
        /// <returns>返回权限验证信息(枚举)</returns>
        public PowerInfo Safe(string action, PowerFlag flag)
        {
            if (!IsLogin())
            {
                return(PowerInfo.NoLogin);
            }
            if (action == null)
            {
                return(PowerInfo.Unknow);
            }
            var module = new YD_Sys_Module();

            //带有参数的链接将参数去掉
            if (action.Contains("/?"))
            {
                action = action.Substring(0, action.IndexOf("/?"));
            }
            action = action.EndsWith("/") ? action.Substring(0, action.Length - 1) : action;

            using (var yunEntities = new IYunEntities())
            {
                var modules = yunEntities.YD_Sys_Module.Where(u => true).ToList();
                for (var i = 0; i < modules.Count(); i++)
                {
                    var moduleName = modules[i].y_url;
                    //带有参数的链接将参数去掉
                    if (moduleName.Contains("/?"))
                    {
                        moduleName = moduleName.Substring(0, moduleName.IndexOf("/?"));
                    }
                    //带有/结尾的链接将/去掉
                    if (moduleName.EndsWith("/"))
                    {
                        moduleName = moduleName.Substring(0, moduleName.Length - 1);
                    }
                    if (moduleName.ToLower() != action.ToLower())
                    {
                        continue;
                    }
                    module = modules[i];
                    break;
                }

                if (module == null)
                {
                    return(PowerInfo.Unknow);
                }
                var power = yunEntities.YD_Sys_Power.FirstOrDefault(u => u.y_moduleID == module.id && u.y_roleID == YdAdminRoleId);
                if (power == null)
                {
                    return(PowerInfo.NoPower);
                }
                switch (flag)
                {
                case PowerFlag.Delete:
                    return(power.y_delete == (int)PowerState.Able ? PowerInfo.HasPower : PowerInfo.NoPower);

                case PowerFlag.Insert:
                    return(power.y_insert == (int)PowerState.Able ? PowerInfo.HasPower : PowerInfo.NoPower);

                case PowerFlag.Menu:
                    return(power.y_menu == (int)PowerState.Able ? PowerInfo.HasPower : PowerInfo.NoPower);

                case PowerFlag.Select:
                    return(power.y_select == (int)PowerState.Able ? PowerInfo.HasPower : PowerInfo.NoPower);

                case PowerFlag.Update:
                    return(power.y_update == (int)PowerState.Able ? PowerInfo.HasPower : PowerInfo.NoPower);

                default:
                    return(PowerInfo.Unknow);
                }
            }
        }