From 4494a005613728c9dc22d018bca42ef5d3ebcf69 Mon Sep 17 00:00:00 2001
From: xiejun <xiejun@vci-tech.com>
Date: 星期二, 14 一月 2025 20:41:47 +0800
Subject: [PATCH] 产品型号集成,类型转换,人员组织加日志,申请接口引用码段值校验

---
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/PasswordFreeLoginServiceImpl.java |  109 ++++++++++++++++++++++++++++++++++++++++--------------
 1 files changed, 80 insertions(+), 29 deletions(-)

diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/PasswordFreeLoginServiceImpl.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/PasswordFreeLoginServiceImpl.java
index 69f5c13..a4d79c9 100644
--- a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/PasswordFreeLoginServiceImpl.java
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/PasswordFreeLoginServiceImpl.java
@@ -4,6 +4,7 @@
 import com.vci.ubcs.code.entity.TokenUserObject;
 import com.vci.ubcs.code.service.IPasswordFreeLoginService;
 import com.vci.ubcs.starter.util.HttpUtils;
+import com.vci.ubcs.system.cache.NacosConfigCache;
 import io.jsonwebtoken.Claims;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.http.auth.AuthenticationException;
@@ -33,6 +34,8 @@
 import java.util.Map;
 import java.util.logging.Logger;
 
+import static com.vci.ubcs.starter.util.AESUtils.aesDecrypt;
+import static com.vci.ubcs.starter.util.AESUtils.aesEncrypt;
 import static org.springblade.core.secure.utils.AuthUtil.parseJWT;
 
 /**
@@ -47,14 +50,24 @@
 	// 閫氳繃鏈嶅姟娉ㄥ唽涓績鑾峰彇缃戝叧鐨勭鍙e彿
 	@Autowired
 	private DiscoveryClient discoveryClient;
+
 	// 閰嶇疆鐨勫厤瀵嗙櫥褰曠殑璐﹀彿鎵�灞炵殑绉熸埛id
-	@Value("${password-free.pwd-free-tenant-id}")
+	@Value("${password-free.pwd-free-tenant-id:000000}")
 	private String pwdFreeTenantId;
+
 	// 閰嶇疆鐨則oken鍦╮edis涓殑鐢熷瓨鏃堕棿
-	@Value("${password-free.token-redis-expire}")
+	@Value("${password-free.token-redis-expire:36000}")
 	private Long tokenRedisExpire;
-	@Value("${password-free.pwd-free-addr}")
+
+	@Value("${password-free.pwd-free-addr:localhost}")
 	private String pwdFreeAddr;
+
+	@Value("${password-free.client-id:a104c4fd2f0e4958}")
+	private String clientId;//搴旂敤ID
+
+	@Value("${password-free.secret-key:9fbd170bd83eb869}")
+	private String secretKey;//搴旂敤绉橀挜
+
 	@Autowired
 	private BladeRedis bladeRedis;
 
@@ -79,10 +92,12 @@
 	/**
 	 * 鍏嶅瘑鐧诲綍锛屾敼鍙樺綋鍓峸ebservice璇锋眰鐨刪eader
 	 * @param userName 璐﹀彿
-	 * @return
+	 * @param servletRequest
+	 * @return boolean
+	 * @throws AuthenticationException
 	 */
 	@Override
