示例#1
0
        /// <summary>
        /// 修改用户名
        /// </summary>
        /// <param name="token">token或用户id</param>
        /// <param name="username"></param>
        /// <returns></returns>
        public IHttpActionResult ChangeUsername(string token, string username)
        {
            UserInfoDto user;

            if (Guid.TryParse(token, out var userid))
            {
                //session登录
                user = UserInfoBll.GetById(userid).Mapper <UserInfoDto>();
            }
            else
            {
                //api登录
                if (!RedisHelper.KeyExists(token))
                {
                    return(ResultData(null, false, "用户未登录系统!"));
                }
                user = RedisHelper.GetString <UserInfoDto>(token);
            }
            var userInfo = UserInfoBll.GetById(user.Id);

            if (!username.Equals(userInfo.Username) && UserInfoBll.UsernameExist(username))
            {
                return(ResultData(null, false, $"用户名{username}已经存在,请尝试更换其他用户名!"));
            }
            userInfo.Username = username;
            bool b = UserInfoBll.UpdateEntitySaved(userInfo);

            return(ResultData(Mapper.Map <UserInfoDto>(userInfo), b, b ? $"用户名修改成功,新用户名为{username}。" : "用户名修改失败!"));
        }
示例#2
0
        //获取审批人下拉列表数据
        private List <SelectListItem> GetNextIdList()
        {
            UserInfo userInfo = UserInfoBll.GetById(UserLogin.UserId);
            List <SelectListItem> ltResult = new List <SelectListItem> {
                new SelectListItem()
            };

            if (userInfo != null && userInfo.RoleInfo != null)
            {
                List <RoleInfo> ltRole = userInfo.RoleInfo.ToList();
                byte            temp   = 0;
                foreach (var item in ltRole)
                {
                    temp = item.RoleLevel > temp ? item.RoleLevel : temp;
                }
                IQueryable <RoleInfo> ltR = RoleInfoBll.GetList(r => (r.RoleLevel == temp + 1), r => r.RoleName);
                ltResult = (from r in ltR
                            from u in r.UserInfo
                            select new SelectListItem
                {
                    Text = u.Username + "(" + r.RoleName + ")",
                    Value = u.UserId + ""
                }).ToList();
                if (ltResult.Count > 0)
                {
                    ltResult.Add(new SelectListItem {
                        Text = "---默认---", Value = ltResult[0].Value, Selected = true
                    });
                }
            }
            return(ltResult);
        }
        /// <summary>
        /// 修改用户头像
        /// </summary>
        /// <param name="id"></param>
        /// <param name="path"></param>
        /// <returns></returns>
        public ActionResult ChangeAvatar(Guid id, string path)
        {
            UserInfo userInfo = UserInfoBll.GetById(id);

            userInfo.Avatar = path;
            bool b = UserInfoBll.UpdateEntitySaved(userInfo);

            return(ResultData(Mapper.Map <UserInfoDto>(userInfo), b, b ? $"头像修改成功。" : "头像修改失败!"));
        }
示例#4
0
        public ActionResult SetUserAction(int uId)
        {
            UserInfo userInfo = UserInfoBll.GetById(uId);

            ViewBag.UserInfo       = userInfo;
            ViewBag.UserActionInfo = userInfo.UserActionInfo.ToList();
            ViewData.Model         = ActionInfoBll.GetList(a => a.IsDeleted == 0, a => a.ActionTitle).ToList();
            return(View());
        }
示例#5
0
        public ActionResult ChangeNickName(int id, string username)
        {
            UserInfo userInfo = UserInfoBll.GetById(id);

            userInfo.NickName = username;
            bool b = UserInfoBll.UpdateEntitySaved(userInfo);

            return(ResultData(Mapper.Map <UserInfoOutputDto>(userInfo), b, b ? $"昵称修改成功,新昵称为{username}。" : "昵称修改失败!"));
        }
示例#6
0
        public ActionResult CheckPwdRight(string uPwd)
        {
            string result = "no";
            string temp   = UserInfoBll.GetById(UserLogin.UserId).Password;

            if (temp == CommonHelper.GetMD5String(uPwd + CommonHelper.GetPasswordSalt()))
            {
                result = "ok";
            }
            return(Content(result));
        }
