package com.pollex.pam.service;
|
|
import com.pollex.pam.config.ApplicationProperties;
|
import com.pollex.pam.business.service.dto.OtpResponseDTO;
|
import org.slf4j.Logger;
|
import org.slf4j.LoggerFactory;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.stereotype.Service;
|
import tw.com.softleader.otp.ws.OtpWeb;
|
import tw.com.softleader.otp.ws.StringArray;
|
|
import java.net.MalformedURLException;
|
import java.net.URL;
|
|
@Service
|
public class OtpWebService {
|
|
private static final Logger log = LoggerFactory.getLogger(OtpWebService.class);
|
|
@Autowired
|
ApplicationProperties applicationProperty;
|
|
public OtpResponseDTO sendByPhone(String phone) {
|
OtpWeb otpWS = getOtpWebService();
|
log.debug("call OtpService sendOtpBySMS, url = {}, systemType = {}, service password = {}, phone = {}",
|
applicationProperty.getOtpWebServiceUrl(), applicationProperty.getOtpWebServiceSystemType(), applicationProperty.getOtpWebServicePassword(), phone);
|
|
StringArray result =
|
otpWS.sendOtpBySMS(applicationProperty.getOtpWebServicePassword(), applicationProperty.getOtpWebServiceSystemType(), phone);
|
|
return new OtpResponseDTO(result.getItem());
|
}
|
|
public OtpResponseDTO sendByEmail(String email) {
|
OtpWeb otpWS = getOtpWebService();
|
// log.debug("call OtpService sendByEmail, url = {}, systemType = {}, service password = {}, email = {}",
|
// applicationProperty.getOtpWebServiceUrl(), applicationProperty.getOtpWebServiceSystemType(), applicationProperty.getOtpWebServicePassword(), email);
|
|
StringArray result =
|
otpWS.sendOtpByEmail(applicationProperty.getOtpWebServicePassword(), applicationProperty.getOtpWebServiceSystemType(), email);
|
|
return new OtpResponseDTO(result.getItem());
|
}
|
|
public OtpResponseDTO verifyOTP(String indexKey, String otpCode) {
|
OtpWeb otpWS = getOtpWebService();
|
log.debug("call OtpService verifyOTP, url = {}, systemType = {}, service password = {}, indexKey = {}, otpCode = {}",
|
applicationProperty.getOtpWebServiceUrl(), applicationProperty.getOtpWebServiceSystemType(), applicationProperty.getOtpWebServicePassword(), indexKey, otpCode);
|
|
StringArray result =
|
otpWS.verifyOtp(applicationProperty.getOtpWebServicePassword(), applicationProperty.getOtpWebServiceSystemType(), indexKey, otpCode);
|
|
return new OtpResponseDTO(result.getItem());
|
}
|
|
public OtpWeb getOtpWebService() {
|
final String wsUrl = applicationProperty.getOtpWebServiceUrl();
|
try {
|
tw.com.softleader.otp.ws.OtpWebService locator
|
= new tw.com.softleader.otp.ws.OtpWebService(new URL(wsUrl));
|
return locator.getOtpWebPort();
|
} catch (MalformedURLException e) {
|
throw new IllegalArgumentException("Invalid url: " + wsUrl, e);
|
}
|
}
|
}
|