|
|
@ -8,11 +8,15 @@ import com.gmeremit.online.gmeremittance_native.customwidgets.CustomAlertDialog; |
|
|
|
import com.gmeremit.online.gmeremittance_native.utils.Constants; |
|
|
|
import com.gmeremit.online.gmeremittance_native.utils.Utils; |
|
|
|
import com.gmeremit.online.gmeremittance_native.utils.https.GenericApiObserverResponse; |
|
|
|
import com.gmeremit.online.gmeremittance_native.utils.security.SecurityUtils; |
|
|
|
import com.mtramin.rxfingerprint.data.FingerprintEncryptionResult; |
|
|
|
|
|
|
|
import io.reactivex.Observable; |
|
|
|
import io.reactivex.android.schedulers.AndroidSchedulers; |
|
|
|
import io.reactivex.observers.DisposableObserver; |
|
|
|
import io.reactivex.schedulers.Schedulers; |
|
|
|
|
|
|
|
public class ChangePasswordV2Presenter extends BasePresenter implements ChangePasswordV2InteractorInterface,ChangePasswordV2PresenterInterface { |
|
|
|
public class ChangePasswordV2Presenter extends BasePresenter implements ChangePasswordV2InteractorInterface, ChangePasswordV2PresenterInterface { |
|
|
|
|
|
|
|
private final ChangePasswordV2PresenterInterface.ChangePasswordV2ContractInterface view; |
|
|
|
private final ChangePasswordV2Gateway gateway; |
|
|
@ -22,174 +26,229 @@ public class ChangePasswordV2Presenter extends BasePresenter implements ChangePa |
|
|
|
private String encConfirmPassword; |
|
|
|
|
|
|
|
public ChangePasswordV2Presenter(ChangePasswordV2PresenterInterface.ChangePasswordV2ContractInterface view) { |
|
|
|
this.view=view; |
|
|
|
this.gateway=new ChangePasswordV2Gateway(this); |
|
|
|
this.view = view; |
|
|
|
this.gateway = new ChangePasswordV2Gateway(this); |
|
|
|
|
|
|
|
this.encCurrentPassword=""; |
|
|
|
this.encNewPassword=""; |
|
|
|
this.encConfirmPassword=""; |
|
|
|
this.encCurrentPassword = ""; |
|
|
|
this.encNewPassword = ""; |
|
|
|
this.encConfirmPassword = ""; |
|
|
|
} |
|
|
|
|
|
|
|
@Deprecated |
|
|
|
@Override |
|
|
|
public boolean validateData(String currentPass, String newPwd, String pwdConfrimString) { |
|
|
|
boolean currentPwdValidation=true; |
|
|
|
boolean confirmPwdValidation=true; |
|
|
|
boolean newPwdValidation=true; |
|
|
|
boolean currentPwdValidation = true; |
|
|
|
boolean confirmPwdValidation = true; |
|
|
|
boolean newPwdValidation = true; |
|
|
|
|
|
|
|
if(currentPass.trim().length()<1) |
|
|
|
{ |
|
|
|
if (currentPass.trim().length() < 1) { |
|
|
|
this.view.setCurrentPasswordError(getStringfromStringId(R.string.password_empty_error)); |
|
|
|
currentPwdValidation= false; |
|
|
|
currentPwdValidation = false; |
|
|
|
} |
|
|
|
|
|
|
|
if (!Utils.hasSpecialCharacters(newPwd)) { |
|
|
|
this.view.setNewPasswordError(getStringfromStringId(R.string.password_symbol_required_error)); |
|
|
|
newPwdValidation= false; |
|
|
|
newPwdValidation = false; |
|
|
|
} |
|
|
|
if (!Utils.hasNumbers(newPwd)) { |
|
|
|
this.view.setNewPasswordError(getStringfromStringId(R.string.password_number_required_error)); |
|
|
|
newPwdValidation= false; |
|
|
|
newPwdValidation = false; |
|
|
|
} |
|
|
|
if (newPwd.length()>1&&newPwd.length()<9) { |
|
|
|
if (newPwd.length() > 1 && newPwd.length() < 9) { |
|
|
|
this.view.setNewPasswordError(getStringfromStringId(R.string.password_length_error)); |
|
|
|
newPwdValidation= false; |
|
|
|
newPwdValidation = false; |
|
|
|
} |
|
|
|
if (!Utils.hasAtleastOnCapitalLetter(newPwd)) { |
|
|
|
this.view.setNewPasswordError(getStringfromStringId(R.string.password_capital_letter_required_error)); |
|
|
|
newPwdValidation= false; |
|
|
|
newPwdValidation = false; |
|
|
|
} |
|
|
|
if(newPwd.trim().length()<1) |
|
|
|
{ |
|
|
|
if (newPwd.trim().length() < 1) { |
|
|
|
this.view.setNewPasswordError(getStringfromStringId(R.string.password_empty_error)); |
|
|
|
newPwdValidation= false; |
|
|
|
newPwdValidation = false; |
|
|
|
} |
|
|
|
|
|
|
|
if (!newPwd.equals(pwdConfrimString)) { |
|
|
|
this.view.setConfirmPasswordError(getStringfromStringId(R.string.confirm_password_mismatch_error)); |
|
|
|
confirmPwdValidation= false; |
|
|
|
confirmPwdValidation = false; |
|
|
|
} |
|
|
|
if(pwdConfrimString==null||pwdConfrimString.trim().length()<1) |
|
|
|
{ |
|
|
|
if (pwdConfrimString == null || pwdConfrimString.trim().length() < 1) { |
|
|
|
this.view.setConfirmPasswordError(getStringfromStringId(R.string.confirm_passowrd_empty_error)); |
|
|
|
confirmPwdValidation= false; |
|
|
|
confirmPwdValidation = false; |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
if(currentPwdValidation) { |
|
|
|
if (currentPwdValidation) { |
|
|
|
view.setCurrentPasswordError(null); |
|
|
|
} |
|
|
|
if(confirmPwdValidation) |
|
|
|
{ |
|
|
|
if (confirmPwdValidation) { |
|
|
|
view.setConfirmPasswordError(null); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
if(newPwdValidation) |
|
|
|
{ |
|
|
|
if (newPwdValidation) { |
|
|
|
view.setNewPasswordError(null); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
return currentPwdValidation&&confirmPwdValidation&&newPwdValidation; |
|
|
|
return currentPwdValidation && confirmPwdValidation && newPwdValidation; |
|
|
|
} |
|
|
|
|
|
|
|
@Override |
|
|
|
public boolean validateAll() |
|
|
|
{ |
|
|
|
boolean currentPwdValidation=true; |
|
|
|
boolean confirmPwdValidation=true; |
|
|
|
boolean newPwdValidation=true; |
|
|
|
|
|
|
|
if(encCurrentPassword==null||encCurrentPassword.trim().length()<1) |
|
|
|
{ |
|
|
|
public boolean validateAll() { |
|
|
|
boolean currentPwdValidation = true; |
|
|
|
boolean confirmPwdValidation = true; |
|
|
|
boolean newPwdValidation = true; |
|
|
|
|
|
|
|
if (encCurrentPassword == null || encCurrentPassword.trim().length() < 1) { |
|
|
|
this.view.setCurrentPasswordError(getStringfromStringId(R.string.password_empty_error)); |
|
|
|
currentPwdValidation= false; |
|
|
|
currentPwdValidation = false; |
|
|
|
} |
|
|
|
|
|
|
|
if(encNewPassword==null||encNewPassword.trim().length()<1) |
|
|
|
{ |
|
|
|
if (encNewPassword == null || encNewPassword.trim().length() < 1) { |
|
|
|
this.view.setNewPasswordError(getStringfromStringId(R.string.password_empty_error)); |
|
|
|
newPwdValidation= false; |
|
|
|
newPwdValidation = false; |
|
|
|
} |
|
|
|
|
|
|
|
if(encConfirmPassword==null||encConfirmPassword.trim().length()<1) |
|
|
|
{ |
|
|
|
if (encConfirmPassword == null || encConfirmPassword.trim().length() < 1) { |
|
|
|
this.view.setConfirmPasswordError(getStringfromStringId(R.string.confirm_passowrd_empty_error)); |
|
|
|
confirmPwdValidation= false; |
|
|
|
confirmPwdValidation = false; |
|
|
|
} |
|
|
|
|
|
|
|
if(currentPwdValidation) { |
|
|
|
if (currentPwdValidation) { |
|
|
|
view.setCurrentPasswordError(null); |
|
|
|
} |
|
|
|
if(confirmPwdValidation) |
|
|
|
{ |
|
|
|
if (confirmPwdValidation) { |
|
|
|
view.setConfirmPasswordError(null); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
if(newPwdValidation) |
|
|
|
{ |
|
|
|
if (newPwdValidation) { |
|
|
|
view.setNewPasswordError(null); |
|
|
|
} |
|
|
|
|
|
|
|
return currentPwdValidation&&confirmPwdValidation&&newPwdValidation; |
|
|
|
return currentPwdValidation && confirmPwdValidation && newPwdValidation; |
|
|
|
} |
|
|
|
|
|
|
|
@Override |
|
|
|
public void changePassword(String currentPass, String newPass) { |
|
|
|
|
|
|
|
this.gateway.performChangePassRequest(this.gateway.getAuth(),this.gateway.getUserID(),this.encCurrentPassword,this.encNewPassword,this.encConfirmPassword) |
|
|
|
.doOnSubscribe(d->view.showProgressBar(true,getStringfromStringId(R.string.processing_request_text))) |
|
|
|
.doFinally(()->view.showProgressBar(false,"")) |
|
|
|
this.gateway.performChangePassRequest(this.gateway.getAuth(), this.gateway.getUserID(), this.encCurrentPassword, this.encNewPassword, this.encConfirmPassword) |
|
|
|
.doOnSubscribe(d -> view.showProgressBar(true, getStringfromStringId(R.string.processing_request_text))) |
|
|
|
.doFinally(() -> view.showProgressBar(false, "")) |
|
|
|
.subscribeOn(Schedulers.io()) |
|
|
|
.observeOn(AndroidSchedulers.mainThread()) |
|
|
|
.subscribe(new ChangePasswordObserver()); |
|
|
|
.subscribe(new ChangePasswordObserver(this.encNewPassword)); |
|
|
|
} |
|
|
|
|
|
|
|
@Override |
|
|
|
public void updateCurrentPassword(String encCurrentPassword) { |
|
|
|
this.encCurrentPassword=encCurrentPassword; |
|
|
|
this.encCurrentPassword = encCurrentPassword; |
|
|
|
} |
|
|
|
|
|
|
|
@Override |
|
|
|
public void updateNewPassword(String encNewPassword) { |
|
|
|
this.encNewPassword=encNewPassword; |
|
|
|
this.encNewPassword = encNewPassword; |
|
|
|
} |
|
|
|
|
|
|
|
@Override |
|
|
|
public void updateConfirmPassword(String encConfirmPassword) { |
|
|
|
this.encConfirmPassword=encConfirmPassword; |
|
|
|
this.encConfirmPassword = encConfirmPassword; |
|
|
|
} |
|
|
|
|
|
|
|
private void encryptPassword(String newPassword, String pwdChangeMessage) { |
|
|
|
Observable.zip(SecurityUtils.encryptSecret(view.getContext(), newPassword).subscribeOn(Schedulers.io()).onErrorReturn(error -> null), Observable.just(pwdChangeMessage), BiometricPwdParams::new) |
|
|
|
.observeOn(AndroidSchedulers.mainThread()) |
|
|
|
.subscribe(new BiometricEncrypterObserver()); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
public class ChangePasswordObserver extends GenericApiObserverResponse<ChangePasswordActivityV2APIResponse> |
|
|
|
{ |
|
|
|
public class ChangePasswordObserver extends GenericApiObserverResponse<ChangePasswordActivityV2APIResponse> { |
|
|
|
|
|
|
|
String newPassword; |
|
|
|
|
|
|
|
public ChangePasswordObserver(String encNewPassword) { |
|
|
|
this.newPassword = encNewPassword; |
|
|
|
} |
|
|
|
|
|
|
|
@Override |
|
|
|
protected void onSuccess(ChangePasswordActivityV2APIResponse changePasswordActivityV2APIResponse) { |
|
|
|
if(changePasswordActivityV2APIResponse.getErrorCode().equalsIgnoreCase(Constants.SUCCESS_CODE_V2)) |
|
|
|
{ |
|
|
|
view.showPopUpMessage(changePasswordActivityV2APIResponse.getMsg(), CustomAlertDialog.AlertType.SUCCESS,alertType -> view.exitView()); |
|
|
|
} |
|
|
|
else |
|
|
|
view.showPopUpMessage(changePasswordActivityV2APIResponse.getMsg(), CustomAlertDialog.AlertType.FAILED,null); |
|
|
|
if (changePasswordActivityV2APIResponse.getErrorCode().equalsIgnoreCase(Constants.SUCCESS_CODE_V2)) { |
|
|
|
if (SecurityUtils.doesAppHasBiometricFeature(view.getContext())) { |
|
|
|
encryptPassword(newPassword, changePasswordActivityV2APIResponse.getMsg()); |
|
|
|
} else { |
|
|
|
view.showPopUpMessage(changePasswordActivityV2APIResponse.getMsg(), CustomAlertDialog.AlertType.SUCCESS, alertType -> view.exitView()); |
|
|
|
} |
|
|
|
} else |
|
|
|
view.showPopUpMessage(changePasswordActivityV2APIResponse.getMsg(), CustomAlertDialog.AlertType.FAILED, null); |
|
|
|
} |
|
|
|
|
|
|
|
@Override |
|
|
|
public void onFailed(String message) { |
|
|
|
view.showPopUpMessage(message, CustomAlertDialog.AlertType.FAILED,null); |
|
|
|
view.showPopUpMessage(message, CustomAlertDialog.AlertType.FAILED, null); |
|
|
|
} |
|
|
|
|
|
|
|
@Override |
|
|
|
protected void onConnectionNotEstablished(String message) { |
|
|
|
view.showPopUpMessage(message, CustomAlertDialog.AlertType.NO_INTERNET,null); |
|
|
|
view.showPopUpMessage(message, CustomAlertDialog.AlertType.NO_INTERNET, null); |
|
|
|
} |
|
|
|
|
|
|
|
@Override |
|
|
|
protected void unauthorizedAccess(String message) { |
|
|
|
gateway.clearAllUserData(); |
|
|
|
view.showPopUpMessage(message, CustomAlertDialog.AlertType.ALERT,alertType -> view.logout()); |
|
|
|
view.showPopUpMessage(message, CustomAlertDialog.AlertType.ALERT, alertType -> view.logout()); |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
public class BiometricPwdParams { |
|
|
|
FingerprintEncryptionResult encPassword; |
|
|
|
String pwdChangeServerMessage; |
|
|
|
|
|
|
|
public BiometricPwdParams(FingerprintEncryptionResult encPassword, String pwdChangeServerMessage) { |
|
|
|
this.encPassword = encPassword; |
|
|
|
this.pwdChangeServerMessage = pwdChangeServerMessage; |
|
|
|
} |
|
|
|
|
|
|
|
public FingerprintEncryptionResult getEncPassword() { |
|
|
|
return encPassword; |
|
|
|
} |
|
|
|
|
|
|
|
public void setEncPassword(FingerprintEncryptionResult encPassword) { |
|
|
|
this.encPassword = encPassword; |
|
|
|
} |
|
|
|
|
|
|
|
public String getPwdChangeServerMessage() { |
|
|
|
return pwdChangeServerMessage; |
|
|
|
} |
|
|
|
|
|
|
|
public void setPwdChangeServerMessage(String pwdChangeServerMessage) { |
|
|
|
this.pwdChangeServerMessage = pwdChangeServerMessage; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
public class BiometricEncrypterObserver extends DisposableObserver<BiometricPwdParams> { |
|
|
|
|
|
|
|
@Override |
|
|
|
public void onNext(BiometricPwdParams data) { |
|
|
|
if (data.getEncPassword() == null) { |
|
|
|
gateway.persistUserPwd(null); |
|
|
|
gateway.turnOffFingerprintAuth(true); |
|
|
|
view.showPopUpMessage(data.getPwdChangeServerMessage(), CustomAlertDialog.AlertType.SUCCESS, alertType -> view.exitView()); |
|
|
|
} else { |
|
|
|
gateway.persistUserPwd(data.getEncPassword().getEncrypted()); |
|
|
|
view.showPopUpMessage(data.getPwdChangeServerMessage(), CustomAlertDialog.AlertType.SUCCESS, alertType -> view.exitView()); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
@Override |
|
|
|
public void onError(Throwable e) { |
|
|
|
gateway.persistUserPwd(null); |
|
|
|
gateway.turnOffFingerprintAuth(true); |
|
|
|
} |
|
|
|
|
|
|
|
@Override |
|
|
|
public void onComplete() { |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|