-	public boolean passwordFreeLogin(String userName, ServletRequest servletRequest) throws AuthenticationException {
+	public boolean pwdFreeLoginByBoolean(String userName, ServletRequest servletRequest) throws AuthenticationException {
 		//杩涙潵鍏堝垽鏂紦瀛樹腑鏄惁瀛樺湪token
 		// 璇锋眰鏉ヨ嚜宸卞摢涓猧p鍦板潃
 		HttpServletRequest request = (HttpServletRequest) servletRequest;
@@ -93,28 +108,8 @@
 		String token2 = JwtUtil.getToken(authToken);
 		BladeUser user = this.getUser(token2);
 		//涓嶅瓨鍦ㄥ氨璇锋眰
-		if(Func.isEmpty(authToken) || Func.isEmpty(user)){
-			// 鍏嶅瘑鐧诲綍鎺ュ彛鍦板潃
-			String loginUrl = "http://"+pwdFreeAddr+":"+this.getGatewayPort("ubcs-gateway")+"/ubcs-auth/oauth/token";
-			log.debug("褰撳墠鍏嶅瘑鐧诲綍璋冪敤鍦板潃锛�"+loginUrl);
-			// 璇锋眰ubcs-auth鏈嶅姟鑾峰彇token锛屽厛璁剧疆璇锋眰澶�
-			HttpHeaders headers = new HttpHeaders();
-			headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED);
-			headers.set("Authorization", "Basic c3dvcmQ6c3dvcmRfc2VjcmV0");
-			headers.set("Tenant-Id", pwdFreeTenantId);
-			//璁剧疆璇锋眰浣撳弬鏁�
-			MultiValueMap<String,String> parameters = new LinkedMultiValueMap<String,String>();
-			parameters.add("username",userName);
-			parameters.add("grant_type", "passwordfree");
-			parameters.add("scope", "all");
-			parameters.add("type", "account");
-			String responseBody = null;
-			try {
-				// 鍙戦�丳OST璇锋眰
-				responseBody = HttpUtils.post(loginUrl, parameters,headers);
-			}catch (Exception e){
-				throw new AuthenticationException("璋冪敤閴存潈鏈嶅姟ubcs-auth澶辫触锛屽師鍥狅細"+e.getMessage());
-			}
+		if(Func.isEmpty(authToken) || Func.isEmpty(user) || !user.getTenantId().equals(NacosConfigCache.getAdminUserInfo().getTenantId())){
+			String responseBody = this.passwordFreeLogin(userName);
 			//鎷垮埌鍝嶅簲浣撳叾涓寘鍚玹oken,鐢╮equest涓殑ip鍦板潃浣滀负閿�硷紝灏唗oken瀛樺叆缂撳瓨
 			TokenUserObject tokenUserObject = null;
 			try {
@@ -129,9 +124,66 @@
 			token2 = JwtUtil.getToken(authToken);
 			user = this.getUser(token2);
 		}
-		//request.setAttribute("Blade-Auth",token);
+		request.setAttribute("Blade-Auth",authToken);
 		request.setAttribute("_BLADE_USER_REQUEST_ATTR_",user);
+		request.setAttribute("Authorization",authToken);
 		return true;
+	}
+
+	/**
+	 * 鍏嶅瘑鐧诲綍璇锋眰鍙戦��
+	 * @param userName 璐﹀彿
+	 * @return 杩斿洖token
+	 * @throws AuthenticationException
+	 */
+	@Override
+	public String passwordFreeLogin(String userName) throws AuthenticationException {
+		// 鍏嶅瘑鐧诲綍鎺ュ彛鍦板潃
+		String loginUrl = "http://"+pwdFreeAddr+":"+this.getGatewayPort("ubcs-gateway")+"/ubcs-auth/oauth/token";
+		log.debug("褰撳墠鍏嶅瘑鐧诲綍璋冪敤鍦板潃锛�"+loginUrl);
+		// 璇锋眰ubcs-auth鏈嶅姟鑾峰彇token锛屽厛璁剧疆璇锋眰澶�
+		HttpHeaders headers = new HttpHeaders();
+		headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED);
+		headers.set("Authorization", "Basic c3dvcmQ6c3dvcmRfc2VjcmV0");
+		headers.set("Tenant-Id", pwdFreeTenantId);
+		//璁剧疆璇锋眰浣撳弬鏁�
+		MultiValueMap<String,String> parameters = new LinkedMultiValueMap<String,String>();
+		parameters.add("username",userName);
+		parameters.add("grant_type", "passwordfree");
+		parameters.add("scope", "all");
+		parameters.add("type", "account");
+		String responseBody = null;
+		try {
+			// 鍙戦�丳OST璇锋眰
+			responseBody = HttpUtils.post(loginUrl, parameters,headers);
+		}catch (Exception e){
+			throw new AuthenticationException("璋冪敤閴存潈鏈嶅姟ubcs-auth澶辫触锛屽師鍥狅細"+e.getMessage());
+		}
+		return responseBody;
+	}
+
+	/**
+	 * 鍗曠偣鐧诲綍
+	 * @param empCode
+	 * @return
+	 * @throws Exception
+	 */
+	@Override
+	public String ssoFreeLogin(String empCode) throws Exception {
+		if(Func.isBlank(empCode)){
+			throw new ServiceException("鏈幏鍙栧埌empCode鍙傛暟");
+		}
+		String enStr2;
+		try {
+			String enStr1 = aesDecrypt(empCode, secretKey);
+			enStr2 = aesDecrypt(enStr1, clientId);
+		}catch (Exception e){
+			throw new ServiceException("empCode鍙傛暟瑙e瘑澶辫触锛佸師鍥�:"+e.getMessage());
+		}
+		// 瑙e瘑
+		log.debug("鍗曠偣鐧诲綍鍙傛暟瑙e瘑鍚庯細"+enStr2);
+		String token = this.passwordFreeLogin(enStr2);
+		return token;
 	}
 
 	/**
@@ -215,6 +267,5 @@
 
 		return jwtProperties;
 	}
-
 
 }

--
Gitblit v1.9.3