示例#1
0
 public void CheckAccess(Rolession permission, User user)
 {
     if (!TryCheckAccess(permission, user))
     {
         throw new Exception("安全错误");
     }
 }
示例#2
0
        private IEnumerable <MenuItem> GetChildMenu(MenuItem parent, Module current, User currUser)
        {
            var navList = _moduleRepository.GetAll()
                          .Where(a => a.Parent != null && a.Parent.Id == parent.Id && (a.IsUse == null || (a.IsUse != null && a.IsUse.Value)))
                          .OrderBy(a => a.ShowOrder).OrderBy(a => a.ShowOrder).MapTo <List <MenuItem> >().ToList();


            return(navList
                   .Where(nav => _authorizationService.TryCheckAccess(Rolession.For(nav.Code), currUser))
                   .Select(nav =>
            {
                var childMenus = GetChildMenu(nav, current, currUser).ToList();
                return new MenuItem
                {
                    Id = nav.Id,
                    ParentId = nav.ParentId,
                    Items = childMenus,
                    Name = nav.Name,
                    Code = nav.Code,
                    Icon = nav.Icon,
                    Url = string.IsNullOrWhiteSpace(nav.Url) ? "" : _urlHelper.Content(nav.Url),
                    Selected = nav.Id == current.Id || childMenus.Any(a => a.Selected)
                };
            }));
        }
示例#3
0
        public bool TryCheckAccess(Rolession rolession, User user)
        {
            if (user == null)
            {
                return(false);
            }

            //取消admin用所有权限功能,仍然通过赋权得到
            //if (IsAdministrator(user))
            //    return true;

            var nav = _moduleManager.GetNavigation(rolession.Code);

            return(nav.RoleModule.Select(s => s.RoleId).Intersect(user.Roles.Select(s => s.RoleId)).Any());
        }