示例#7
0
        public ActionResult ChangeUsername(int id, string username)
        {
            UserInfo userInfo = UserInfoBll.GetById(id);

            if (!username.Equals(userInfo.Username) && UserInfoBll.UsernameExist(username))
            {
                return(ResultData(null, false, $"用户名{username}已经存在,请尝试更换其他用户名!"));
            }
            userInfo.Username = username;
            bool b = UserInfoBll.UpdateEntitySaved(userInfo);

            return(ResultData(Mapper.Map <UserInfoOutputDto>(userInfo), b, b ? $"用户名修改成功,新用户名为{username}。" : "用户名修改失败!"));
        }
示例#8
0
        public ActionResult Edit(UserInfo userInfo)
        {
            string   result = "no";
            UserInfo user   = UserInfoBll.GetById(userInfo.UserId);

            user.ModifiedTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
            user.SubBy        = UserLogin.UserId;
            user.Username     = userInfo.Username;
            user.Remark       = userInfo.Remark;
            if (user.Username != string.Empty && UserInfoBll.Edit(user))
            {
                result = "ok";
            }
            return(Content(result));
        }
        /// <summary>
        /// 移除用户组
        /// </summary>
        /// <param name="id">用户id</param>
        /// <param name="gids">用户组id</param>
        /// <returns></returns>
        public ActionResult RemoveGroups(Guid id, string gids)
        {
            string[] ids  = gids.Split(',');
            UserInfo user = UserInfoBll.GetById(id);

            if (user is null)
            {
                return(ResultData(null, false, "未找到用户!"));
            }

            List <UserGroup> groups = UserGroupBll.LoadEntities(g => ids.Contains(g.Id.ToString())).ToList();

            groups.ForEach(g => user.UserGroup.Remove(g));
            bool b = UserInfoBll.UpdateEntitySaved(user);

            return(ResultData(null, b, b ? "移除用户组完成!" : "移除用户组失败!"));
        }
        /// <summary>
        /// 分配给客户端子系统
        /// </summary>
        /// <param name="id"></param>
        /// <param name="aids"></param>
        /// <returns></returns>
        public ActionResult AddApps(Guid id, string aids)
        {
            string[] ids  = aids.Split(',');
            UserInfo user = UserInfoBll.GetById(id);

            if (user is null)
            {
                return(ResultData(null, false, "未找到用户!"));
            }

            List <ClientApp> apps = ClientAppBll.LoadEntities(a => ids.Contains(a.Id.ToString())).ToList();

            apps.ForEach(a => user.ClientApp.Add(a));
            bool b = UserInfoBll.UpdateEntitySaved(user);

            return(ResultData(null, b, b ? "分配给客户端子系统完成!" : "分配给客户端子系统失败!"));
        }
示例#11
0
        public ActionResult PasswordEdit(string pwd, string rpwd)
        {
            string result = "no";

            if (pwd != rpwd)
            {
                return(Content("no"));
            }
            UserInfo userInfo = UserInfoBll.GetById(UserLogin.UserId);

            userInfo.Password = CommonHelper.GetMD5String(pwd + CommonHelper.GetPasswordSalt());
            if (UserInfoBll.Edit(userInfo))
            {
                result = "ok";
            }
            return(Content(result));
        }
