From bdcaac32492b5e6223fef4304f4d86403e877022 Mon Sep 17 00:00:00 2001
From: Jack <jack.su@pollex.com.tw>
Date: 星期五, 26 十一月 2021 18:33:11 +0800
Subject: [PATCH] [UPDATE] 調整註冊和OTP登入的流程

---
 pamapi/src/main/java/com/pollex/pam/web/rest/OtpResource.java |   64 +++++++++++++++++++++----------
 1 files changed, 43 insertions(+), 21 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 e8f5533..ec15bcb 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
@@ -1,17 +1,8 @@
 package com.pollex.pam.web.rest;
 
-import com.pollex.pam.config.ApplicationProperties;
-import com.pollex.pam.enums.OtpLoginTypeEnum;
-import com.pollex.pam.security.jwt.JWTFilter;
-import com.pollex.pam.security.jwt.TokenProvider;
-import com.pollex.pam.security.token.OtpAuthenticationToken;
-import com.pollex.pam.service.CustomerAuthService;
-import com.pollex.pam.service.CustomerService;
-import com.pollex.pam.service.OtpTmpService;
-import com.pollex.pam.service.OtpWebService;
-import com.pollex.pam.service.dto.CustomerRegisterDTO;
-import com.pollex.pam.service.dto.OtpResponseDTO;
-import com.pollex.pam.web.rest.vm.*;
+import java.util.Arrays;
+import java.util.UUID;
+
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -19,14 +10,26 @@
 import org.springframework.http.HttpStatus;
 import org.springframework.http.ResponseEntity;
 import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder;
-import org.springframework.security.core.Authentication;
-import org.springframework.security.core.context.SecurityContextHolder;
-import org.springframework.web.bind.annotation.*;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
 
-import javax.xml.rpc.ServiceException;
-import java.rmi.RemoteException;
-import java.util.Arrays;
-import java.util.UUID;
+import com.pollex.pam.config.ApplicationProperties;
+import com.pollex.pam.domain.Customer;
+import com.pollex.pam.enums.OtpLoginTypeEnum;
+import com.pollex.pam.repository.CustomerRepository;
+import com.pollex.pam.security.jwt.JWTFilter;
+import com.pollex.pam.security.jwt.TokenProvider;
+import com.pollex.pam.service.CustomerAuthService;
+import com.pollex.pam.service.CustomerService;
+import com.pollex.pam.service.OtpTmpService;
+import com.pollex.pam.service.OtpUtilService;
+import com.pollex.pam.service.OtpWebService;
+import com.pollex.pam.service.dto.CustomerRegisterDTO;
+import com.pollex.pam.service.dto.OtpResponseDTO;
+import com.pollex.pam.web.rest.vm.OtpLoginVM;
+import com.pollex.pam.web.rest.vm.VerifyOtpVM;
 
 @RestController
 @RequestMapping("/api/otp")
@@ -54,6 +57,12 @@
 
     @Autowired
     CustomerService customerService;
+    
+    @Autowired
+    OtpUtilService otpUtilService;
+    
+    @Autowired
+    CustomerRepository customerRepository;
 
     @PostMapping("/sendOtp")
     public ResponseEntity<Object> sendOtp(@RequestBody OtpLoginVM login) {
@@ -74,7 +83,17 @@
 
     @PostMapping("/verify")
     public ResponseEntity<UserJWTController.JWTToken> verifyOtp(@RequestBody VerifyOtpVM verifyOtpParam) {
-        String jwt = customerAuthService.authorize(verifyOtpParam.getAccount(), verifyOtpParam.getIndexKey(), verifyOtpParam.getOtpCode());
+    	otpUtilService.verifyOtp(verifyOtpParam.getIndexKey(), verifyOtpParam.getOtpCode());
+    	
+    	Customer customer = customerRepository
+    						.findOneByEmailEqualsOrPhoneEquals(verifyOtpParam.getAccount())
+    						.orElse(null);
+    	
+    	if (customer == null) {
+    		return ResponseEntity.status(HttpStatus.UNAUTHORIZED).build();
+    	}
+    	
+    	String jwt = customerAuthService.authorize(customer, verifyOtpParam.getIndexKey(), verifyOtpParam.getOtpCode());
         HttpHeaders httpHeaders = new HttpHeaders();
         httpHeaders.add(JWTFilter.AUTHORIZATION_HEADER, "Bearer" + jwt);
         return new ResponseEntity<>(new UserJWTController.JWTToken(jwt), httpHeaders, HttpStatus.OK);
@@ -87,9 +106,12 @@
 
     @PostMapping("/register")
     public ResponseEntity<UserJWTController.JWTToken> registerAccount(@RequestBody CustomerRegisterDTO registDTO) {
-    	String jwt = customerService.registerCustomer(registDTO);
+    	Customer account = customerService.registerCustomer(registDTO);
+    	String jwt = customerAuthService.authorize(account, registDTO.getIndexKey(), registDTO.getOtpCode());
     	HttpHeaders httpHeaders = new HttpHeaders();
         httpHeaders.add(JWTFilter.AUTHORIZATION_HEADER, "Bearer" + jwt);
         return new ResponseEntity<>(new UserJWTController.JWTToken(jwt), httpHeaders, HttpStatus.OK);
     }
+    
+    
 }

--
Gitblit v1.8.0