diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index a91740c3..ab75ab4d 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -21,7 +21,9 @@ android:roundIcon="@mipmap/ic_launcher" android:supportsRtl="true" android:theme="@style/AppTheme" - tools:replace="android:allowBackup"> + tools:replace="android:allowBackup" + android:networkSecurityConfig="@xml/network_security_config" + > view.showProgressBar(true,"Logging in...")) // .doFinally(()->view.showProgressBar(false,"")) .subscribeOn(Schedulers.io()) diff --git a/app/src/main/java/com/gmeremit/online/gmeremittance_native/loginV2/presenter/LoginV2PresenterInterface.java b/app/src/main/java/com/gmeremit/online/gmeremittance_native/loginV2/presenter/LoginV2PresenterInterface.java index 5187ec22..cefeae88 100644 --- a/app/src/main/java/com/gmeremit/online/gmeremittance_native/loginV2/presenter/LoginV2PresenterInterface.java +++ b/app/src/main/java/com/gmeremit/online/gmeremittance_native/loginV2/presenter/LoginV2PresenterInterface.java @@ -19,6 +19,8 @@ public interface LoginV2PresenterInterface extends BasePresenterInterface { boolean validateUserId(String userId); boolean validatePassword(String s); + void updateUserPassword(String decryptedDataFromIntent); + interface LoginV2ContractInterface extends BaseContractInterface { void showInvalidUserId(String message); diff --git a/app/src/main/java/com/gmeremit/online/gmeremittance_native/loginV2/view/LoginV2Activity.java b/app/src/main/java/com/gmeremit/online/gmeremittance_native/loginV2/view/LoginV2Activity.java index 1a6705b3..6e6406b0 100644 --- a/app/src/main/java/com/gmeremit/online/gmeremittance_native/loginV2/view/LoginV2Activity.java +++ b/app/src/main/java/com/gmeremit/online/gmeremittance_native/loginV2/view/LoginV2Activity.java @@ -27,16 +27,22 @@ import android.widget.TextView; import com.gmeremit.online.gmeremittance_native.R; import com.gmeremit.online.gmeremittance_native.base.BaseActivity; +import com.gmeremit.online.gmeremittance_native.customwidgets.CustomAlertDialog; import com.gmeremit.online.gmeremittance_native.customwidgets.GmeErrorTextView; -import com.gmeremit.online.gmeremittance_native.customwidgets.securitykeypad.SecurityKeyboardManager; -import com.gmeremit.online.gmeremittance_native.customwidgets.securitykeypad.SecurityKeyboardView; -import com.gmeremit.online.gmeremittance_native.customwidgets.securitykeypad.SecurityKeypadRequestParamBuilder; import com.gmeremit.online.gmeremittance_native.homeV2.view.HomeActivityV2; import com.gmeremit.online.gmeremittance_native.loginV2.presenter.LoginV2Presenter; import com.gmeremit.online.gmeremittance_native.loginV2.presenter.LoginV2PresenterInterface; import com.gmeremit.online.gmeremittance_native.registerV2.view.RegisterV2Activity; import com.gmeremit.online.gmeremittance_native.resetpassV2.view.ResetPassV2Activity; +import com.gmeremit.online.gmeremittance_native.utils.security.securitykeypad.EncryptionManager; +import com.gmeremit.online.gmeremittance_native.utils.security.securitykeypad.SecurityKeyboardManager; +import com.gmeremit.online.gmeremittance_native.utils.security.securitykeypad.SecurityKeyboardView; +import com.gmeremit.online.gmeremittance_native.utils.security.securitykeypad.SecurityKeypadRequestParamBuilder; +import com.softsecurity.transkey.Global; +import com.softsecurity.transkey.TransKeyActivity; +import com.softsecurity.transkey.TransKeyCipher; + import butterknife.BindView; import butterknife.ButterKnife; @@ -97,6 +103,7 @@ public class LoginV2Activity extends BaseActivity implements View.OnClickListene private Interpolator interpolator = new AccelerateDecelerateInterpolator(); private int originalButtonWidth; private boolean isLoadingInProgress = false; + private SecurityKepadListener securityKeypadListener; @Override protected void onCreate(Bundle savedInstanceState) { @@ -117,7 +124,7 @@ public class LoginV2Activity extends BaseActivity implements View.OnClickListene progressbar_login.setVisibility(View.GONE); securityKeyboardView.setKeyboardContainerView(keypadContainer); securityKeyboardView.setKeyboardBallonView(ballonView); - + securityKeypadListener=new SecurityKepadListener(); try { securityKeyboardManager = new SecurityKeyboardManager(this); SecurityKeypadRequestParamBuilder request = new SecurityKeypadRequestParamBuilder(this); @@ -127,32 +134,7 @@ public class LoginV2Activity extends BaseActivity implements View.OnClickListene .setBallonView(ballonView) .setKeyboardContainer(keypadContainer) .setRequestParams(request) - .setActionListener(new SecurityKeyboardManager.SecurityKeyboardActionListenerFacade() { - @Override - public void done(Intent intent) { - - } - - @Override - public void cancel(Intent intent) { - - } - - @Override - public void input(int i) { - - } - - @Override - public void minTextSizeCallback() { - - } - - @Override - public void maxTextSizeCallback() { - - } - }) + .setActionListener(securityKeypadListener) .build(); } catch (Exception e) { @@ -202,11 +184,7 @@ public class LoginV2Activity extends BaseActivity implements View.OnClickListene break; case R.id.btn_submit: - if (presenter.validateAll(usernameId.getText().toString(),"123")){ - hideKeyBoard(); - rootView.clearFocus(); - morphButtonIntoProgressBar(); - } + onLoginBtn(); break; case R.id.tv_forgotpass: @@ -222,6 +200,15 @@ public class LoginV2Activity extends BaseActivity implements View.OnClickListene } } + private void onLoginBtn() + { + if (presenter.validateAll(usernameId.getText().toString(),"")){ + hideKeyBoard(); + rootView.clearFocus(); + morphButtonIntoProgressBar(); + } + } + @Override public boolean dispatchTouchEvent(MotionEvent ev) { return (isLoadingInProgress || securityKeyboardView.checkIfTouchIntersectKeypadLayout(ev) || super.dispatchTouchEvent(ev)); @@ -278,7 +265,7 @@ public class LoginV2Activity extends BaseActivity implements View.OnClickListene mIsMorphingInProgress = false; // ViewCompat.setTranslationZ(progressbar_login, 100); progressbar_login.setVisibility(View.VISIBLE); - presenter.loginUser(usernameId.getText().toString(), "123"); + presenter.loginUser(usernameId.getText().toString(), ""); } }); mMorphingAnimatorSet.start(); @@ -373,4 +360,48 @@ public class LoginV2Activity extends BaseActivity implements View.OnClickListene else hideKeyBoard(); } + + + class SecurityKepadListener implements SecurityKeyboardManager.SecurityKeyboardActionListenerFacade { + @Override + public void done(Intent intent) { + presenter.updateUserPassword(getDecryptedDataFromIntent(intent)); + onLoginBtn(); + } + + @Override + public void cancel(Intent intent) { + presenter.updateUserPassword(getDecryptedDataFromIntent(intent)); + } + + + private String getDecryptedDataFromIntent(Intent intent) + { + if (intent == null) + return ""; + + String cipherData = intent.getStringExtra(TransKeyActivity.mTK_PARAM_CIPHER_DATA); + + byte[] secureKey = intent.getByteArrayExtra(TransKeyActivity.mTK_PARAM_SECURE_KEY); + int iRealDataLength = intent.getIntExtra(TransKeyActivity.mTK_PARAM_DATA_LENGTH, 0); + Log.d("EncryptedData",cipherData); + return EncryptionManager.decryptCipherText(cipherData,secureKey,iRealDataLength); + } + + + @Override + public void input(int i) { + + } + + @Override + public void minTextSizeCallback() { + + } + + @Override + public void maxTextSizeCallback() { + + } + } } diff --git a/app/src/main/java/com/gmeremit/online/gmeremittance_native/utils/security/securitykeypad/EncryptionManager.java b/app/src/main/java/com/gmeremit/online/gmeremittance_native/utils/security/securitykeypad/EncryptionManager.java new file mode 100644 index 00000000..ba557b67 --- /dev/null +++ b/app/src/main/java/com/gmeremit/online/gmeremittance_native/utils/security/securitykeypad/EncryptionManager.java @@ -0,0 +1,40 @@ +package com.gmeremit.online.gmeremittance_native.utils.security.securitykeypad; + +import android.util.Log; + +import com.softsecurity.transkey.Global; +import com.softsecurity.transkey.TransKeyCipher; + +public class EncryptionManager { + + public static String decryptCipherText(String cipherData,byte[] secureKey, int dataLength) + { + + if (dataLength == 0) + return ""; + + StringBuffer plainData = null; + + try { + TransKeyCipher tkc = new TransKeyCipher("SEED"); + tkc.setSecureKey(secureKey); + + + + byte pbPlainData[] = new byte[dataLength]; + if (tkc.getDecryptCipherData(cipherData, pbPlainData)) { + plainData = new StringBuffer(new String(pbPlainData)); + + for(int i=0;i @@ -72,7 +73,7 @@ android:paddingBottom="5dp" android:paddingStart="8dp" android:paddingEnd="8dp" - android:textSize="14sp" + android:textSize="16sp" android:minHeight="40dp" android:hint="@string/login_user_id_text" android:layout_marginStart="10dp" @@ -101,8 +102,7 @@ android:text="@string/password_text" android:textSize="14sp" app:txtfontName="@string/regular" /> - --> + + + + + + + + + + + + + + + + > + + /> + \ No newline at end of file diff --git a/app/src/main/res/layout/security_keyboard_view.xml b/app/src/main/res/layout/security_keyboard_view.xml index 3f822066..a832f3f3 100644 --- a/app/src/main/res/layout/security_keyboard_view.xml +++ b/app/src/main/res/layout/security_keyboard_view.xml @@ -20,7 +20,7 @@ android:maxLines="1" android:background="@drawable/curve_rectangle_edit_text" android:textColor="@android:color/black" - android:textSize="14sp" + android:textSize="16sp" android:textStyle="bold" /> + + + gmeuat.gmeremit.com + + \ No newline at end of file