示例#1
0
        public ActionResult Index()
        {
            var list = new List <Cache.Sys_MenuBasisCache.MenuBasisModel>();
            var menu = new Cache.Sys_MenuBasisCache().Get(Common.FormsTicket.SystemCode);

            var role  = new Cache.Sys_UserRoleCache().Get(Common.FormsTicket.UserId);
            var rMenu = new Cache.Sys_RoleMenuCache();
            var ids   = new List <long>();

            foreach (var item in role)
            {
                foreach (var rm in rMenu.Get(item.RoleId))
                {
                    ids.Add(rm.MenuId);
                }
            }
            foreach (var item in menu)
            {
                if (ids.FirstOrDefault(c => c == item.Id) > 0)
                {
                    list.Add(item);
                }
            }
            var u = new Provider.UserBasisProvider().GetUser(Common.FormsTicket.UserId);

            ViewBag.LastTime = u != null?u.LastTime.ToString("yyyy年MM月dd日") : "";

            ViewBag.MenuItem = list;
            var title = new Cache.SysSettingCache().Get(Common.FormsTicket.SystemCode);

            ViewBag.Title = title.SystemName == null ? "" : title.SystemName;
            return(View());
        }
示例#2
0
        public ActionResult RoleMenu(long?RoleId)
        {
            if (RoleId == null || RoleId == 0)
            {
                return(Content("请重新操作!"));
            }
            var list     = new List <Models.RoleBasisModels.RoleMenuModel>();
            var menu     = new Cache.Sys_MenuBasisCache().Get(Common.FormsTicket.SystemCode);
            var roleMenu = new Cache.Sys_RoleMenuCache().Get(RoleId.Value);

            var operate = new Cache.Sys_MenuOperateCache();
            var roleOp  = new Cache.Sys_RoleOperateCache().Get(RoleId.Value);

            foreach (var item in menu.Where(c => c.ParentId == Common.Constant.LONG_DEFAULT))
            {
                foreach (var mItem in menu.Where(c => c.ParentId == item.Id))
                {
                    var opList = new List <Models.RoleBasisModels.RoleOperateModel>();
                    foreach (var r in operate.Get(mItem.Id))
                    {
                        //操作码权限
                        var ro = roleOp.Where(c => c.OperateId == r.Id).FirstOrDefault();
                        opList.Add(new Models.RoleBasisModels.RoleOperateModel
                        {
                            OperateId   = r.Id,
                            OperateName = r.OperateName,
                            MenuId      = mItem.Id,
                            IsSelect    = ro != null ? true : false,
                            Id          = ro != null ? ro.Id : 0
                        });
                    }
                    //二级菜单
                    var m1 = roleMenu.Where(c => c.MenuId == mItem.Id).FirstOrDefault();
                    list.Add(new Models.RoleBasisModels.RoleMenuModel
                    {
                        MenuId      = mItem.Id,
                        ParentId    = mItem.ParentId,
                        MenuName    = mItem.MenuName,
                        IsSelect    = m1 != null ? true : false,
                        Id          = m1 != null ? m1.Id:0,
                        OperateList = opList
                    });
                }
                //一级菜单
                var m = roleMenu.Where(c => c.MenuId == item.Id).FirstOrDefault();
                list.Add(new Models.RoleBasisModels.RoleMenuModel
                {
                    MenuId   = item.Id,
                    ParentId = item.ParentId,
                    MenuName = item.MenuName,
                    IsSelect = m != null ? true : false,
                    Id       = m != null ? m.Id : 0,
                });
            }
            ViewBag.RoleId = RoleId.Value;
            return(View(list));
        }
        public ActionResult Create(long?MenuId)
        {
            var model = new Models.MenuBasisModels.MenuBasisModel();

            if (MenuId != null)
            {
                var cache = new Cache.Sys_MenuBasisCache().Get(Common.FormsTicket.SystemCode).Where(c => c.Id == MenuId).FirstOrDefault();
                model = new Models.MenuBasisModels.MenuBasisModel
                {
                    Id             = cache.Id.ToString(),
                    MenuName       = cache.MenuName,
                    ActionName     = cache.ActionName,
                    ControllerName = cache.ControllerName,
                    MenuIcon       = cache.MenuIcon,
                    MenuSort       = cache.MenuSort,
                    ParentId       = cache.ParentId.ToString()
                };
            }
            ViewBag.MenuItem = UserControl.SelectItem.MenuItem(MenuId == null ? Common.Constant.LONG_NULL : MenuId.Value, true);
            return(View(model));
        }
示例#4
0
        /// <summary>
        /// 重写OnAuthorization
        /// </summary>
        /// <param name="filterContext"></param>
        public override void OnAuthorization(AuthorizationContext filterContext)
        {
            //Stopwatch st = new Stopwatch();
            //st.Start();
            var controllerName = (filterContext.RouteData.Values["controller"].ToString()).ToLower();
            var actionName     = (filterContext.RouteData.Values["action"].ToString()).ToLower();

            if (Common.FormsTicket.UserId == decimal.Zero)
            {
                var type = "/1";
                if ("Home".ToLower().Contains(controllerName))
                {
                    type = string.Empty;
                }
                filterContext.Result = new RedirectResult("~/Account/Logout" + type);
            }
            else
            {
                if (!"Home".ToLower().Contains(controllerName))
                {
                    actionName = string.IsNullOrEmpty(ActionName) ? actionName : ActionName.ToLower();
                    var IsChecked = false;
                    //TODO:返回结果需要重新赋值一个对象不然会引发System.NullReferenceException: 未将对象引用设置到对象的实例。

                    var menuId = new Cache.Sys_MenuBasisCache().Get(Common.FormsTicket.SystemCode).FirstOrDefault(a => a.ControllerName.ToLower() == controllerName);
                    if (menuId != null)
                    {
                        var id        = menuId.Id;//这里不重新定义 menuId 会引发System.NullReferenceException: 未将对象引用设置到对象的实例。 因为下文有对象使用
                        var operateId = (from a in new Cache.Sys_MenuOperateCache().Get(id)
                                         where a.OperateCode.ToLower() == actionName
                                         select a.Id).FirstOrDefault();

                        var UserRole = new Cache.Sys_UserRoleCache().Get(Common.FormsTicket.UserId);

                        var  roleMenu    = new Cache.Sys_RoleMenuCache();
                        var  roleOperate = new Cache.Sys_RoleOperateCache();
                        bool menuChecked = false;
                        foreach (var item in UserRole)
                        {
                            var menu = roleMenu.Get(item.RoleId).FirstOrDefault(c => c.MenuId == id);
                            if (menu != null && !menuChecked)
                            {
                                //存在菜单权限
                                menuChecked = true;
                            }
                            if (menuChecked)
                            {
                                if (actionName == "index")
                                {
                                    //默认权限,有菜单权限都能访问index
                                    IsChecked = true;
                                    break;
                                }
                                var operate = roleOperate.Get(item.RoleId).FirstOrDefault(c => c.OperateId == operateId);
                                if (operate != null)
                                {
                                    //存在按钮权限,跳出循环
                                    IsChecked = true;
                                    break;
                                }
                            }
                        }
                    }
                    if (!IsChecked)
                    {
                        filterContext.HttpContext.Response.Write("没有权限访问该页面");
                        filterContext.HttpContext.Response.End();
                        filterContext.HttpContext.Response.StatusCode = 401;//定义状态后就不会在往下执行了
                    }
                }
            }
            //st.Stop();
            //Common.LogHelper.WriteLog(typeof(UserAuthorize),st.ElapsedMilliseconds.ToString());
        }