From ee0fadbfd9380ebaf516f43f85d909d9262ceb78 Mon Sep 17 00:00:00 2001 From: ivary43 Date: Wed, 4 Apr 2018 01:02:29 +0530 Subject: [PATCH] feat:added credentials verificaion layer --- .../ui/online/login/LoginActivity.java | 4 +- .../ui/online/login/LoginPresenter.java | 101 +++++++++++------- app/src/main/res/values/strings.xml | 3 + app/src/main/res/values/validation.xml | 6 ++ 4 files changed, 72 insertions(+), 42 deletions(-) create mode 100644 app/src/main/res/values/validation.xml diff --git a/app/src/main/java/org/apache/fineract/ui/online/login/LoginActivity.java b/app/src/main/java/org/apache/fineract/ui/online/login/LoginActivity.java index 9956991..ca6f20a 100644 --- a/app/src/main/java/org/apache/fineract/ui/online/login/LoginActivity.java +++ b/app/src/main/java/org/apache/fineract/ui/online/login/LoginActivity.java @@ -56,7 +56,7 @@ protected void onCreate(Bundle savedInstanceState) { void onLogin() { String tenantIdentifier = etTenant.getEditableText().toString(); - if (!TextUtils.isEmpty(tenantIdentifier)) { + if (!TextUtils.isEmpty(tenantIdentifier.trim())) { preferencesHelper.putTenantIdentifier(tenantIdentifier); } else { etTenant.setError(getString(R.string.error_tenant_identifier_required)); @@ -64,7 +64,7 @@ void onLogin() { } String username = etUsername.getEditableText().toString(); - if (TextUtils.isEmpty(username)) { + if (TextUtils.isEmpty(username.trim())) { etUsername.setError(getString(R.string.error_username_required)); return; } diff --git a/app/src/main/java/org/apache/fineract/ui/online/login/LoginPresenter.java b/app/src/main/java/org/apache/fineract/ui/online/login/LoginPresenter.java index 5e5de54..3188c28 100644 --- a/app/src/main/java/org/apache/fineract/ui/online/login/LoginPresenter.java +++ b/app/src/main/java/org/apache/fineract/ui/online/login/LoginPresenter.java @@ -3,6 +3,7 @@ import static org.apache.fineract.data.remote.BaseApiManager.retrofit; import android.content.Context; +import android.content.res.Resources; import android.util.Log; import org.apache.fineract.R; @@ -62,53 +63,73 @@ public void detachView() { @Override public void login(String username, String password) { checkViewAttached(); - getMvpView().showProgressDialog(); - compositeDisposable.add(dataManagerAuth.login(username, password) - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribeWith(new DisposableObserver() { - @Override - public void onNext(Authentication user) { - getMvpView().hideProgressDialog(); - getMvpView().showUserLoginSuccessfully(user); - } - - @Override - public void onError(Throwable throwable) { - getMvpView().hideProgressDialog(); - if (throwable instanceof NoConnectivityException) { - getMvpView().showNoInternetConnection(); + if (isCredentialsValid(username, password)) { + getMvpView().showProgressDialog(); + compositeDisposable.add(dataManagerAuth.login(username, password) + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribeWith(new DisposableObserver() { + @Override + public void onNext(Authentication user) { + getMvpView().hideProgressDialog(); + getMvpView().showUserLoginSuccessfully(user); } - MifosError mifosError = new MifosError(); - Converter errorConverter = - retrofit.responseBodyConverter(MifosError.class, new Annotation[0]); - if (throwable instanceof HttpException) { - HttpException httpException = (HttpException) throwable; - Response response = httpException.response(); - - if (response.errorBody() != null) { - try { - mifosError = errorConverter.convert(response.errorBody()); - } catch (IOException e) { - Log.d(LOG_TAG, e.getLocalizedMessage()); - } + @Override + public void onError(Throwable throwable) { + getMvpView().hideProgressDialog(); + if (throwable instanceof NoConnectivityException) { + getMvpView().showNoInternetConnection(); } - if (mifosError.getMessage() == null) { - getMvpView().showError( - context.getString(R.string.wrong_username_or_password)); - } else { - getMvpView().showError(mifosError.getMessage()); + MifosError mifosError = new MifosError(); + Converter errorConverter = + retrofit.responseBodyConverter(MifosError.class, + new Annotation[0]); + if (throwable instanceof HttpException) { + HttpException httpException = (HttpException) throwable; + Response response = httpException.response(); + + if (response.errorBody() != null) { + try { + mifosError = errorConverter.convert(response.errorBody()); + } catch (IOException e) { + Log.d(LOG_TAG, e.getLocalizedMessage()); + } + } + + if (mifosError.getMessage() == null) { + getMvpView().showError( + context.getString(R.string.wrong_username_or_password)); + } else { + getMvpView().showError(mifosError.getMessage()); + } } } - } - @Override - public void onComplete() { + @Override + public void onComplete() { + + } + }) + ); + } + } - } - }) - ); + private boolean isCredentialsValid(String username, String password) { + + final Resources resources = context.getResources(); + if (username.trim().contains(" ")) { + getMvpView().showError(context.getString(R.string.error_validation_cannot_contain_spaces + , username.trim(), context.getString(R.string.spaces) )); + return false; + } else if (password.length() < 6) { + getMvpView().showError(context.getString(R.string.error_validation_minimum_chars, + context.getString(R.string.password), resources + .getInteger(R.integer.password_minimum_length))); + return false; + } + + return true; } } diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 965f297..0959e51 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -67,6 +67,9 @@ Repay every %1$d %2$s on %3$s Repay every %1$d %2$s on the %3$s day in %4$s Repay every %1$d %2$s on the %3$s %4$s in %5$s + %1$s cannot be less than %2$d characters + %1$s cannot contain %2$s + Spaces Account Balance diff --git a/app/src/main/res/values/validation.xml b/app/src/main/res/values/validation.xml new file mode 100644 index 0000000..a1444bd --- /dev/null +++ b/app/src/main/res/values/validation.xml @@ -0,0 +1,6 @@ + + + + 6 + + \ No newline at end of file