From d33fc7f1df66c1e451c5d79ab59a5bc9dce4e496 Mon Sep 17 00:00:00 2001
From: Tomas <tomasysh@gmail.com>
Date: 星期四, 14 九月 2023 18:01:18 +0800
Subject: [PATCH] Update: http 攔截器,檢查 base url 的檢查 method

---
 pamapi/src/main/java/com/pollex/pam/web/rest/OtpResource.java |   31 ++++++++++++++++++++++++++++---
 1 files changed, 28 insertions(+), 3 deletions(-)

diff --git a/pamapi/src/main/java/com/pollex/pam/web/rest/OtpResource.java b/pamapi/src/main/java/com/pollex/pam/web/rest/OtpResource.java
index 3cad8c3..609f1f1 100644
--- a/pamapi/src/main/java/com/pollex/pam/web/rest/OtpResource.java
+++ b/pamapi/src/main/java/com/pollex/pam/web/rest/OtpResource.java
@@ -3,6 +3,9 @@
 import java.util.Arrays;
 import java.util.UUID;
 
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpSession;
+
 import com.pollex.pam.business.aop.logging.audit.AuditLoggingInject;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -11,6 +14,8 @@
 import org.springframework.http.HttpStatus;
 import org.springframework.http.ResponseEntity;
 import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder;
+import org.springframework.util.StringUtils;
+import org.springframework.web.bind.annotation.PathVariable;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
@@ -29,6 +34,7 @@
 import com.pollex.pam.service.OtpWebService;
 import com.pollex.pam.business.service.dto.CustomerRegisterDTO;
 import com.pollex.pam.business.service.dto.OtpResponseDTO;
+import com.pollex.pam.business.web.errors.OtpLoginFailException;
 import com.pollex.pam.business.web.vm.OtpLoginVM;
 import com.pollex.pam.business.web.vm.VerifyOtpVM;
 
@@ -67,8 +73,24 @@
     @Autowired
     CustomerRepository customerRepository;
 
-    @PostMapping("/sendOtp")
-    public ResponseEntity<Object> sendOtp(@RequestBody OtpLoginVM login) {
+    @PostMapping("/sendOtp/{imgCode}")
+    public ResponseEntity<Object> sendOtp(@RequestBody OtpLoginVM login
+    		, @PathVariable String imgCode, HttpServletRequest request) {
+    	
+    	HttpSession session = request.getSession();
+    	String sessionImpCode = (String) session.getAttribute("img_code");
+    	
+    	if (!StringUtils.hasText(sessionImpCode)
+				|| !StringUtils.hasText(imgCode)) {
+    		throw new OtpLoginFailException("撽�Ⅳ頛詨�隤�");
+		}
+    	
+    	if(!imgCode.equals(sessionImpCode)) {
+    		throw new OtpLoginFailException("撽�Ⅳ頛詨�隤�");
+    	}
+    	
+    	session.setAttribute("img_code", null);
+    	
     	OtpResponseDTO otpResponse;
         if(applicationProperty.isMockLogin()) {
             otpResponse = getMockSendOtpResponse();
@@ -81,12 +103,15 @@
             return ResponseEntity.status(HttpStatus.BAD_REQUEST).body("can not support this login type, loginType = " + login.getLoginType().name());
         }
         otpTmpService.createOtpTmp(login.getAccount(), otpResponse.getIndexKey());
+        
         return new ResponseEntity<>(otpResponse, HttpStatus.OK);
     }
 
     @AuditLoggingInject(type = CUSTOMER_LOGIN)
     @PostMapping("/verify")
-    public ResponseEntity<UserJWTController.JWTToken> verifyOtp(@RequestBody VerifyOtpVM verifyOtpParam) {
+    public ResponseEntity<UserJWTController.JWTToken> verifyOtp(@RequestBody VerifyOtpVM verifyOtpParam
+    		) {
+    	
     	otpUtilService.verifyOtp(verifyOtpParam);
 
     	Customer customer = customerRepository

--
Gitblit v1.8.0