public AuthUserDataModel GetUserMenuList(AuthUserModel user) { if (user == null || user.UserSysNo <= 0) { AuthUserDataModel result = new AuthUserDataModel(); result.Menus = new List <AuthMenuModel>(); result.Permissions = new List <AuthPermissionModel>(); result.Roles = new List <AuthRoleModel>(); return(result); } string keyWithoutLoginTime = CacheManager.GenerateKey(CACHE_KEY_USER_MENU, this.ApplicationKey, user.UserID); string keyWithLoginTime = CacheManager.GenerateKey(keyWithoutLoginTime, user.UILoginTime); return(CacheManager.GetWithCache <AuthUserDataModel>(keyWithLoginTime, () => { //移除失效的缓存 CacheManager.RemoveStartsWith(keyWithoutLoginTime + "_"); BlueStone.Smoke.Entity.CurrentUser cUser = new Entity.CurrentUser() { UserSysNo = user.UserSysNo, LoginTime = user.UILoginTime, UserName = user.UserID }; return authService.GetUserMenuList(cUser, AuthMgr.GetApplicationKey()); //return Rpc.Call<AuthUserDataModel>("AuthService.AuthService.GetUserMenuList", user.UserSysNo, AuthMgr.GetApplicationKey()); }, 60 * 60 * 8)); }
public AuthUserDataModel GetUserMenuList(int userSysNo, string applicationKey, string userID, string loginTime, string topMenuKey = null) { string keyWithoutLoginTime = CacheManager.GenerateKey(Key_Service_User_Auth_Data, applicationKey, userID); string keyWithLoginTime = CacheManager.GenerateKey(keyWithoutLoginTime, loginTime); return(CacheManager.GetWithCache(keyWithLoginTime, () => { //移除失效的缓存 CacheManager.RemoveStartsWith(keyWithoutLoginTime + "_"); AuthUserDataModel result = AuthDA.GetUserMenuList(userSysNo, applicationKey, topMenuKey); return result; }, 60 * 60 * 8)); }
/// <summary> /// 获取菜单 /// </summary> /// <param name="user"></param> /// <returns></returns> public AuthUserDataModel GetUserMenuList(AuthUserModel user) { AuthUserDataModel authUserData = null; if (user == null || user.UserSysNo <= 0) { authUserData = new AuthUserDataModel(); authUserData.Menus = new List <AuthMenuModel>(); authUserData.Functions = new List <AuthFunctionModel>(); authUserData.Roles = new List <AuthRoleModel>(); return(authUserData); } string keyWithoutLoginTime = CacheManager.GenerateKey(CACHE_KEY_USER_MENU, user.UserID, LangHelper.GetLanguageCode()); string keyWithLoginTime = CacheManager.GenerateKey(keyWithoutLoginTime, user.UILoginTime); authUserData = CacheManager.GetWithCache(keyWithLoginTime, () => { return(this.GetAuthUserDataModel(user)); }, CacheTime.Longest); return(authUserData); }
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 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); }