From 9f4e1eecb5c104052b53f04fb8b25c8664859389 Mon Sep 17 00:00:00 2001
From: liuhaonan <konodioda2333@vip.qq.com>
Date: 星期一, 27 十二月 2021 13:44:45 +0800
Subject: [PATCH] 功能完善

---
 ximon-admin/src/main/java/com/sandu/ximon/admin/security/SecurityUtils.java |   53 ++++++++++++++++++++++++++++++++++++++++++-----------
 1 files changed, 42 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..0a2c449 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,16 @@
             }
         }
     }
+
+    /**
+     * 鑾峰彇瀹㈡埛璐﹀彿鐨刬d 濡傛灉褰撳墠韬唤鏄繍钀ヤ汉鍛橈紝杩斿洖null
+     * @return
+     */
+    public static Long getClientId() {
+        Integer administratorIdentity = SecurityUtils.getAdministratorIdentity();
+        if (AdministratorEnums.CUSTOMER.getCode().equals(administratorIdentity)) {
+            return SecurityUtils.getUserId();
+        }
+        return null;
+    }
 }

--
Gitblit v1.9.3