예제 #1
0
        protected override bool AuthorizeCore(HttpContextBase httpContext)
        {
            if (CurrentUser.IsAdmin)
            {
                return(true);
            }

            try
            {
                CurrentUser user = CurrentUser.GetCurrentUser();
                // 得所有配置的权限
                var permissions = ActionPermission.GetAllPermission();

                bool validating = true;

                // 只有已配置的权限才是需要验证的权限,否则不验证
                if (permissions.ExistsPermissions(areaName, controllerName, actionName))
                {
                    validating = user.Permissions.ExistsPermissions(areaName, controllerName, actionName);
                }
            }
            catch
            {
                return(false);
            }

            //return validating;
            return(true);
        }
예제 #2
0
        public virtual ActionResult GetPermissionFunction(string actionName)
        {
            //ViewContext.RouteData.DataTokens["area"].ToString().ToLower();
            //ControllerContext.RouteData.DataTokens["area"]


            var areaName       = Convert.ToString(ControllerContext.RouteData.DataTokens["area"]);
            var controllerName = this.RouteData.Values["controller"].ToString();

            //var actionName = this.RouteData.Values["action"].ToString();

            if (string.Equals(controllerName, "Account", StringComparison.CurrentCultureIgnoreCase))
            {
                return(JavaScript(""));
            }


            var user = CurrentUser.GetCurrentUser();

            var userFunList = user.Permissions.GetFunctionList(areaName, controllerName, actionName);

            if (userFunList == null)
            {
                userFunList = new List <Entities.TabelEntities.IMS_UP_MKGN>();
            }

            // 得所有配置的权限
            var permissions = ActionPermission.GetAllPermission();

            var allFunList = permissions.GetFunctionList(areaName, controllerName, actionName);

            //var controlsDisabledDictionary = new Dictionary<string, bool>();

            if (allFunList == null)
            {
                return(JavaScript(""));
            }

            StringBuilder scriptBuilder = new StringBuilder();

            foreach (var fun in allFunList)
            {
                // 为true时禁用按钮。
                var disabled = !userFunList.Exists(n => n.GNID == fun.GNID);
                //controlsDisabledDictionary.Add(fun.KJID, disabled);

                if (disabled)
                {
                    scriptBuilder.AppendFormat("$('{0}').hide();\r\n", fun.KJID);
                }
            }

            return(JavaScript(scriptBuilder.ToString()));
        }
        public PartialViewResult _MenuPartial()
        {
            var menuList = new List <IMS_UP_MK>();

            var rootModuleList = dalModule.GetRootModule();

            if (rootModuleList == null)
            {
                return(PartialView(null));
            }

            var rootMenus = rootModuleList.OrderBy(n => n.PXID);

            PermissionViewModule permissionModule = null;

            if (CurrentUser.IsAdmin)
            {
                //dalPermission.GetAllEntites

                permissionModule = ActionPermission.GetAllPermission();
            }
            else
            {
                if (!User.Identity.IsAuthenticated)
                {
                    permissionModule = null;
                }
                else
                {
                    var user = CurrentUser.GetCurrentUser();
                    permissionModule = user.Permissions;
                }
            }


            if (permissionModule == null)
            {
                return(PartialView(menuList));
            }

            foreach (var m in rootMenus)
            {
                var perList = permissionModule.Modules.Where(n => n.FMKID == m.MKID).OrderBy(n => n.PXID);

                //var userPermissionList = user.Permissions.Modules.Where(n => n.ParentID == m.ModuleID);

                // 有子项菜单才需要显示
                if (perList.Count() > 0)
                {
                    menuList.Add(m);
                    menuList.AddRange(perList);
                    //foreach (var p in perList)
                    //    menuList.Add(p);
                }

                //var x = dalModule.GetChildModuleList(m.ModuleID);
                //menuList.AddRange(x);
            }

            foreach (var m in menuList)
            {
                // 根节点不需要url地址
                if (m.FMKID == -1)
                {
                    continue;
                }

                if (string.IsNullOrEmpty(m.QY))
                {
                    m.URL = Url.Action(m.HDMC, m.KZMC);
                }
                else
                {
                    m.URL = Url.Action(m.HDMC, m.KZMC, new { area = m.QY });
                }
            }

            return(PartialView(menuList));
        }