From 1cd1c38372a5652b59866f28953179476cf84567 Mon Sep 17 00:00:00 2001
From: liuhaonan <konodioda2333@vip.qq.com>
Date: 星期二, 18 一月 2022 10:40:47 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 ximon-admin/src/main/java/com/sandu/ximon/admin/security/SecurityUtils.java |   87 +++++++++++++------------------------------
 1 files changed, 26 insertions(+), 61 deletions(-)

diff --git a/ximon-admin/src/main/java/com/sandu/ximon/admin/security/SecurityUtils.java b/ximon-admin/src/main/java/com/sandu/ximon/admin/security/SecurityUtils.java
index 0a2c449..0bbccb2 100644
--- a/ximon-admin/src/main/java/com/sandu/ximon/admin/security/SecurityUtils.java
+++ b/ximon-admin/src/main/java/com/sandu/ximon/admin/security/SecurityUtils.java
@@ -1,27 +1,11 @@
-/**
- * Copyright (C) 2018-2020
- * All rights reserved, Designed By www.yixiang.co
- * 娉ㄦ剰锛�
- * 鏈蒋浠朵负www.yixiang.co寮�鍙戠爺鍒�
- */
 package com.sandu.ximon.admin.security;
 
-import cn.hutool.json.JSONObject;
 import com.sandu.common.enums.ResponseStatusEnums;
 import com.sandu.common.execption.BusinessException;
-import com.sandu.common.redis.online.OnlineUser;
-import com.sandu.common.redis.online.OnlineUserService;
-import com.sandu.common.security.config.SecurityProperties;
-import com.sandu.common.security.jwt.JwtTokenProvider;
-import com.sandu.common.util.RequestHolder;
-import com.sandu.common.util.SpringContextHolder;
+import com.sandu.common.security.LoginUserInfo;
 import com.sandu.ximon.dao.enums.AdministratorEnums;
 import org.springframework.security.core.Authentication;
 import org.springframework.security.core.context.SecurityContextHolder;
-import org.springframework.security.core.userdetails.UserDetails;
-import org.springframework.security.core.userdetails.UserDetailsService;
-
-import javax.servlet.http.HttpServletRequest;
 
 /**
  * 鑾峰彇褰撳墠鐧诲綍鐨勭敤鎴�
@@ -34,22 +18,18 @@
     /**
      * 鑾峰彇褰撳墠鐧诲綍鐢ㄦ埛淇℃伅
      */
