|
|
@@ -0,0 +1,186 @@
|
|
|
+package com.psi.gabontel.mobileapp.thirdparty.helper;
|
|
|
+
|
|
|
+import java.text.ParseException;
|
|
|
+import java.text.SimpleDateFormat;
|
|
|
+import java.util.Date;
|
|
|
+
|
|
|
+import org.jboss.logging.Logger;
|
|
|
+
|
|
|
+import com.psi.common.crypto.PasswordGenerator;
|
|
|
+import com.psi.common.db.DataRow;
|
|
|
+import com.psi.common.transactions.SystemInfo;
|
|
|
+import com.psi.common.util.StringUtil;
|
|
|
+
|
|
|
+public class OTPHandler
|
|
|
+{
|
|
|
+
|
|
|
+ private static final Logger log = Logger.getLogger(OTPHandler.class);
|
|
|
+ private String msisdn;
|
|
|
+ private String otp;
|
|
|
+
|
|
|
+ private boolean success = false;
|
|
|
+ private boolean valid = false;
|
|
|
+
|
|
|
+
|
|
|
+ public OTPHandler() {
|
|
|
+ }
|
|
|
+
|
|
|
+ public OTPHandler(String msisdn){
|
|
|
+ setMsisdn(msisdn);
|
|
|
+ }
|
|
|
+
|
|
|
+ public OTPHandler(String msisdn, String otp){
|
|
|
+ setMsisdn(msisdn);
|
|
|
+ setOtp(otp);
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ public boolean isExpired(){
|
|
|
+ try
|
|
|
+ {
|
|
|
+ DataRow dr = SystemInfo.getDb().QueryDataRow("SELECT TO_CHAR(SYSDATE,'MM-DD-YYYY HH24:MI:SS') NOW, TO_CHAR(NVL(EXPIRATION,SYSDATE-1),'MM-DD-YYYY HH24:MI:SS') EXPIRATION FROM TBLREGISTRATIONOTP WHERE MSISDN = ? AND OTP=?", new Object[] { getMsisdn(), getOtp()});
|
|
|
+
|
|
|
+ String now = dr.getString("NOW");
|
|
|
+ String expirydate = dr.getString("EXPIRATION");
|
|
|
+
|
|
|
+ log.trace("CHECKING IF EXPIRED : "+getMsisdn() +" : "+getOtp());
|
|
|
+ log.trace("SYSDATE : "+now);
|
|
|
+ log.trace("EXPIRYDATE : "+expirydate);
|
|
|
+
|
|
|
+
|
|
|
+ if (StringUtil.isNullOrEmpty(expirydate)) {
|
|
|
+ return true;
|
|
|
+ }
|
|
|
+
|
|
|
+ SimpleDateFormat sdf = new SimpleDateFormat("MM-dd-yyyy HH:mm:ss");
|
|
|
+ Date _now = sdf.parse(now);
|
|
|
+ Date _expirydate = sdf.parse(expirydate);
|
|
|
+
|
|
|
+ log.trace("SYSDATE after parsing : "+_now);
|
|
|
+ log.trace("EXPIRYDATE after parsing :"+_expirydate);
|
|
|
+
|
|
|
+
|
|
|
+ if (_now.after(_expirydate)) {
|
|
|
+ return true;
|
|
|
+ }
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ catch (ParseException e)
|
|
|
+ {
|
|
|
+ log.trace("Date parsing error ~ " + e.getStackTrace());
|
|
|
+ }
|
|
|
+ return true;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ public void generateOTP(int status , String remarks)
|
|
|
+ {
|
|
|
+ int count = ((Integer)SystemInfo.getDb().QueryScalar("SELECT COUNT(1) FROM TBLREGISTRATIONOTP WHERE MSISDN = ?", Integer.valueOf(-1), new Object[] { getMsisdn() })).intValue();
|
|
|
+ String otp = generateOTP();
|
|
|
+ setOtp(otp);
|
|
|
+ if (count > 0)
|
|
|
+ {
|
|
|
+ if (SystemInfo.getDb().QueryUpdate("UPDATE TBLREGISTRATIONOTP SET OTP = ?,STATUS = ?, REMARKS = ?, EXPIRATION = SYSDATE + ?/(60*24) WHERE MSISDN = ?", new Object[] { otp,status,remarks, 30, getMsisdn() }) > 0) {
|
|
|
+ setSuccess(true);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else if (SystemInfo.getDb().QueryUpdate("INSERT INTO TBLREGISTRATIONOTP(MSISDN,OTP,EXPIRATION,REMARKS,STATUS) VALUES(?,?,SYSDATE + ?/(60*24),?,?)", new Object[] { getMsisdn(), otp, 30,remarks,status }) > 0) {
|
|
|
+ setSuccess(true);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ //active
|
|
|
+ public void generateOTP(int status , String remarks, String token, String version)
|
|
|
+ {
|
|
|
+ int count = ((Integer)SystemInfo.getDb().QueryScalar("SELECT COUNT(1) FROM TBLREGISTRATIONOTP WHERE MSISDN = ?", Integer.valueOf(-1), new Object[] { getMsisdn() })).intValue();
|
|
|
+ String otp = generateOTP();
|
|
|
+ setOtp(otp);
|
|
|
+ if (count > 0)
|
|
|
+ {
|
|
|
+ if (SystemInfo.getDb().QueryUpdate("UPDATE TBLREGISTRATIONOTP SET OTP = ?,STATUS = ?, REMARKS = ?, EXPIRATION = SYSDATE + ?/(60*24), TOKEN=?, VERSION=? WHERE MSISDN = ?", new Object[] { otp,status,remarks, SystemInfo.getProperty("MOBILEOTP", Integer.valueOf(5)),token,version , getMsisdn()}) > 0) {
|
|
|
+ setSuccess(true);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else if (SystemInfo.getDb().QueryUpdate("INSERT INTO TBLREGISTRATIONOTP(MSISDN,OTP,EXPIRATION,REMARKS,STATUS,TOKEN,VERSION) VALUES(?,?,SYSDATE + ?/(60*24),?,?,?,?)", new Object[] { getMsisdn(), otp, SystemInfo.getProperty("MOBILEOTP", Integer.valueOf(5)),remarks,status,token,version }) > 0) {
|
|
|
+ setSuccess(true);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ public void validateOTP()
|
|
|
+ {
|
|
|
+ int count = ((Integer)SystemInfo.getDb().QueryScalar("SELECT COUNT(1) FROM TBLREGISTRATIONOTP WHERE MSISDN = ? AND OTP = ?", Integer.valueOf(-1), new Object[] { getMsisdn(), getOtp() })).intValue();
|
|
|
+ if (count > 0) {
|
|
|
+ setValid(true);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ private String generateOTP()
|
|
|
+ {
|
|
|
+ return PasswordGenerator.generatePassword(6, 4);
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ public boolean updateOTPStatus(int status, String remarks){
|
|
|
+
|
|
|
+ if(SystemInfo.getDb().QueryUpdate("UPDATE TBLREGISTRATIONOTP SET STATUS = ?, REMARKS = ? WHERE MSISDN=?", new Object[] {
|
|
|
+ Integer.valueOf(status),
|
|
|
+ remarks,
|
|
|
+ getMsisdn()
|
|
|
+ })>0){
|
|
|
+ return true;
|
|
|
+
|
|
|
+ }else{
|
|
|
+ //CustomLogger.LogServer("UPDATE FAILED on TBLOTP "+status+"~"+pushreference);
|
|
|
+ log.error("UPDATE FAILED on TBLREGISTRATIONOTP for : "+getMsisdn());
|
|
|
+ }
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ public String getMsisdn()
|
|
|
+ {
|
|
|
+ return this.msisdn;
|
|
|
+ }
|
|
|
+
|
|
|
+ public void setMsisdn(String msisdn)
|
|
|
+ {
|
|
|
+ this.msisdn = msisdn;
|
|
|
+ }
|
|
|
+
|
|
|
+ public String getOtp()
|
|
|
+ {
|
|
|
+ return this.otp;
|
|
|
+ }
|
|
|
+
|
|
|
+ public void setOtp(String otp)
|
|
|
+ {
|
|
|
+ this.otp = otp;
|
|
|
+ }
|
|
|
+
|
|
|
+ public boolean isSuccess()
|
|
|
+ {
|
|
|
+ return this.success;
|
|
|
+ }
|
|
|
+
|
|
|
+ public void setSuccess(boolean success)
|
|
|
+ {
|
|
|
+ this.success = success;
|
|
|
+ }
|
|
|
+
|
|
|
+ public boolean isValid()
|
|
|
+ {
|
|
|
+ return this.valid;
|
|
|
+ }
|
|
|
+
|
|
|
+ public void setValid(boolean valid)
|
|
|
+ {
|
|
|
+ this.valid = valid;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+}
|