From 653566dd3199a36fcff30ea9b9f31087e59ce3ed Mon Sep 17 00:00:00 2001 From: Jack <jack.su@pollex.com.tw> Date: 星期四, 25 十一月 2021 21:32:39 +0800 Subject: [PATCH] [UPDATE] 新增重複帳號註冊的檢核,直接拋出500的錯誤訊息 [UPDATE] 調整dev設定檔(auto-commit=false),解決mvnw jdbc連線失敗的問題 --- pamapi/src/main/java/com/pollex/pam/web/rest/OtpResource.java | 61 ++++++++++++++++++------------ 1 files changed, 36 insertions(+), 25 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 6308dac..e8f5533 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 @@ -5,7 +5,11 @@ 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 org.slf4j.Logger; @@ -21,6 +25,7 @@ import javax.xml.rpc.ServiceException; import java.rmi.RemoteException; +import java.util.Arrays; import java.util.UUID; @RestController @@ -41,37 +46,35 @@ @Autowired TokenProvider tokenProvider; + @Autowired + CustomerAuthService customerAuthService; + + @Autowired + OtpTmpService otpTmpService; + + @Autowired + CustomerService customerService; + @PostMapping("/sendOtp") public ResponseEntity<Object> sendOtp(@RequestBody OtpLoginVM login) { - try { - if(applicationProperty.isMockLogin()) { - return new ResponseEntity<>(getMockSendOtpResponse(), HttpStatus.OK); - } - - if(login.getLoginType() == OtpLoginTypeEnum.SMS) { - return new ResponseEntity<>(otpWebService.sendByPhone(login.getAccount()), HttpStatus.OK); - } - else if(login.getLoginType() == OtpLoginTypeEnum.EMAIL) { - return new ResponseEntity<>(otpWebService.sendByEmail(login.getAccount()), HttpStatus.OK); - } - - return ResponseEntity.status(HttpStatus.BAD_REQUEST).body("can not support this login type, loginType = " + login.getLoginType().name()); - } catch (ServiceException | RemoteException e) { - return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body("connecting otp web service error"); + OtpResponseDTO otpResponse; + if(applicationProperty.isMockLogin()) { + otpResponse = getMockSendOtpResponse(); + }else if(login.getLoginType() == OtpLoginTypeEnum.SMS) { + otpResponse = otpWebService.sendByPhone(login.getAccount()); } + else if(login.getLoginType() == OtpLoginTypeEnum.EMAIL) { + otpResponse = otpWebService.sendByEmail(login.getAccount()); + }else { + 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); } @PostMapping("/verify") public ResponseEntity<UserJWTController.JWTToken> verifyOtp(@RequestBody VerifyOtpVM verifyOtpParam) { - OtpAccount otpAccount = new OtpAccount(verifyOtpParam.getAccount(), verifyOtpParam.getIndexKey()); - OtpAuthenticationToken authenticationToken = new OtpAuthenticationToken( - otpAccount, - verifyOtpParam.getOtpCode() - ); - - Authentication authentication = authenticationManagerBuilder.getObject().authenticate(authenticationToken); - SecurityContextHolder.getContext().setAuthentication(authenticationToken); - String jwt = tokenProvider.createToken(authentication, false); + String jwt = customerAuthService.authorize(verifyOtpParam.getAccount(), 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); @@ -79,6 +82,14 @@ private OtpResponseDTO getMockSendOtpResponse() { String indexKey = UUID.randomUUID().toString().substring(0, 8); - return new OtpResponseDTO(new String[]{indexKey, "0", "", ""}); + return new OtpResponseDTO(Arrays.asList(indexKey, "0", "", "")); + } + + @PostMapping("/register") + public ResponseEntity<UserJWTController.JWTToken> registerAccount(@RequestBody CustomerRegisterDTO registDTO) { + String jwt = customerService.registerCustomer(registDTO); + 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