示例#12
0
        public ActionResult Approve(int stepId)
        {
            WFStep           step  = WFStepBll.GetById(stepId);
            var              uu    = UserInfoBll.GetById(step.WFInstance.SubBy);
            ApproveViewModel model = new ApproveViewModel
            {
                StepId        = step.StepId,
                InstanceId    = step.InstanceId,
                InstanceTitle = step.WFInstance.InstanceTitle,
                Details       = step.WFInstance.Details,
                SubBy         = uu.RealName != null && uu.RealName != "" ? uu.RealName : uu.Username,
                Approve       = true //默认选中同意
            };

            ViewData["SelectList"] = GetNextIdList();
            return(View(model));
        }
        /// <summary>
        /// 移除角色
        /// </summary>
        /// <param name="id">用户id</param>
        /// <param name="rids">角色id</param>
        /// <returns></returns>
        public ActionResult RemoveRoles(Guid id, string rids)
        {
            string[] ids  = rids.Split(',');
            UserInfo user = UserInfoBll.GetById(id);

            if (user is null)
            {
                return(ResultData(null, false, "未找到用户!"));
            }

            List <Role> groups = RoleBll.LoadEntities(r => ids.Contains(r.Id.ToString())).ToList();

            groups.ForEach(r => user.Role.Remove(r));
            bool b = UserInfoBll.UpdateEntitySaved(user);

            return(ResultData(null, b, b ? "移除角色完成!" : "移除角色失败!"));
        }
        /// <summary>
        /// 锁定用户
        /// </summary>
        /// <param name="id">用户id</param>
        /// <param name="state">用户状态</param>
        /// <returns></returns>
        public ActionResult LockUser(Guid id, bool state)
        {
            UserInfo user = UserInfoBll.GetById(id);

            if (user != null)
            {
                if (user.IsPreset)
                {
                    return(ResultData(null, false, "内置管理员不可禁用!"));
                }

                user.Locked = !state;
                bool b = UserInfoBll.UpdateEntitySaved(user);
                return(ResultData(null, b, b ? "用户状态切换成功!" : "用户状态切换失败!"));
            }

            return(ResultData(null, false, "未找到用户!"));
        }
        /// <summary>
        /// 用户详情
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        public ActionResult Details(Guid id)
        {
            UserInfo user = UserInfoBll.GetById(id);

            if (user != null)
            {
                (List <ClientApp>, List <UserGroup>, List <Role>, List <Permission>, List <Control>, List <Menu>)details = UserInfoBll.Details(user);
                return(ResultData(new
                {
                    apps = details.Item1.Mapper <List <ClientAppInputDto> >(),
                    groups = details.Item2.Mapper <List <UserGroupInputDto> >(),
                    roles = details.Item3.Mapper <List <RoleInputDto> >(),
                    permissions = details.Item4.Mapper <List <PermissionInputDto> >(),
                    controls = details.Item5.Mapper <List <ControlOutputDto> >(),
                    menus = details.Item6.Mapper <List <MenuOutputDto> >()
                }));
            }
            return(ResultData(null, false, "用户不存在"));
        }
示例#16
0
        public ActionResult ReApply(int InstanceId)
        {
            WFStep           lastStep = WFStepBll.GetList <int>(s => s.WFInstance.InstanceId == InstanceId).OrderByDescending(s => s.StepId).FirstOrDefault();
            WFInstance       instance = lastStep.WFInstance;
            var              uu       = UserInfoBll.GetById(lastStep.SubBy);
            ReApplyViewModel raView   = new ReApplyViewModel
            {
                InstanceId    = instance.InstanceId,
                InstanceTitle = instance.InstanceTitle,
                Details       = instance.Details,
                Tips          = lastStep.Tips,
                RejectBy      = uu.RealName != null && uu.RealName != "" ? uu.RealName : uu.Username,
                RejectTime    = lastStep.SubTime
            };
            var result = GetNextIdList();

            ViewData["SelectList"] = result;
            return(View(raView));
        }
