package com.pollex.pam.service; import com.pollex.pam.business.domain.OtpTmp; import com.pollex.pam.business.enums.OtpTmpStatusEnum; import com.pollex.pam.business.service.OtpTmpService; import com.pollex.pam.business.web.errors.OtpLoginFailException; import com.pollex.pam.business.web.vm.VerifyOtpVM; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.pollex.pam.config.ApplicationProperties; import com.pollex.pam.business.service.dto.OtpResponseDTO; import org.springframework.transaction.annotation.Transactional; @Service public class OtpUtilService { private static final Logger log = LoggerFactory.getLogger(OtpUtilService.class); @Autowired ApplicationProperties applicationProperty; @Autowired OtpWebService otpWebService; @Autowired OtpTmpService otpTmpService; @Transactional public void verifyOtp(VerifyOtpVM verifyOtpParam) { verifyOtp(verifyOtpParam.getAccount(), verifyOtpParam.getIndexKey(), verifyOtpParam.getOtpCode()); } @Transactional public void verifyOtp(String account, String indexKey, String otpCode) { if (applicationProperty.isMockLogin()) { log.debug("Do MockLogin"); } else { // otp logon OtpResponseDTO otpResponseDTO = otpWebService.verifyOTP(indexKey, otpCode); if (otpResponseDTO.isSuccess()) { log.info("otp login success!, account = {}", account); } else { log.info("otp login fail... , account = {}, error code = {}, failReason = {}", account, otpResponseDTO.getFailCode(), otpResponseDTO.getFailReason()); throw new OtpLoginFailException(otpResponseDTO.getFailCode()); } } setVerrifiedOtpTmp(account, indexKey); } private void setVerrifiedOtpTmp(String account, String indexKey) { OtpTmp otpTmp = otpTmpService.findByAccountAndIndexKey(account, indexKey); otpTmp.setStatus(OtpTmpStatusEnum.VERRIFIED); otpTmpService.save(otpTmp); } }