From 67b483b124d74ba1ef5701b508d4e808e26b0d2e Mon Sep 17 00:00:00 2001
From: zhanzhiqin <895896009@qq.com>
Date: 星期五, 11 三月 2022 15:13:09 +0800
Subject: [PATCH] fix
---
ximon-admin/src/main/java/com/sandu/ximon/admin/security/SecurityUtils.java | 136 ++++++++++++++++++++++-----------------------
1 files changed, 66 insertions(+), 70 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..e5c38ac 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,28 +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.ximon.admin.dto.AdminJwtUser;
-import com.sandu.ximon.dao.domain.Admin;
+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;
/**
* 鑾峰彇褰撳墠鐧诲綍鐨勭敤鎴�
@@ -32,63 +15,76 @@
*/
public class SecurityUtils {
-
- public static UserDetails getUserDetails() {
+ /**
+ * 鑾峰彇褰撳墠鐧诲綍鐢ㄦ埛淇℃伅
+ */
+ public static LoginUserInfo 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) {
- UserDetails userDetails = (UserDetails) authentication.getPrincipal();
- UserDetailsService userDetailsService = SpringContextHolder.getBean(UserDetailsService.class);
- return userDetailsService.loadUserByUsername(userDetails.getUsername());
- }
- return null;
-// throw new BusinessException(ResponseStatusEnums.TOKEN_INVALID.getCode(), ResponseStatusEnums.TOKEN_INVALID.getMessage());
- }
-
- /**
- * 鑾峰彇绯荤粺鐢ㄦ埛鍚嶇О 鐧诲綍鍚�
- *
- * @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());
- }
- UserDetails userDetails = (UserDetails) authentication.getPrincipal();
- return userDetails.getUsername();
- }
-
- /**
- * 鑾峰彇绯荤粺鐢ㄦ埛id
- *
- * @return 绯荤粺鐢ㄦ埛id
- */
- public static Long getUserId() {
- SecurityProperties properties = SpringContextHolder.getBean(SecurityProperties.class);
- if (!properties.isCacheOnline()) {
- UserDetails obj = getUserDetails();
- if (obj == null) {
- return null;
- }
- if (!obj.isEnabled()) {
+ if (authentication.getPrincipal() instanceof LoginUserInfo) {
+ LoginUserInfo loginUserInfo = (LoginUserInfo) authentication.getPrincipal();
+ if (!loginUserInfo.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;
- }
+ return loginUserInfo;
}
+ return null;
+ }
+
+ /**
+ * 鑾峰彇褰撳墠鐧诲綍鐢ㄦ埛鐧诲綍鍚�
+ *
+ * @return 褰撳墠鐧诲綍鐢ㄦ埛鐧诲綍鍚�
+ */
+ public static String getUsername() {
+ LoginUserInfo loginUserInfo = getUserDetails();
+ if (loginUserInfo != null) {
+ return loginUserInfo.getUsername();
+ }
+ return null;
+ }
+
+ /**
+ * 鑾峰彇绠$悊鍛樿韩浠斤紝 绫诲瀷鍙 {{@link AdministratorEnums}}
+ *
+ * @return
+ */
+ public static Integer getAdministratorIdentity() {
+ LoginUserInfo loginUserInfo = getUserDetails();
+ if (loginUserInfo == null) {
+ throw new BusinessException(ResponseStatusEnums.TOKEN_INVALID.getCode(), ResponseStatusEnums.TOKEN_INVALID.getMessage());
+ }
+ return loginUserInfo.getAdministratorType();
+ }
+
+ /**
+ * 鑾峰彇褰撳墠鐧诲綍璐﹀彿鐨刬d
+ *
+ * @return 褰撳墠鐧诲綍璐﹀彿鐨刬d
+ */
+ public static Long getUserId() {
+ LoginUserInfo loginUserInfo = getUserDetails();
+ if (loginUserInfo != null) {
+ return loginUserInfo.getUserId();
+ }
+ return null;
+ }
+
+ /**
+ * 鑾峰彇瀹㈡埛璐﹀彿鐨刬d 濡傛灉褰撳墠韬唤鏄繍钀ヤ汉鍛橈紝杩斿洖null
+ *
+ * @return
+ */
+ public static Long getClientId() {
+ LoginUserInfo loginUserInfo = getUserDetails();
+ if (loginUserInfo == null) {
+ return null;
+ }
+ if (AdministratorEnums.CUSTOMER.getCode().equals(loginUserInfo.getAdministratorType())) {
+ return loginUserInfo.getUserId();
+ }
+ return null;
}
}
--
Gitblit v1.9.3