示例#17
0
        public IHttpActionResult ChangePasspord(string token, string old, string password, string confirm)
        {
            UserInfoDto user;

            if (Guid.TryParse(token, out var userid))
            {
                //session登录
                user = UserInfoBll.GetById(userid).Mapper <UserInfoDto>();
            }
            else
            {
                //api登录
                if (!RedisHelper.KeyExists(token))
                {
                    return(ResultData(null, false, "用户未登录系统!"));
                }
                user = RedisHelper.GetString <UserInfoDto>(token);
            }
            if (password.Length <= 6)
            {
                return(ResultData(null, false, "密码过短,至少需要6个字符!"));
            }

            if (!password.Equals(confirm))
            {
                return(ResultData(null, false, "两次输入的密码不一致!"));
            }

            var regex = new Regex(@"(?=.*[0-9])                     #必须包含数字
                                            (?=.*[a-zA-Z])                  #必须包含小写或大写字母
                                            (?=([\x21-\x7e]+)[^a-zA-Z0-9])  #必须包含特殊符号
                                            .{6,30}                         #至少6个字符,最多30个字符
                                            ", RegexOptions.Multiline | RegexOptions.IgnorePatternWhitespace);

            if (!regex.Match(password).Success)
            {
                return(ResultData(null, false, "密码强度值不够,密码必须包含数字,必须包含小写或大写字母,必须包含至少一个特殊符号,至少6个字符,最多30个字符!"));
            }
            bool b = UserInfoBll.ChangePassword(user.Id, old, password);

            return(ResultData(null, b, b ? $"密码修改成功,新密码为:{password}!" : "密码修改失败,可能是原密码不正确!"));
        }
        /// <summary>
        /// 授予临时权限
        /// </summary>
        /// <param name="id">用户id</param>
        /// <param name="pids">权限id</param>
        /// <returns></returns>
        public ActionResult AddPermissions(Guid id, string pids)
        {
            string[] ids  = pids.Split(',');
            var      user = UserInfoBll.GetById(id);

            if (user is null)
            {
                return(ResultData(null, false, "用户不存在"));
            }

            List <Permission> permissions = PermissionBll.LoadEntities(p => ids.Contains(p.Id.ToString())).ToList();

            permissions.ForEach(r => { UserPermissionBll.AddEntity(new UserPermission()
                {
                    HasPermission = true, Permission = r, PermissionId = r.Id, UserInfo = user, UserInfoId = user.Id
                }); });
            bool b = UserPermissionBll.SaveChanges() > 0;

            return(ResultData(null, b, b ? "临时权限配置完成!" : "临时权限配置失败!"));
        }
示例#19
0
        public object User(string appid, string token)
        {
            UserInfoDto user;

            if (token.Contains("-") && Guid.TryParse(token, out var userid))
            {
                user = UserInfoBll.GetById(userid).Mapper <UserInfoDto>();
            }
            else
            {
                if (!RedisHelper.KeyExists(token))
                {
                    return(null);
                }
                RedisHelper.Expire(token, TimeSpan.FromMinutes(20));
                user = RedisHelper.GetString <UserInfoDto>(token);
            }
            List <ControlOutputDto> acl   = UserInfoBll.GetAccessControls(appid, user.Id);
            List <MenuOutputDto>    menus = UserInfoBll.GetMenus(appid, user.Id);

            return(new { user, acl, menus });
        }
示例#20
0
        /// <summary>
        /// 获取登陆记录
        /// </summary>
        /// <param name="token">token或用户id</param>
        /// <param name="page"></param>
        /// <param name="size"></param>
        /// <returns></returns>
        public IHttpActionResult LoginRecord(string token, int page = 1, int size = 10)
        {
            UserInfoDto user;

            if (Guid.TryParse(token, out var userid))
            {
                //session登录
                user = UserInfoBll.GetById(userid).Mapper <UserInfoDto>();
            }
            else
            {
                //api登录
                if (!RedisHelper.KeyExists(token))
                {
                    return(ResultData(null, false, "用户未登录系统!"));
                }
                user = RedisHelper.GetString <UserInfoDto>(token);
            }
            List <LoginRecordDto> list = LoginRecordBll.LoadPageEntitiesNoTracking <DateTime, LoginRecordDto>(page, size, out int total, r => r.UserInfoId.Equals(user.Id), r => r.LoginTime, false).ToList();
            int pages = (int)Math.Ceiling(total * 1.0 / size);

            return(ResultData(new { list, pages }));
        }
示例#21
0
        public ActionResult PersonalInfo(UserInfo userInfo)
        {
            string   result = "no";
            UserInfo user   = UserInfoBll.GetById(userInfo.UserId);

            user.ModifiedTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
            user.Username     = userInfo.Username;
            user.RealName     = userInfo.RealName;
            user.Age          = userInfo.Age;
            user.Gender       = userInfo.Gender;
            user.PhoneNumber  = userInfo.PhoneNumber;
            user.Email        = userInfo.Email;
            user.Remark       = userInfo.Remark;
            if (userInfo.Username != UserLogin.UserName)
            {
                UserLogin.UserName = userInfo.Username;
            }
            user.SubBy = UserLogin.UserId;
            if (user.Username != string.Empty && UserInfoBll.Edit(user))
            {
                result = "ok";
            }
            return(Content(result));
        }
示例#22
0
        public ActionResult PersonalInfo()
        {
            var result = UserInfoBll.GetById(UserLogin.UserId);

            return(View(result));
        }
示例#23
0
 public UserInfoDto GetUser(Guid id) => UserInfoBll.GetById(id).Mapper <UserInfoDto>();
示例#24
0
        public IHttpActionResult Register(string appid, string name, string email, string pwd, string confirm)
        {
            if (!ClientAppBll.Any(a => a.AppId.Equals(appid)))
            {
                return(ResultData(null, false, "应用不存在!"));
            }
            if (String.IsNullOrEmpty(name.Trim()))
            {
                return(ResultData(null, false, "用户名不能为空"));
            }

            if (!email.MatchEmail())
            {
                return(ResultData(null, false, "邮箱格式不正确!"));
            }

            if (pwd.Length <= 6)
            {
                return(ResultData(null, false, "密码过短,至少需要6个字符!"));
            }

            if (!pwd.Equals(confirm))
            {
                return(ResultData(null, false, "两次输入的密码不一致!"));
            }

            if (UserInfoBll.UsernameExist(name))
            {
                return(ResultData(null, message: $"用户名【{name}】已经存在!"));
            }

            if (UserInfoBll.EmailExist(email))
            {
                return(ResultData(null, message: $"邮箱【{email}】已经存在!"));
            }
            var regex = new Regex(@"(?=.*[0-9])                     #必须包含数字
                                            (?=.*[a-zA-Z])                  #必须包含小写或大写字母
                                            (?=([\x21-\x7e]+)[^a-zA-Z0-9])  #必须包含特殊符号
                                            .{6,30}                         #至少6个字符,最多30个字符
                                            ", RegexOptions.Multiline | RegexOptions.IgnorePatternWhitespace);

            if (regex.Match(pwd).Success)
            {
                UserInfoDto user = UserInfoBll.Register(new UserInfo()
                {
                    Username = name, Password = pwd, Email = email
                });
                if (user != null)
                {
                    ClientApp app = ClientAppBll.GetFirstEntity(a => a.AppId.Equals(appid));
                    if (app.Available)
                    {
                        app.UserInfo.Add(UserInfoBll.GetById(user.Id));
                        bool b = ClientAppBll.UpdateEntitySaved(app);
                        return(ResultData(user, true, b ? "用户注册成功!" : "用户注册成功,但尚未分配到指定的应用子系统,请联系管理员!"));
                    }
                    return(ResultData(user, false, $"用户注册成功,但由于【{app.AppName}】网站当前服务不可用,而无法登陆,请联系管理员!"));
                }

                return(ResultData(null, false, "用户注册失败!"));
            }

            return(ResultData(null, false, "密码强度值不够,密码必须包含数字,必须包含小写或大写字母,必须包含至少一个特殊符号,至少6个字符,最多30个字符!"));
        }
示例#25
0
        //行为前过滤
        protected override void OnActionExecuting(ActionExecutingContext filterContext)
        {
            base.OnActionExecuting(filterContext);
            #region 验证是否有访问权限
            ////留个后门,给管理方便,发布时删除
            //if (UserLogin.UserName.Equals("admin123"))
            //{
            //    return;
            //}

            //获取用户以及要访问的url
            UserInfo userInfo       = UserInfoBll.GetById(UserLogin.UserId);
            string   controllerName = RouteData.GetRequiredString("controller");
            string   actionName     = RouteData.GetRequiredString("action");
            if (actionName == "CheckExist" || actionName == "GetSelect" || actionName == "CheckPwdRight")
            {
                //默认所有人都有验证字段名是否存在、获取下拉列表数据和判断密码是否正确的权限
                return;
            }
            ActionInfo actionInfo = ActionInfoBll.GetList <int>(a =>
                                                                (a.ControllerName.ToLower().Equals(controllerName.ToLower()))
                                                                &&
                                                                (a.ActionName.ToLower().Equals(actionName.ToLower()))
                                                                &&
                                                                a.IsDeleted == 0)
                                    .FirstOrDefault();
            if (actionInfo == null)
            {
                //访问url有误
                filterContext.Result = new RedirectResult("/Error.html");
                return;
            }

            //查询否决,看有无数据
            UserActionInfo userActionInfo = UserActionInfoBll.GetList <int>(ua =>
                                                                            (ua.UserId == userInfo.UserId)
                                                                            &&
                                                                            (ua.ActionId == actionInfo.ActionId)).FirstOrDefault();
            if (userActionInfo != null)
            {
                //否决表中有数据
                if (userActionInfo.IsAllow == 1)
                {
                    //允许
                    return;
                }
                else
                {
                    //拒绝,跳转到无权限页面
                    filterContext.Result = new RedirectResult("/NoAccess.html");
                }
            }
            else
            {
                //否决表中无数据,则通过用户找角色,通过角色找权限
                var result = from r in userInfo.RoleInfo
                             from a in r.ActionInfo
                             where a.ActionId == actionInfo.ActionId
                             select a;
                if (result.Count() > 0)
                {
                    //有权限
                    return;
                }
                else
                {
                    //无权限,跳转到无权限页面
                    filterContext.Result = new RedirectResult("/NoAccess.html");
                }
            }
            #endregion
        }
        /// <summary>
        /// 用户详情
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        public ActionResult Get(Guid id)
        {
            UserInfoDto user = UserInfoBll.GetById(id).Mapper <UserInfoDto>();

            return(ResultData(user));
        }
示例#27
0
 public UserInfo GetById(int id)
 {
     return(ubll.GetById(id));
 }
示例#28
0
        public ActionResult Edit(int uId)
        {
            UserInfo userInfo = UserInfoBll.GetById(uId);

            return(View(userInfo));
        }
示例#29
0
 public ActionResult SetUserRole(int uId)
 {
     ViewBag.UserInfo = UserInfoBll.GetById(uId);
     ViewData.Model   = RoleInfoBll.GetList(r => r.IsDeleted == 0, r => r.RoleName).ToList();
     return(View());
 }
示例#30
0
        //首页
        public ActionResult Index()
        {
            #region 查找待办事项信息并放在ViewData中
            List <QuickEntryViewModel> ltEntry = new List <QuickEntryViewModel>();
            ViewBag.CurrentUser = UserLogin.UserName;
            var aSteps     = WFStepBll.GetList(s => (s.NextId == UserLogin.UserId) && s.IsEnd == 0, s => s.StepId);
            var aInstances = from s in aSteps
                             select s.WFInstance;
            AddEntryViewToList(ltEntry, aInstances);
            var rInstances = WFInstanceBll.GetList(i => (i.SubBy == UserLogin.UserId) && (i.InstanceState == 1), i => i.InstanceId);
            AddEntryViewToList(ltEntry, rInstances);
            ViewData["Entry"] = ltEntry;
            #endregion

            #region 主菜单过滤
            //准备目标集合
            List <MenuViewModel> listMenu = new List <MenuViewModel>();
            //获取所有的桌面菜单
            List <ActionInfo> aList = ActionInfoBll.GetList(a => a.IsDeleted == 0 && a.IsMenu == 1, a => a.ActionTitle).ToList();
            //获取当前登录的用户的对象
            UserInfo userInfo = UserInfoBll.GetById(UserLogin.UserId);
            //遍历所有桌面菜单,逐个判断是否有权限
            foreach (var actionInfo in aList)
            {
                //根据当前数据,构造一个菜单对象
                MenuViewModel menu = new MenuViewModel()
                {
                    ActionTitle    = actionInfo.ActionTitle,
                    ControllerName = actionInfo.ControllerName,
                    ActionName     = actionInfo.ActionName,
                    MenuIcon       = actionInfo.MenuIcon
                };
                //查找否决中是否允许,如果允许,直接加入目标集合
                if (UserActionInfoBll.GetList <int>(ua =>
                                                    (ua.ActionId == actionInfo.ActionId) &&
                                                    (ua.UserId == UserLogin.UserId) &&
                                                    (ua.IsAllow == 1)).Count() > 0)
                {
                    listMenu.Add(menu);
                    continue;
                }

                //如果否决没有允许,则查找角色-权限过程
                var raList = from r in userInfo.RoleInfo
                             from a in r.ActionInfo
                             where a.ActionId == actionInfo.ActionId
                             select a;
                if (raList.Count() > 0)
                {
                    listMenu.Add(menu);
                }

                //排除拒绝的特殊权限
                var forbidList = from ua in userInfo.UserActionInfo
                                 where ua.ActionId == actionInfo.ActionId
                                 &&
                                 ua.IsAllow == 0
                                 select ua;
                if (forbidList.Count() > 0)
                {
                    listMenu.Remove(menu);
                }
            }
            #endregion

            return(View(listMenu));
        }