Example #1
0
        public async Task <IActionResult> AuthMenus(UrlParameter param, AuthMenuModel model)
        {
            var result = new Result <Sys_RoleMenuDto>();

            foreach (var roleId in model.RoleIds)
            {
                var exist = (await _roleMenuService.GetListAsync(item => item.RoleId == roleId)).data.Count > 0;

                var delResult = await _roleMenuService.DeleteAsync(item => item.RoleId == roleId);

                if (!delResult.flag && exist)
                {
                    result.msg += delResult.msg + "\n";
                }
                if (model.MenuIds != null)
                {
                    if (model.MenuIds.Any())
                    {
                        var newRoleMenus = model.MenuIds.Select(item => new Sys_RoleMenuDto {
                            RoleId = roleId, MenuId = item
                        }).ToList();
                        var addResult = await _roleMenuService.AddAsync(newRoleMenus);

                        if (!addResult.flag)
                        {
                            result.msg += addResult.msg + "\n";
                        }
                        result.flag = addResult.flag && !(delResult.flag ^ exist); //((!delResult.flag && !exist) || (delResult.flag && exist))
                    }
                    else
                    {
                        result.flag = true; //清空权限 没设置有菜单
                    }
                }
                else
                {
                    result.flag = true;
                }
            }
            return(Json(result));
        }
Example #2
0
        private AuthUserDataModel GetAuthUserDataModel(AuthUserModel user)
        {
            var authUserDataModel = new AuthUserDataModel();
            var allMenus          = MenuService.List();
            var allFunctions      = this.LoadAllFunctions(user);
            var userMenus         = new List <AuthMenuModel>();

            foreach (var item in allMenus)
            {
                //如果权限集中包含页面的AuthKey,即拥有查看权限才显示
                if (item.IsDisplay.HasValue && item.IsDisplay.Value)
                {
                    var temp = new AuthMenuModel()
                    {
                        SysNo       = item.Id.ToString(),
                        ParentSysNo = item.ParentId.HasValue ? item.ParentId.Value.ToString() : null,
                        MenuName    = item.Name,
                        IsDisplay   = item.IsDisplay.HasValue ? item.IsDisplay.Value.ToString() : false.ToString(),
                        LinkPath    = item.LinkPath,
                        Type        = (int)item.Type,
                        IconStyle   = item.IconClass
                    };
                    if (item.Type == MenuTypeEnums.Catalog)
                    {
                        userMenus.Add(temp);
                    }
                    else if (item.Type == MenuTypeEnums.Page)
                    {
                        if (allFunctions.Exists(function => string.Compare(function.FunctionKey, item.AuthKey) == 0))
                        {
                            userMenus.Add(temp);
                        }
                    }
                }
            }
            authUserDataModel.Menus     = userMenus;
            authUserDataModel.Functions = allFunctions;
            return(authUserDataModel);
        }
        public ActionResult Index()
        {
            List <AuthMenuModel> menuItemList = AuthMgr.GetUserMenuList();
            var topLevelMenuList = menuItemList.Where(item => !menuItemList.Exists(tm => tm.SysNo == item.ParentSysNo) && item.IsDisplay == "1").ToList();

            foreach (var mItemL1 in topLevelMenuList)
            {
                if (!string.IsNullOrWhiteSpace(mItemL1.LinkPath))
                {
                    return(Redirect(mItemL1.LinkPath));
                }
                List <AuthMenuModel> mItemL2List = menuItemList.FindAll(x => x.ParentSysNo == mItemL1.SysNo && x.IsDisplay == "1");

                if (mItemL2List.Count == 0 && string.IsNullOrWhiteSpace(mItemL1.LinkPath))
                {
                    continue;
                }
                AuthMenuModel menu = mItemL2List.FirstOrDefault(f => f.IsDisplay == "1" && !string.IsNullOrWhiteSpace(f.LinkPath));
                if (menu != null)
                {
                    return(Redirect(menu.LinkPath));
                }
            }
            return(Content(""));

            /*经测试以下语句无效
             * if (CurrUser.MasterSysNo.GetValueOrDefault() > 0)
             * {
             *
             *  return Redirect(Url.Action("MapIndex", "Home"));
             * }
             * else
             * {
             *  return Redirect(Url.Action("Index", "Company"));
             * }
             */
        }
