| | |
| | | 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.OtpWebService; |
| | | import com.pollex.pam.service.dto.OtpResponseDTO; |
| | | import com.pollex.pam.web.rest.vm.OtpAccount; |
| | | import com.pollex.pam.web.rest.vm.OtpEmailLoginVM; |
| | | import com.pollex.pam.web.rest.vm.OtpSMSLoginVM; |
| | | import com.pollex.pam.web.rest.vm.VerifyOtpVM; |
| | | import com.pollex.pam.web.rest.vm.*; |
| | | import org.slf4j.Logger; |
| | | import org.slf4j.LoggerFactory; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | |
| | | import org.springframework.web.bind.annotation.*; |
| | | |
| | | import javax.xml.rpc.ServiceException; |
| | | import java.nio.charset.Charset; |
| | | import java.nio.charset.StandardCharsets; |
| | | import java.rmi.RemoteException; |
| | | import java.util.Arrays; |
| | | import java.util.Random; |
| | | import java.util.UUID; |
| | | |
| | | import static java.nio.charset.StandardCharsets.UTF_8; |
| | | |
| | | @RestController |
| | | @RequestMapping("/api/otp") |
| | |
| | | @Autowired |
| | | TokenProvider tokenProvider; |
| | | |
| | | @PostMapping("/byPhone") |
| | | public ResponseEntity<Object> sendOtpByPhone(@RequestBody OtpSMSLoginVM login) { |
| | | try { |
| | | if(applicationProperty.isMockLogin()) { |
| | | return new ResponseEntity<>(getMockOtpResponse(), HttpStatus.OK); |
| | | } |
| | | |
| | | OtpResponseDTO otpResponseDTO = otpWebService.sendByPhone(login.getPhone()); |
| | | return new ResponseEntity<>(otpResponseDTO, HttpStatus.OK); |
| | | } catch (ServiceException | RemoteException e) { |
| | | return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body("connecting otp web service error"); |
| | | @PostMapping("/sendOtp") |
| | | public ResponseEntity<Object> sendOtp(@RequestBody OtpLoginVM login) { |
| | | if(applicationProperty.isMockLogin()) { |
| | | return new ResponseEntity<>(getMockSendOtpResponse(), HttpStatus.OK); |
| | | } |
| | | } |
| | | |
| | | @PostMapping("/byEmail") |
| | | public ResponseEntity<Object> sendOtpByEmail(@RequestBody OtpEmailLoginVM login) { |
| | | try { |
| | | if(applicationProperty.isMockLogin()) { |
| | | return new ResponseEntity<>(getMockOtpResponse(), HttpStatus.OK); |
| | | } |
| | | |
| | | OtpResponseDTO otpResponseDTO = otpWebService.sendByEmail(login.getEmail()); |
| | | return new ResponseEntity<>(otpResponseDTO, HttpStatus.OK); |
| | | } catch (ServiceException | RemoteException e) { |
| | | return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body("connecting otp web service error"); |
| | | 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()); |
| | | } |
| | | |
| | | @PostMapping("/verify") |
| | |
| | | return new ResponseEntity<>(new UserJWTController.JWTToken(jwt), httpHeaders, HttpStatus.OK); |
| | | } |
| | | |
| | | private OtpResponseDTO getMockOtpResponse() { |
| | | 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", "", "")); |
| | | } |
| | | } |