From acebf48e2e139f6f298cfbba829cc3c29db3c891 Mon Sep 17 00:00:00 2001
From: Junjie <540245094@qq.com>
Date: 星期三, 03 七月 2024 10:20:23 +0800
Subject: [PATCH] #

---
 zy-asrs-wms/src/main/java/com/zy/asrs/wms/common/security/JwtAuthenticationFilter.java |   21 ++++++++++++++++++++-
 1 files changed, 20 insertions(+), 1 deletions(-)

diff --git a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/common/security/JwtAuthenticationFilter.java b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/common/security/JwtAuthenticationFilter.java
index df3331f..555abff 100644
--- a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/common/security/JwtAuthenticationFilter.java
+++ b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/common/security/JwtAuthenticationFilter.java
@@ -1,12 +1,16 @@
 package com.zy.asrs.wms.common.security;
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.zy.asrs.common.domain.enums.LoginSystemType;
 import com.zy.asrs.framework.common.Cools;
 import com.zy.asrs.wms.common.config.ConfigProperties;
 import com.zy.asrs.wms.common.constant.Constants;
 import com.zy.asrs.wms.system.entity.Menu;
+import com.zy.asrs.wms.system.entity.Role;
 import com.zy.asrs.wms.system.entity.User;
 import com.zy.asrs.wms.system.entity.UserLogin;
 import com.zy.asrs.wms.system.service.UserLoginService;
+import com.zy.asrs.wms.system.service.UserRoleService;
 import com.zy.asrs.wms.system.service.UserService;
 import com.zy.asrs.wms.utils.HttpUtils;
 import com.zy.asrs.wms.utils.JwtUtil;
@@ -50,6 +54,8 @@
     private UserService userService;
     @Resource
     private UserLoginService userLoginService;
+    @Resource
+    private UserRoleService userRoleService;
 
     @Override
     protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain chain) throws ServletException, IOException {
@@ -82,10 +88,23 @@
                     if (user == null) {
                         throw new UsernameNotFoundException("Username not found");
                     }
+                    boolean root = false;
+                    List<Role> roles = userRoleService.listByUserId(user.getId());
+                    for (Role role : roles) {
+                        if (role.getId() == 1) {
+                            root = true;
+                            break;
+                        }
+                    }
+                    UserLogin userLogin = null;
+                    if (root) {
+                        userLogin = userLoginService.superFindByUserId(user.getId(), String.valueOf(LoginSystemType.WMS));
+                    }
+
                     List<Menu> authorities = user.getAuthorities().stream()
                             .filter(m -> !Cools.isEmpty(m.getAuthority())).collect(Collectors.toList());
                     UsernamePasswordAuthenticationToken authentication = new UsernamePasswordAuthenticationToken(
-                            user, null, authorities);
+                            userLogin == null ? user : userLogin, null, authorities);
                     SecurityContextHolder.getContext().setAuthentication(authentication);
                     // token灏嗚杩囨湡绛惧彂鏂皌oken, 闃叉绐佺劧閫�鍑虹櫥褰�
                     long expiration = (claims.getExpiration().getTime() - new Date().getTime()) / 1000 / 60;

--
Gitblit v1.9.1