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)); }
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")); * } */ }
//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); }