This is an automated email from the ASF dual-hosted git repository.

tamer pushed a commit to branch dev
in repository https://gitbox.apache.org/repos/asf/incubator-streampark.git


The following commit(s) were added to refs/heads/dev by this push:
     new a187425c5 [Improve] after change team the routers need to be 
regenerated (#1868)
a187425c5 is described below

commit a187425c5bd57b7f0423635c3c62d7fd02fa9e9f
Author: benjobs <[email protected]>
AuthorDate: Wed Oct 19 17:13:39 2022 +0800

    [Improve] after change team the routers need to be regenerated (#1868)
    
    * [Improve] after change team the routers need to be regenerated
    
    * [Improve] after change team the routers need to be regenerated
---
 .../console/system/controller/MenuController.java  |  4 +-
 .../system/controller/PassportController.java      | 30 ++----------
 .../console/system/controller/UserController.java  | 15 +-----
 .../console/system/mapper/MenuMapper.java          |  2 +-
 .../console/system/service/MenuService.java        |  5 +-
 .../console/system/service/UserService.java        |  4 ++
 .../system/service/impl/MenuServiceImpl.java       | 12 ++---
 .../system/service/impl/UserServiceImpl.java       | 40 ++++++++++++++++
 .../main/resources/mapper/system/MenuMapper.xml    | 14 +++---
 .../src/components/tools/UserMenu.vue              | 54 ++++++++++++++++------
 .../src/store/modules/user.js                      | 42 +++++++++++------
 .../streampark-console-webapp/src/utils/request.js |  3 +-
 .../streampark-console-webapp/src/utils/storage.js | 41 +++++++++++++++-
 13 files changed, 178 insertions(+), 88 deletions(-)

diff --git 
a/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/system/controller/MenuController.java
 
b/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/system/controller/MenuController.java
index 656b80aae..e1612b518 100644
--- 
a/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/system/controller/MenuController.java
+++ 
b/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/system/controller/MenuController.java
@@ -53,8 +53,8 @@ public class MenuController {
     private CommonService commonService;
 
     @PostMapping("router")
-    public RestResponse getUserRouters() {
-        ArrayList<VueRouter<Menu>> routers = 
this.menuService.getUserRouters(commonService.getCurrentUser());
+    public RestResponse getUserRouters(Long teamId) {
+        ArrayList<VueRouter<Menu>> routers = 
this.menuService.getUserRouters(commonService.getUserId(), teamId);
         return RestResponse.success(routers);
     }
 
diff --git 
a/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/system/controller/PassportController.java
 
b/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/system/controller/PassportController.java
index feb86e09d..baaa57c0b 100644
--- 
a/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/system/controller/PassportController.java
+++ 
b/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/system/controller/PassportController.java
@@ -42,9 +42,7 @@ import org.springframework.web.bind.annotation.RestController;
 import javax.validation.constraints.NotBlank;
 
 import java.time.LocalDateTime;
-import java.util.HashMap;
 import java.util.Map;
-import java.util.Set;
 
 @Validated
 @RestController
@@ -91,29 +89,6 @@ public class PassportController {
         return new RestResponse();
     }
 
-    /**
-     * generate user info, contains: 1.token, 2.vue router, 3.role, 
4.permission, 5.personalized config info of frontend
-     *
-     * @param token token
-     * @param user  user
-     * @return UserInfo
-     */
-    private Map<String, Object> generateUserInfo(JWTToken token, User user) {
-        String username = user.getUsername();
-        Map<String, Object> userInfo = new HashMap<>(8);
-        userInfo.put("token", token.getToken());
-        userInfo.put("expire", token.getExpireAt());
-
-        Set<String> roles = this.roleService.getUserRoleName(username);
-        userInfo.put("roles", roles);
-
-        Set<String> permissions = this.userService.getPermissions(username);
-        userInfo.put("permissions", permissions);
-        user.dataMasking();
-        userInfo.put("user", user);
-        return userInfo;
-    }
-
     private RestResponse login(String username, String password, User user) 
throws Exception {
         if (user == null) {
             return RestResponse.success().put("code", 0);
@@ -139,6 +114,7 @@ public class PassportController {
         JWTToken jwtToken = new JWTToken(token, expireTimeStr);
         String userId = RandomStringUtils.randomAlphanumeric(20);
         user.setId(userId);
-        return new RestResponse().data(this.generateUserInfo(jwtToken, user));
+        Map<String, Object> userInfo = 
userService.generateFrontendUserInfo(user, jwtToken);
+        return new RestResponse().data(userInfo);
     }
-}
\ No newline at end of file
+}
diff --git 
a/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/system/controller/UserController.java
 
b/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/system/controller/UserController.java
index c2f586541..bfca5883c 100644
--- 
a/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/system/controller/UserController.java
+++ 
b/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/system/controller/UserController.java
@@ -47,10 +47,8 @@ import 
org.springframework.web.bind.annotation.RestController;
 import javax.validation.Valid;
 import javax.validation.constraints.NotBlank;
 
-import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
-import java.util.Set;
 
 @Slf4j
 @Validated
@@ -185,22 +183,13 @@ public class UserController {
 
         User user = commonService.getCurrentUser();
 
-        //1) set latest team
+        //1) set the latest team
         userService.setLatestTeam(teamId, user.getUserId());
 
         //2) get latest userInfo
         user.dataMasking();
 
-        Map<String, Object> infoMap = new HashMap<>(8);
-        infoMap.put("user", user);
-
-        String username = user.getUsername();
-        Set<String> roles = this.roleService.getUserRoleName(username);
-        infoMap.put("roles", roles);
-
-        Set<String> permissions = this.userService.getPermissions(username);
-        infoMap.put("permissions", permissions);
-
+        Map<String, Object> infoMap = 
userService.generateFrontendUserInfo(user, null);
         return new RestResponse().data(infoMap);
     }
 
diff --git 
a/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/system/mapper/MenuMapper.java
 
b/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/system/mapper/MenuMapper.java
index 5b08da6d7..3b446dc4c 100644
--- 
a/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/system/mapper/MenuMapper.java
+++ 
b/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/system/mapper/MenuMapper.java
@@ -29,7 +29,7 @@ public interface MenuMapper extends BaseMapper<Menu> {
 
     List<Menu> findUserPermissions(String userName);
 
-    List<Menu> findUserMenus(String userName);
+    List<Menu> findUserMenus(@Param("userId")Long userId, @Param("teamId") 
Long teamId);
 
     /**
      * Find the user ID associated with the current menu or button
diff --git 
a/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/system/service/MenuService.java
 
b/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/system/service/MenuService.java
index 8f38c1276..d9006b56a 100644
--- 
a/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/system/service/MenuService.java
+++ 
b/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/system/service/MenuService.java
@@ -19,7 +19,6 @@ package org.apache.streampark.console.system.service;
 
 import org.apache.streampark.console.base.domain.router.VueRouter;
 import org.apache.streampark.console.system.entity.Menu;
-import org.apache.streampark.console.system.entity.User;
 
 import com.baomidou.mybatisplus.extension.service.IService;
 
@@ -31,7 +30,7 @@ public interface MenuService extends IService<Menu> {
 
     List<Menu> findUserPermissions(String username);
 
-    List<Menu> findUserMenus(String username);
+    List<Menu> findUserMenus(Long userId, Long teamId);
 
     Map<String, Object> findMenus(Menu menu);
 
@@ -48,5 +47,5 @@ public interface MenuService extends IService<Menu> {
      */
     void deleteMenus(String[] menuIds) throws Exception;
 
-    ArrayList<VueRouter<Menu>> getUserRouters(User user);
+    ArrayList<VueRouter<Menu>> getUserRouters(Long userId, Long teamId);
 }
diff --git 
a/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/system/service/UserService.java
 
b/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/system/service/UserService.java
index 81fb39057..0d766c7ca 100644
--- 
a/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/system/service/UserService.java
+++ 
b/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/system/service/UserService.java
@@ -18,12 +18,14 @@
 package org.apache.streampark.console.system.service;
 
 import org.apache.streampark.console.base.domain.RestRequest;
+import org.apache.streampark.console.system.authentication.JWTToken;
 import org.apache.streampark.console.system.entity.User;
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.service.IService;
 
 import java.util.List;
+import java.util.Map;
 import java.util.Set;
 
 public interface UserService extends IService<User> {
@@ -112,4 +114,6 @@ public interface UserService extends IService<User> {
     void fillInTeam(User user);
 
     List<User> findByAppOwner(Long teamId);
+
+    Map<String, Object> generateFrontendUserInfo(User user, JWTToken token);
 }
diff --git 
a/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/system/service/impl/MenuServiceImpl.java
 
b/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/system/service/impl/MenuServiceImpl.java
index e923e8023..4550f52e8 100644
--- 
a/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/system/service/impl/MenuServiceImpl.java
+++ 
b/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/system/service/impl/MenuServiceImpl.java
@@ -65,14 +65,14 @@ public class MenuServiceImpl extends 
ServiceImpl<MenuMapper, Menu> implements Me
     }
 
     @Override
-    public List<Menu> findUserMenus(String username) {
-        User user = Optional.ofNullable(userService.findByName(username))
-            .orElseThrow(() -> new IllegalArgumentException(String.format("The 
username [%s] not found", username)));
+    public List<Menu> findUserMenus(Long userId, Long teamId) {
+        User user = Optional.ofNullable(userService.getById(userId))
+            .orElseThrow(() -> new IllegalArgumentException(String.format("The 
user, id:[%s] not found", userId)));
         // Admin has the permission for all menus.
         if (UserType.ADMIN.equals(user.getUserType())) {
             return this.list(new LambdaQueryWrapper<Menu>().eq(Menu::getType, 
"0").orderByAsc(Menu::getOrderNum));
         }
-        return this.baseMapper.findUserMenus(username);
+        return this.baseMapper.findUserMenus(userId, teamId);
     }
 
     @Override
@@ -139,10 +139,10 @@ public class MenuServiceImpl extends 
ServiceImpl<MenuMapper, Menu> implements Me
     }
 
     @Override
-    public ArrayList<VueRouter<Menu>> getUserRouters(User user) {
+    public ArrayList<VueRouter<Menu>> getUserRouters(Long userId, Long teamId) 
{
         List<VueRouter<Menu>> routes = new ArrayList<>();
         // The query type is the menu type
-        List<Menu> menus = this.findUserMenus(user.getUsername());
+        List<Menu> menus = this.findUserMenus(userId, teamId);
         menus.forEach(menu -> {
             VueRouter<Menu> route = new VueRouter<>();
             route.setId(menu.getMenuId().toString());
diff --git 
a/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/system/service/impl/UserServiceImpl.java
 
b/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/system/service/impl/UserServiceImpl.java
index 16d24736c..01d86cd91 100644
--- 
a/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/system/service/impl/UserServiceImpl.java
+++ 
b/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/system/service/impl/UserServiceImpl.java
@@ -21,6 +21,7 @@ import org.apache.streampark.common.util.AssertUtils;
 import org.apache.streampark.console.base.domain.RestRequest;
 import org.apache.streampark.console.base.exception.ApiAlertException;
 import org.apache.streampark.console.base.util.ShaHashUtils;
+import org.apache.streampark.console.system.authentication.JWTToken;
 import org.apache.streampark.console.system.entity.Member;
 import org.apache.streampark.console.system.entity.Menu;
 import org.apache.streampark.console.system.entity.Team;
@@ -28,6 +29,7 @@ import org.apache.streampark.console.system.entity.User;
 import org.apache.streampark.console.system.mapper.UserMapper;
 import org.apache.streampark.console.system.service.MemberService;
 import org.apache.streampark.console.system.service.MenuService;
+import org.apache.streampark.console.system.service.RoleService;
 import org.apache.streampark.console.system.service.UserService;
 
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
@@ -44,7 +46,9 @@ import 
org.springframework.transaction.annotation.Transactional;
 import java.util.Arrays;
 import java.util.Collections;
 import java.util.Date;
+import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
 import java.util.Set;
 import java.util.stream.Collectors;
 
@@ -59,6 +63,9 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, 
User> implements Us
     @Autowired
     private MenuService menuService;
 
+    @Autowired
+    private RoleService roleService;
+
     @Override
     public User findByName(String username) {
         return baseMapper.selectOne(new 
LambdaQueryWrapper<User>().eq(User::getUsername, username));
@@ -203,6 +210,39 @@ public class UserServiceImpl extends 
ServiceImpl<UserMapper, User> implements Us
         return baseMapper.findByAppOwner(teamId);
     }
 
+    /**
+     * generate user info, contains: 1.token, 2.vue router, 3.role, 
4.permission, 5.personalized config info of frontend
+     *
+     * @param user  user
+     * @return UserInfo
+     */
+    @Override
+    public Map<String, Object> generateFrontendUserInfo(User user, JWTToken 
token) {
+        AssertUtils.checkNotNull(user);
+        String username = user.getUsername();
+        Map<String, Object> userInfo = new HashMap<>(8);
+
+        // 1) token & expire
+        if (token != null) {
+            userInfo.put("token", token.getToken());
+            userInfo.put("expire", token.getExpireAt());
+        }
+
+        // 2) user
+        user.dataMasking();
+        userInfo.put("user", user);
+
+        // 3) roles
+        Set<String> roles = this.roleService.getUserRoleName(username);
+        userInfo.put("roles", roles);
+
+        // 4) permissions
+        Set<String> permissions = this.getPermissions(username);
+        userInfo.put("permissions", permissions);
+
+        return userInfo;
+    }
+
     private void setUserRoles(User user, String[] roles) {
         Arrays.stream(roles).forEach(roleId -> {
             Member ur = new Member();
diff --git 
a/streampark-console/streampark-console-service/src/main/resources/mapper/system/MenuMapper.xml
 
b/streampark-console/streampark-console-service/src/main/resources/mapper/system/MenuMapper.xml
index aff92c820..659cc7b30 100644
--- 
a/streampark-console/streampark-console-service/src/main/resources/mapper/system/MenuMapper.xml
+++ 
b/streampark-console/streampark-console-service/src/main/resources/mapper/system/MenuMapper.xml
@@ -49,15 +49,13 @@
 
     <select id="findUserMenus" resultMap="menu">
         select m.*
-        from t_menu m
+        from t_menu m inner join t_role_menu rm
+        on m.menu_id = rm.menu_id
+        inner join t_member mr
+        on rm.role_id = mr.role_id
         where m.type &lt;&gt; 1
-          and m.menu_id in
-              (select distinct rm.menu_id
-               from t_role_menu rm
-                        left join t_role r on (rm.role_id = r.role_id)
-                        left join t_member ur on (ur.role_id = r.role_id)
-                        left join t_user u on (u.user_id = ur.user_id)
-               where u.username = #{userName})
+        and mr.user_id = #{userId}
+        and mr.team_id = #{teamId}
         order by m.order_num
     </select>
 
diff --git 
a/streampark-console/streampark-console-webapp/src/components/tools/UserMenu.vue
 
b/streampark-console/streampark-console-webapp/src/components/tools/UserMenu.vue
index 6fec5e9b8..1ca4502f5 100644
--- 
a/streampark-console/streampark-console-webapp/src/components/tools/UserMenu.vue
+++ 
b/streampark-console/streampark-console-webapp/src/components/tools/UserMenu.vue
@@ -228,7 +228,7 @@ export default {
   },
 
   methods: {
-    ...mapActions(['SignOut','ChangeTheme', 'SetTeam']),
+    ...mapActions(['SignOut','ChangeTheme', 'SetTeam', 'GetRouter']),
     handleLogout () {
       const that = this
       this.$confirm({
@@ -317,10 +317,10 @@ export default {
     },
 
     handlePrepareTeam() {
-      let id = sessionStorage.getItem(TEAM_ID)
+      let id = storage.getSession(TEAM_ID)
       if (id == null) {
         id = storage.get(TEAM_ID)
-        sessionStorage.setItem(TEAM_ID, id)
+        storage.setSession(TEAM_ID, id)
       }
       this.teamId = id.toString()
     },
@@ -335,7 +335,6 @@ export default {
     },
 
     handleRefreshPage() {
-      const defaultPage = '/flink/app'
       const pages = [
         '/system/user',
         '/system/role',
@@ -345,19 +344,29 @@ export default {
         '/system/member',
         '/system/variable',
         '/flink/project',
-        '/flink/app'
+        '/flink/app',
+        '/flink/setting'
       ]
-      const skipPages = [
+      const whiteList = [
         '/flink/notebook/view',
-        '/flink/setting'
       ]
       const currPath = location.href.replace(/(.*)#/,'')
-      if (!skipPages.includes(currPath)) {
-        if (pages.includes(currPath)) {
-          window.location.reload()
-        } else {
-          this.$router.push({path: defaultPage})
-        }
+      if (pages.includes(currPath)) {
+        this.GetRouter({}).then(resp => {
+          const routers = resp || []
+          if (routers != null) {
+            const hasAuth = this.handleFilterRouter(routers[0], currPath)
+            if (hasAuth) {
+              window.location.reload()
+            } else {
+              window.location.href = '/'
+            }
+          }
+        })
+      } else if (whiteList.includes(currPath)) {
+        window.location.reload()
+      } else {
+        window.location.href = '/'
       }
     },
 
@@ -368,6 +377,25 @@ export default {
         this.teamList = r.data
       })
     },
+
+    handleFilterRouter(src, target) {
+      if (src.path === target) {
+        if (src.meta && src.meta.hidden) {
+          return false
+        }
+        return true
+      }
+      if (src.children && src.children.length > 0) {
+        for (let i=0; i< src.children.length; i++) {
+          const child = src.children[i]
+          if (this.handleFilterRouter(child, target)) {
+            return true
+          }
+        }
+        return false
+      }
+    }
+
   },
   watch: {
     visible() {
diff --git 
a/streampark-console/streampark-console-webapp/src/store/modules/user.js 
b/streampark-console/streampark-console-webapp/src/store/modules/user.js
index 35ea47eb5..bdd077fa5 100644
--- a/streampark-console/streampark-console-webapp/src/store/modules/user.js
+++ b/streampark-console/streampark-console-webapp/src/store/modules/user.js
@@ -26,10 +26,10 @@ const user = {
     expire: storage.get(EXPIRE),
     token: storage.get(TOKEN),
     info: storage.get(USER_INFO),
-    roles: storage.get(ROLES),
-    permissions: storage.get(PERMISSIONS),
-    routers: storage.get(USER_ROUTER),
-    teamId: storage.get(TEAM_ID),
+    roles: storage.getSession(ROLES) || storage.get(ROLES),
+    permissions: storage.getSession(PERMISSIONS) || storage.get(PERMISSIONS),
+    routers: storage.getSession(USER_ROUTER) || storage.get(USER_ROUTER),
+    teamId: storage.getSession(TEAM_ID) || storage.get(TEAM_ID),
     name: '',
     welcome: '',
     avatar: ''
@@ -44,30 +44,39 @@ const user = {
       storage.set(TOKEN, token)
       state.token = token
     },
+    SET_INFO: (state, info) => {
+      storage.set(USER_INFO, info)
+      storage.set(USER_NAME, info.username)
+      state.info = info
+      state.name = info.username
+      state.avatar = info.avatar
+    },
     SET_TEAM: (state, teamId) => {
-      sessionStorage.setItem(TEAM_ID, teamId)
+      storage.setSession(TEAM_ID, teamId)
       storage.set(TEAM_ID, teamId)
       state.teamId = teamId
     },
     SET_ROLES: (state, roles) => {
       storage.set(ROLES, roles)
+      storage.setSession(ROLES, roles)
       state.roles = roles
     },
     SET_PERMISSIONS: (state, permissions) => {
       storage.set(PERMISSIONS, permissions)
+      storage.setSession(PERMISSIONS, permissions)
       state.permissions = permissions
     },
     SET_ROUTERS: (state, routers) => {
       storage.set(USER_ROUTER, routers)
+      storage.setSession(USER_ROUTER, routers)
       state.routers = routers
     },
-    SET_INFO: (state, info) => {
-      storage.set(USER_INFO, info)
-      storage.set(USER_NAME, info.username)
-      state.info = info
-      state.name = info.username
-      state.avatar = info.avatar
+    CLEAR_ROUTERS: (state, empty) => {
+      state.roles = null
+      storage.rm(USER_ROUTER)
+      storage.rmSession(USER_ROUTER)
     },
+
     SET_EMPTY: (state, empty) => {
       state.token = null
       state.info = null
@@ -78,12 +87,18 @@ const user = {
       state.avatar = null
       storage.rm(USER_INFO)
       storage.rm(USER_NAME)
-      storage.rm(USER_ROUTER)
       storage.rm(TOKEN)
+      storage.rm(EXPIRE)
+
+      storage.rm(USER_ROUTER)
       storage.rm(TEAM_ID)
       storage.rm(ROLES)
       storage.rm(PERMISSIONS)
-      storage.rm(EXPIRE)
+
+      storage.rmSession(USER_ROUTER)
+      storage.rmSession(TEAM_ID)
+      storage.rmSession(ROLES)
+      storage.rmSession(PERMISSIONS)
     }
   },
 
@@ -149,6 +164,7 @@ const user = {
             commit('SET_ROLES', respData.roles)
             commit('SET_PERMISSIONS', respData.permissions)
             commit('SET_INFO', respData.user)
+            commit('CLEAR_ROUTERS', null)
             resolve()
           }).catch(error => {
             reject(error)
diff --git a/streampark-console/streampark-console-webapp/src/utils/request.js 
b/streampark-console/streampark-console-webapp/src/utils/request.js
index e9db9c185..8531b657a 100644
--- a/streampark-console/streampark-console-webapp/src/utils/request.js
+++ b/streampark-console/streampark-console-webapp/src/utils/request.js
@@ -77,10 +77,11 @@ http.interceptors.request.use(config => {
         delete data.sortOrder
       }
     }
-    const teamId = sessionStorage.getItem(TEAM_ID)
+    const teamId = storage.getSession(TEAM_ID)
     if (data['teamId'] == null && teamId) {
       data['teamId'] = teamId
     }
+
     if (config.method === 'get') {
       // filter undefined params
       data = Object.fromEntries(Object.entries(data).filter(([_,value]) => 
value !== undefined))
diff --git a/streampark-console/streampark-console-webapp/src/utils/storage.js 
b/streampark-console/streampark-console-webapp/src/utils/storage.js
index 887cba52d..3dc74b9d5 100644
--- a/streampark-console/streampark-console-webapp/src/utils/storage.js
+++ b/streampark-console/streampark-console-webapp/src/utils/storage.js
@@ -83,12 +83,51 @@ const storage = {
     window.localStorage.removeItem(name)
     window.localStorage.removeItem(`${name}_EXPIRE`)
   },
+
   clear: () => {
     if (!global.window || !name) {
       return
     }
     window.localStorage.clear()
-  }
+  },
+
+  setSession: (name, content) => {
+    name = config.storageOptions.namespace + name
+    if (!global.window || !name) {
+      return
+    }
+    if (typeof content !== 'string') {
+      content = JSON.stringify(content)
+    }
+    const storage = global.window.sessionStorage
+    storage.setItem(name, content)
+  },
+
+  getSession: (name, defValue) => {
+    name = config.storageOptions.namespace + name
+    defValue = defValue === undefined ? null : defValue
+    if (!global.window || !name) {
+      return defValue
+    }
+    const storage = global.window.sessionStorage
+    const content = storage.getItem(name)
+    if (!content) return defValue
+    try {
+      return JSON.parse(content)
+    } catch (e) {
+      return content
+    }
+  },
+
+  rmSession: (name) => {
+    name = config.storageOptions.namespace + name
+    if (!global.window || !name) {
+      return
+    }
+    window.sessionStorage.removeItem(name)
+  },
+
+
 }
 
 export default storage

Reply via email to