package com.pollex.pam.service; import com.pollex.pam.domain.OtpTmp; import com.pollex.pam.enums.OtpTmpStatusEnum; import com.pollex.pam.web.rest.vm.VerifyOtpVM; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.security.authentication.AuthenticationCredentialsNotFoundException; import org.springframework.stereotype.Service; import com.pollex.pam.config.ApplicationProperties; import com.pollex.pam.security.provider.OtpAuthenticationProvider; import com.pollex.pam.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) { try { if(applicationProperty.isMockLogin()){ log.debug("Do MockLogin"); } else { // otp logon OtpResponseDTO otpResponseDTO = otpWebService.verifyOTP(indexKey, otpCode); if (!otpResponseDTO.isSuccess()) { throw new AuthenticationCredentialsNotFoundException(""); } } setVerrifiedOtpTmp(account, indexKey); } catch (Exception e) { log.error("Exception: ", e); throw new AuthenticationCredentialsNotFoundException(""); } } private void setVerrifiedOtpTmp(String account, String indexKey) { OtpTmp otpTmp = otpTmpService.findByAccountAndIndexKey(account, indexKey); otpTmp.setStatus(OtpTmpStatusEnum.VERRIFIED); otpTmpService.save(otpTmp); } }