-    private static UserDetails getUserDetails() {
+    private static LoginUserInfo getUserDetails() {
         final Authentication authentication = SecurityContextHolder.getContext().getAuthentication();
         if (authentication == null) {
             throw new BusinessException(ResponseStatusEnums.TOKEN_INVALID.getCode(), ResponseStatusEnums.TOKEN_INVALID.getMessage());
         }
-        Integer administratorIdentity = getAdministratorIdentity();
-        if (AdministratorEnums.ADMIN.getCode().equals(administratorIdentity)) {
-            UserDetails userDetails = (UserDetails) authentication.getPrincipal();
-            UserDetailsService userDetailsService = SpringContextHolder.getBean("adminDetailsService");
-            return userDetailsService.loadUserByUsername(userDetails.getUsername());
-        } else if (AdministratorEnums.CUSTOMER.getCode().equals(administratorIdentity)) {
-            UserDetails userDetails = (UserDetails) authentication.getPrincipal();
-            UserDetailsService userDetailsService = SpringContextHolder.getBean("customerDetailsService");
-            return userDetailsService.loadUserByUsername(userDetails.getUsername());
+        if (authentication.getPrincipal() instanceof LoginUserInfo) {
+            LoginUserInfo loginUserInfo = (LoginUserInfo) authentication.getPrincipal();
+            if (!loginUserInfo.isEnabled()) {
+                throw new BusinessException(ResponseStatusEnums.DISABLE_ACCOUNT.getCode(), ResponseStatusEnums.DISABLE_ACCOUNT.getMessage());
+            }
+            return loginUserInfo;
         }
-
         return null;
     }
 
@@ -59,12 +39,11 @@
      * @return 褰撳墠鐧诲綍鐢ㄦ埛鐧诲綍鍚�
      */
     public static String getUsername() {
-        final Authentication authentication = SecurityContextHolder.getContext().getAuthentication();
-        if (authentication == null) {
-            throw new BusinessException(ResponseStatusEnums.TOKEN_INVALID.getCode(), ResponseStatusEnums.TOKEN_INVALID.getMessage());
+        LoginUserInfo loginUserInfo = getUserDetails();
+        if (loginUserInfo != null) {
+            return loginUserInfo.getUsername();
         }
-        UserDetails userDetails = (UserDetails) authentication.getPrincipal();
-        return userDetails.getUsername();
+        return null;
     }
 
     /**
@@ -73,11 +52,11 @@
      * @return
      */
     public static Integer getAdministratorIdentity() {
-        final Authentication authentication = SecurityContextHolder.getContext().getAuthentication();
-        if (authentication == null) {
+        LoginUserInfo loginUserInfo = getUserDetails();
+        if (loginUserInfo == null) {
             throw new BusinessException(ResponseStatusEnums.TOKEN_INVALID.getCode(), ResponseStatusEnums.TOKEN_INVALID.getMessage());
         }
-        return (Integer) authentication.getCredentials();
+        return loginUserInfo.getAdministratorType();
     }
 
     /**
@@ -86,39 +65,25 @@
      * @return 褰撳墠鐧诲綍璐﹀彿鐨刬d
      */
     public static Long getUserId() {
-        SecurityProperties properties = SpringContextHolder.getBean(SecurityProperties.class);
-        if (!properties.isCacheOnline()) {
-            UserDetails obj = getUserDetails();
-            if (obj == null) {
-                return null;
-            }
-            if (!obj.isEnabled()) {
-                throw new BusinessException(ResponseStatusEnums.DISABLE_ACCOUNT.getCode(), ResponseStatusEnums.DISABLE_ACCOUNT.getMessage());
-            }
-            JSONObject json = new JSONObject(obj);
-            return json.getJSONObject("user").get("id", Long.class);
-        } else {
-            HttpServletRequest httpServletRequest = RequestHolder.getHttpServletRequest();
-            JwtTokenProvider tokenProvider = SpringContextHolder.getBean(JwtTokenProvider.class);
-            OnlineUserService onlineUserService = SpringContextHolder.getBean(OnlineUserService.class);
-            String username = tokenProvider.getSubjectForce(tokenProvider.getToken(httpServletRequest));
-            OnlineUser one = onlineUserService.getOne(properties.getOnlineKey() + username);
-            if (one != null) {
-                return one.getUserId();
-            } else {
-                return null;
-            }
+        LoginUserInfo loginUserInfo = getUserDetails();
+        if (loginUserInfo != null) {
+            return loginUserInfo.getUserId();
         }
+        return null;
     }
 
     /**
      * 鑾峰彇瀹㈡埛璐﹀彿鐨刬d 濡傛灉褰撳墠韬唤鏄繍钀ヤ汉鍛橈紝杩斿洖null
+     *
      * @return
      */
     public static Long getClientId() {
-        Integer administratorIdentity = SecurityUtils.getAdministratorIdentity();
-        if (AdministratorEnums.CUSTOMER.getCode().equals(administratorIdentity)) {
-            return SecurityUtils.getUserId();
+        LoginUserInfo loginUserInfo = getUserDetails();
+        if (loginUserInfo == null) {
+            return null;
+        }
+        if (AdministratorEnums.CUSTOMER.getCode().equals(loginUserInfo.getAdministratorType())) {
+            return loginUserInfo.getUserId();
         }
         return null;
     }

--
Gitblit v1.9.3