| | |
| | | package com.pollex.pam.service; |
| | | |
| | | import java.util.Optional; |
| | | |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.security.core.userdetails.UsernameNotFoundException; |
| | | import org.springframework.stereotype.Service; |
| | |
| | | } |
| | | |
| | | public String registerCustomer(CustomerRegisterDTO registDTO) { |
| | | String account = registDTO.getContactType() == OtpLoginTypeEnum.EMAIL?registDTO.getEmail():registDTO.getPhone(); |
| | | OtpTmp otpTmp = otpTmpService.findByAccountAndIndexKey(account, registDTO.getIndexKey()); |
| | | if(otpTmp.getStatus() == OtpTmpStatusEnum.VERRIFIED) { |
| | | Customer customer = customerDTOMapper.toCustomer(registDTO); |
| | | save(customer); |
| | | String jwt = customerAuthService.authorize(account, registDTO.getIndexKey(), registDTO.getOtpCode()); |
| | | return jwt; |
| | | }else { |
| | | throw new UsernameNotFoundException("Otp record not found"); |
| | | } |
| | | boolean isCustomerExist = checkCustomerExist(registDTO); |
| | | if(isCustomerExist) { |
| | | throw new UsernameAlreadyUsedException(); |
| | | |
| | | }else { |
| | | String account = getCustomerAccount(registDTO); |
| | | |
| | | OtpTmp otpTmp = otpTmpService.findByAccountAndIndexKey(account, registDTO.getIndexKey()); |
| | | if(otpTmp.getStatus() == OtpTmpStatusEnum.VERRIFIED) { |
| | | Customer customer = customerDTOMapper.toCustomer(registDTO); |
| | | save(customer); |
| | | String jwt = customerAuthService.authorize(account, registDTO.getIndexKey(), registDTO.getOtpCode()); |
| | | return jwt; |
| | | }else { |
| | | throw new UsernameNotFoundException("Otp record not found"); |
| | | } |
| | | } |
| | | |
| | | } |
| | | |
| | | private String getCustomerAccount(CustomerRegisterDTO registDTO) { |
| | | return registDTO.getContactType() == OtpLoginTypeEnum.EMAIL?registDTO.getEmail():registDTO.getPhone(); |
| | | } |
| | | |
| | | private boolean checkCustomerExist(CustomerRegisterDTO registDTO) { |
| | | String account = getCustomerAccount(registDTO); |
| | | Optional<Customer> customer = customerRepository.findOneByEmailEqualsOrPhoneEquals(account, account); |
| | | return customer.isPresent(); |
| | | } |
| | | } |