Example #1
0
        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));
        }
Example #3
0
        /// <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);
        }
Example #4
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);
        }
Example #5
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);
        }