Example #4
0
        //public static AuthUserDataModel GetUserMenuList(int userSysNo, string applicationKey, string topMenuKey)
        //{
        //    DataCommand cmd = new DataCommand("GetUserMenuList");
        //    cmd.SetParameter("@UserSysNo", DbType.Int32, userSysNo);
        //    cmd.SetParameter("@ApplicationKey", DbType.AnsiString, applicationKey);
        //    var ds = cmd.ExecuteDataSet();
        //    var allmenus = DataMapper.GetEntityList<AuthMenuModel, List<AuthMenuModel>>(ds.Tables[0].Rows);
        //    var allpermissions = DataMapper.GetEntityList<AuthPermissionModel, List<AuthPermissionModel>>(ds.Tables[1].Rows);
        //    var permissions = DataMapper.GetEntityList<AuthPermissionModel, List<AuthPermissionModel>>(ds.Tables[2].Rows);
        //    var roles = DataMapper.GetEntityList<AuthRoleModel, List<AuthRoleModel>>(ds.Tables[3].Rows);

        //    AuthMenuModel topMenu = null;

        //    if (!string.IsNullOrWhiteSpace(topMenuKey))
        //    {
        //        topMenu = allmenus.FirstOrDefault(x => string.Compare(x.MenuKey, topMenuKey, true) == 0);
        //    }

        //    var menus = new List<AuthMenuModel>();
        //    var menusL = new List<AuthMenuModel>();
        //    //根据Permissions过滤菜单
        //    for (int i = 0; i < allmenus.Count; i++)
        //    {
        //        if (topMenu != null && !allmenus[i].SysCode.StartsWith(topMenu.SysCode))
        //        {
        //            continue;
        //        }
        //        //用户的权限中存在以菜单的SysCode开头的权限MenuSysCode,则认为该菜单可见
        //        if (permissions.Exists(p => p.MenuSysCode != null && p.MenuSysCode.Trim().StartsWith(allmenus[i].SysCode.Trim())))
        //        {
        //            menus.Add(allmenus[i]);
        //        }
        //        //如果菜单没有配置权限,则可见
        //        else if (allpermissions.All(x => x.MenuSysCode == null || x.MenuSysCode.Trim() != allmenus[i].SysCode.Trim()))
        //        {
        //            menus.Add(allmenus[i]);
        //        }
        //    }


        //    foreach (var menu in menus)
        //    {
        //        if (menu.ParentSysNo == "0")
        //        {
        //            menusL.Add(menu);
        //        }
        //        else
        //        {
        //            foreach (var me in menus)
        //            {
        //                if (menu.ParentSysNo == me.SysNo)
        //                {
        //                    menusL.Add(menu);
        //                    break;
        //                }
        //            }
        //        }
        //    }
        //    AuthUserDataModel result = new AuthUserDataModel();
        //    result.Menus = menusL;
        //    result.Permissions = permissions;
        //    result.Roles = roles;
        //    return result;
        //}

        public static AuthUserDataModel GetUserMenuList(int userSysNo, string applicationKey, string topMenuKey)
        {
            DataCommand cmd = new DataCommand("GetUserMenuList");

            cmd.SetParameter("@UserSysNo", DbType.Int32, userSysNo);
            cmd.SetParameter("@ApplicationKey", DbType.AnsiString, applicationKey);
            var ds             = cmd.ExecuteDataSet();
            var allmenus       = DataMapper.GetEntityList <AuthMenuModel, List <AuthMenuModel> >(ds.Tables[0].Rows);
            var allpermissions = DataMapper.GetEntityList <AuthPermissionModel, List <AuthPermissionModel> >(ds.Tables[1].Rows);
            var permissions    = DataMapper.GetEntityList <AuthPermissionModel, List <AuthPermissionModel> >(ds.Tables[2].Rows);
            var roles          = DataMapper.GetEntityList <AuthRoleModel, List <AuthRoleModel> >(ds.Tables[3].Rows);

            AuthMenuModel topMenu = null;

            //if (!string.IsNullOrWhiteSpace(topMenuKey))
            //{
            //    topMenu = allmenus.FirstOrDefault(x => string.Compare(x.MenuKey, topMenuKey, true) == 0);
            //}

            var menus  = new List <AuthMenuModel>();
            var menusL = new List <AuthMenuModel>();

            //根据Permissions过滤菜单
            for (int i = 0; i < allmenus.Count; i++)
            {
                if (topMenu != null && !allmenus[i].SysCode.StartsWith(topMenu.SysCode))
                {
                    continue;
                }
                //用户的权限中存在以菜单的SysCode开头的权限MenuSysCode,则认为该菜单可见
                if (permissions.Exists(p => p.MenuSysCode != null && p.MenuSysCode.Trim().StartsWith(allmenus[i].SysCode.Trim())))
                {
                    menus.Add(allmenus[i]);
                }
                //如果菜单没有配置权限,则可见
                else if (allpermissions.All(x => x.MenuSysCode == null || x.MenuSysCode.Trim() != allmenus[i].SysCode.Trim()))
                {
                    menus.Add(allmenus[i]);
                }
            }


            foreach (var menu in menus)
            {
                if (menu.ParentSysNo == "0")
                {
                    menusL.Add(menu);
                }
                else
                {
                    foreach (var me in menus)
                    {
                        if (menu.ParentSysNo == me.SysNo)
                        {
                            menusL.Add(menu);
                            break;
                        }
                    }
                }
            }
            AuthUserDataModel result = new AuthUserDataModel();

            result.Menus       = menusL;
            result.Permissions = permissions;
            result.Roles       = roles;
            return(result);
        }