From 34768217f342b700f2da6c3be6df13465c68ab3b Mon Sep 17 00:00:00 2001
From: liuhaonan <konodioda2333@vip.qq.com>
Date: 星期四, 02 十二月 2021 16:16:15 +0800
Subject: [PATCH] 功能完善

---
 ximon-admin/src/main/java/com/sandu/ximon/admin/security/SecurityUtils.java |   49 ++++++++++++++++++++++++++++++++++++++-----------
 1 files changed, 38 insertions(+), 11 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 f71efd8..73f2063 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
@@ -15,8 +15,7 @@
 import com.sandu.common.security.jwt.JwtTokenProvider;
 import com.sandu.common.util.RequestHolder;
 import com.sandu.common.util.SpringContextHolder;
-import com.sandu.ximon.admin.dto.AdminJwtUser;
-import com.sandu.ximon.dao.domain.Admin;
+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;
@@ -32,25 +31,32 @@
  */
 public class SecurityUtils {
 
-
-    public static UserDetails getUserDetails() {
+    /**
+     * 鑾峰彇褰撳墠鐧诲綍鐢ㄦ埛淇℃伅
+     */
+    private static UserDetails getUserDetails() {
         final Authentication authentication = SecurityContextHolder.getContext().getAuthentication();
         if (authentication == null) {
             throw new BusinessException(ResponseStatusEnums.TOKEN_INVALID.getCode(), ResponseStatusEnums.TOKEN_INVALID.getMessage());
         }
-        if (authentication.getPrincipal() instanceof UserDetails) {
+        Integer administratorIdentity = getAdministratorIdentity();
+        if (AdministratorEnums.ADMIN.getCode().equals(administratorIdentity)) {
             UserDetails userDetails = (UserDetails) authentication.getPrincipal();
-            UserDetailsService userDetailsService = SpringContextHolder.getBean(UserDetailsService.class);
+            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());
         }
+
         return null;
-//        throw new BusinessException(ResponseStatusEnums.TOKEN_INVALID.getCode(), ResponseStatusEnums.TOKEN_INVALID.getMessage());
     }
 
     /**
-     * 鑾峰彇绯荤粺鐢ㄦ埛鍚嶇О 鐧诲綍鍚�
+     * 鑾峰彇褰撳墠鐧诲綍鐢ㄦ埛鐧诲綍鍚�
      *
-     * @return 绯荤粺鐢ㄦ埛鍚嶇О
+     * @return 褰撳墠鐧诲綍鐢ㄦ埛鐧诲綍鍚�
      */
     public static String getUsername() {
         final Authentication authentication = SecurityContextHolder.getContext().getAuthentication();
@@ -62,9 +68,22 @@
     }
 
     /**
-     * 鑾峰彇绯荤粺鐢ㄦ埛id
+     * 鑾峰彇绠$悊鍛樿韩浠斤紝 绫诲瀷鍙 {{@link AdministratorEnums}}
      *
-     * @return 绯荤粺鐢ㄦ埛id
+     * @return
+     */
+    public static Integer getAdministratorIdentity() {
+        final Authentication authentication = SecurityContextHolder.getContext().getAuthentication();
+        if (authentication == null) {
+            throw new BusinessException(ResponseStatusEnums.TOKEN_INVALID.getCode(), ResponseStatusEnums.TOKEN_INVALID.getMessage());
+        }
+        return (Integer) authentication.getCredentials();
+    }
+
+    /**
+     * 鑾峰彇褰撳墠鐧诲綍璐﹀彿鐨刬d
+     *
+     * @return 褰撳墠鐧诲綍璐﹀彿鐨刬d
      */
     public static Long getUserId() {
         SecurityProperties properties = SpringContextHolder.getBean(SecurityProperties.class);
@@ -91,4 +110,12 @@
             }
         }
     }
+
+    public static Long getClientId() {
+        Integer administratorIdentity = SecurityUtils.getAdministratorIdentity();
+        if (AdministratorEnums.CUSTOMER.getCode().equals(administratorIdentity)) {
+            return SecurityUtils.getUserId();
+        }
+        return null;
+    }
 }

--
Gitblit v1.9.3