Browse Source

Login screen added

master
preyearegmi 6 years ago
parent
commit
b58f4fca87
  1. 4
      app/src/main/AndroidManifest.xml
  2. 19
      app/src/main/java/com/gmeremit/online/gmeremittance_native/loginV2/presenter/LoginV2Presenter.java
  3. 2
      app/src/main/java/com/gmeremit/online/gmeremittance_native/loginV2/presenter/LoginV2PresenterInterface.java
  4. 103
      app/src/main/java/com/gmeremit/online/gmeremittance_native/loginV2/view/LoginV2Activity.java
  5. 40
      app/src/main/java/com/gmeremit/online/gmeremittance_native/utils/security/securitykeypad/EncryptionManager.java
  6. 3
      app/src/main/java/com/gmeremit/online/gmeremittance_native/utils/security/securitykeypad/SecurityKeyboardManager.java
  7. 2
      app/src/main/java/com/gmeremit/online/gmeremittance_native/utils/security/securitykeypad/SecurityKeyboardView.java
  8. 2
      app/src/main/java/com/gmeremit/online/gmeremittance_native/utils/security/securitykeypad/SecurityKeypadRequestParamBuilder.java
  9. 29
      app/src/main/res/layout/activity_login_v2.xml
  10. 2
      app/src/main/res/layout/security_keyboard_view.xml
  11. 6
      app/src/main/res/xml/network_security_config.xml

4
app/src/main/AndroidManifest.xml

@ -21,7 +21,9 @@
android:roundIcon="@mipmap/ic_launcher" android:roundIcon="@mipmap/ic_launcher"
android:supportsRtl="true" android:supportsRtl="true"
android:theme="@style/AppTheme" android:theme="@style/AppTheme"
tools:replace="android:allowBackup">
tools:replace="android:allowBackup"
android:networkSecurityConfig="@xml/network_security_config"
>
<provider <provider
android:name="android.support.v4.content.FileProvider" android:name="android.support.v4.content.FileProvider"
android:authorities="${fileProvider}" android:authorities="${fileProvider}"

19
app/src/main/java/com/gmeremit/online/gmeremittance_native/loginV2/presenter/LoginV2Presenter.java

@ -21,11 +21,13 @@ public class LoginV2Presenter extends BasePresenter implements LoginV2PresenterI
private final LoginV2ContractInterface view; private final LoginV2ContractInterface view;
private final LoginV2Gateway gateway; private final LoginV2Gateway gateway;
private String userPassword;
public LoginV2Presenter(LoginV2ContractInterface view) { public LoginV2Presenter(LoginV2ContractInterface view) {
this.view=view; this.view=view;
this.gateway=new LoginV2Gateway(this); this.gateway=new LoginV2Gateway(this);
userPassword="";
} }
@ -43,7 +45,15 @@ public class LoginV2Presenter extends BasePresenter implements LoginV2PresenterI
@Override @Override
public boolean validatePassword(String s) { public boolean validatePassword(String s) {
if(s.length()<1) {
// if(s.length()<1) {
// view.showInvalidPassword("Password cannot be empty.");
// return false;
// }
// else {
// view.showInvalidPassword(null);
// return true;
// }
if(userPassword.length()<1) {
view.showInvalidPassword("Password cannot be empty."); view.showInvalidPassword("Password cannot be empty.");
return false; return false;
} }
@ -53,11 +63,16 @@ public class LoginV2Presenter extends BasePresenter implements LoginV2PresenterI
} }
} }
@Override
public void updateUserPassword(String decryptedDataFromIntent) {
this.userPassword=decryptedDataFromIntent;
}
@Override @Override
public void loginUser(String userId, String userPwd) { public void loginUser(String userId, String userPwd) {
String auth= "Basic "+Utils.toBase64("172017F9EC11222E8107142733:QRK2UM0Q:" + GmeApplication.getAppRelatedMetaData().getDeviceId()); String auth= "Basic "+Utils.toBase64("172017F9EC11222E8107142733:QRK2UM0Q:" + GmeApplication.getAppRelatedMetaData().getDeviceId());
this.gateway.loginUser(auth,userId,userPwd)
this.gateway.loginUser(auth,userId,userPassword)
// .doOnSubscribe(d->view.showProgressBar(true,"Logging in...")) // .doOnSubscribe(d->view.showProgressBar(true,"Logging in..."))
// .doFinally(()->view.showProgressBar(false,"")) // .doFinally(()->view.showProgressBar(false,""))
.subscribeOn(Schedulers.io()) .subscribeOn(Schedulers.io())

2
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 validateUserId(String userId);
boolean validatePassword(String s); boolean validatePassword(String s);
void updateUserPassword(String decryptedDataFromIntent);
interface LoginV2ContractInterface extends BaseContractInterface { interface LoginV2ContractInterface extends BaseContractInterface {
void showInvalidUserId(String message); void showInvalidUserId(String message);

103
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.R;
import com.gmeremit.online.gmeremittance_native.base.BaseActivity; 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.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.homeV2.view.HomeActivityV2;
import com.gmeremit.online.gmeremittance_native.loginV2.presenter.LoginV2Presenter; import com.gmeremit.online.gmeremittance_native.loginV2.presenter.LoginV2Presenter;
import com.gmeremit.online.gmeremittance_native.loginV2.presenter.LoginV2PresenterInterface; import com.gmeremit.online.gmeremittance_native.loginV2.presenter.LoginV2PresenterInterface;
import com.gmeremit.online.gmeremittance_native.registerV2.view.RegisterV2Activity; import com.gmeremit.online.gmeremittance_native.registerV2.view.RegisterV2Activity;
import com.gmeremit.online.gmeremittance_native.resetpassV2.view.ResetPassV2Activity; 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.BindView;
import butterknife.ButterKnife; import butterknife.ButterKnife;
@ -97,6 +103,7 @@ public class LoginV2Activity extends BaseActivity implements View.OnClickListene
private Interpolator interpolator = new AccelerateDecelerateInterpolator(); private Interpolator interpolator = new AccelerateDecelerateInterpolator();
private int originalButtonWidth; private int originalButtonWidth;
private boolean isLoadingInProgress = false; private boolean isLoadingInProgress = false;
private SecurityKepadListener securityKeypadListener;
@Override @Override
protected void onCreate(Bundle savedInstanceState) { protected void onCreate(Bundle savedInstanceState) {
@ -117,7 +124,7 @@ public class LoginV2Activity extends BaseActivity implements View.OnClickListene
progressbar_login.setVisibility(View.GONE); progressbar_login.setVisibility(View.GONE);
securityKeyboardView.setKeyboardContainerView(keypadContainer); securityKeyboardView.setKeyboardContainerView(keypadContainer);
securityKeyboardView.setKeyboardBallonView(ballonView); securityKeyboardView.setKeyboardBallonView(ballonView);
securityKeypadListener=new SecurityKepadListener();
try { try {
securityKeyboardManager = new SecurityKeyboardManager(this); securityKeyboardManager = new SecurityKeyboardManager(this);
SecurityKeypadRequestParamBuilder request = new SecurityKeypadRequestParamBuilder(this); SecurityKeypadRequestParamBuilder request = new SecurityKeypadRequestParamBuilder(this);
@ -127,32 +134,7 @@ public class LoginV2Activity extends BaseActivity implements View.OnClickListene
.setBallonView(ballonView) .setBallonView(ballonView)
.setKeyboardContainer(keypadContainer) .setKeyboardContainer(keypadContainer)
.setRequestParams(request) .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(); .build();
} catch (Exception e) { } catch (Exception e) {
@ -202,11 +184,7 @@ public class LoginV2Activity extends BaseActivity implements View.OnClickListene
break; break;
case R.id.btn_submit: case R.id.btn_submit:
if (presenter.validateAll(usernameId.getText().toString(),"123")){
hideKeyBoard();
rootView.clearFocus();
morphButtonIntoProgressBar();
}
onLoginBtn();
break; break;
case R.id.tv_forgotpass: 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 @Override
public boolean dispatchTouchEvent(MotionEvent ev) { public boolean dispatchTouchEvent(MotionEvent ev) {
return (isLoadingInProgress || securityKeyboardView.checkIfTouchIntersectKeypadLayout(ev) || super.dispatchTouchEvent(ev)); return (isLoadingInProgress || securityKeyboardView.checkIfTouchIntersectKeypadLayout(ev) || super.dispatchTouchEvent(ev));
@ -278,7 +265,7 @@ public class LoginV2Activity extends BaseActivity implements View.OnClickListene
mIsMorphingInProgress = false; mIsMorphingInProgress = false;
// ViewCompat.setTranslationZ(progressbar_login, 100); // ViewCompat.setTranslationZ(progressbar_login, 100);
progressbar_login.setVisibility(View.VISIBLE); progressbar_login.setVisibility(View.VISIBLE);
presenter.loginUser(usernameId.getText().toString(), "123");
presenter.loginUser(usernameId.getText().toString(), "");
} }
}); });
mMorphingAnimatorSet.start(); mMorphingAnimatorSet.start();
@ -373,4 +360,48 @@ public class LoginV2Activity extends BaseActivity implements View.OnClickListene
else else
hideKeyBoard(); 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() {
}
}
} }

40
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<pbPlainData.length;i++)
pbPlainData[i]=0x01;
} else {
return "";
}
} catch (Exception e) {
return "";
}
return plainData.toString();
}
}

3
app/src/main/java/com/gmeremit/online/gmeremittance_native/customwidgets/securitykeypad/SecurityKeyboardManager.java → app/src/main/java/com/gmeremit/online/gmeremittance_native/utils/security/securitykeypad/SecurityKeyboardManager.java

@ -1,8 +1,7 @@
package com.gmeremit.online.gmeremittance_native.customwidgets.securitykeypad;
package com.gmeremit.online.gmeremittance_native.utils.security.securitykeypad;
import android.content.Context; import android.content.Context;
import android.content.Intent; import android.content.Intent;
import android.view.MotionEvent;
import android.widget.EditText; import android.widget.EditText;
import android.widget.FrameLayout; import android.widget.FrameLayout;
import android.widget.HorizontalScrollView; import android.widget.HorizontalScrollView;

2
app/src/main/java/com/gmeremit/online/gmeremittance_native/customwidgets/securitykeypad/SecurityKeyboardView.java → app/src/main/java/com/gmeremit/online/gmeremittance_native/utils/security/securitykeypad/SecurityKeyboardView.java

@ -1,4 +1,4 @@
package com.gmeremit.online.gmeremittance_native.customwidgets.securitykeypad;
package com.gmeremit.online.gmeremittance_native.utils.security.securitykeypad;
import android.content.Context; import android.content.Context;
import android.graphics.Rect; import android.graphics.Rect;

2
app/src/main/java/com/gmeremit/online/gmeremittance_native/customwidgets/securitykeypad/SecurityKeypadRequestParamBuilder.java → app/src/main/java/com/gmeremit/online/gmeremittance_native/utils/security/securitykeypad/SecurityKeypadRequestParamBuilder.java

@ -1,4 +1,4 @@
package com.gmeremit.online.gmeremittance_native.customwidgets.securitykeypad;
package com.gmeremit.online.gmeremittance_native.utils.security.securitykeypad;
import android.content.Context; import android.content.Context;
import android.content.Intent; import android.content.Intent;

29
app/src/main/res/layout/activity_login_v2.xml

@ -58,6 +58,7 @@
android:layout_marginLeft="10dp" android:layout_marginLeft="10dp"
android:paddingTop="8dp" android:paddingTop="8dp"
android:paddingBottom="2dp" android:paddingBottom="2dp"
android:text="@string/login_user_id_text" android:text="@string/login_user_id_text"
android:textSize="14sp" android:textSize="14sp"
app:txtfontName="@string/regular" /> app:txtfontName="@string/regular" />
@ -72,7 +73,7 @@
android:paddingBottom="5dp" android:paddingBottom="5dp"
android:paddingStart="8dp" android:paddingStart="8dp"
android:paddingEnd="8dp" android:paddingEnd="8dp"
android:textSize="14sp"
android:textSize="16sp"
android:minHeight="40dp" android:minHeight="40dp"
android:hint="@string/login_user_id_text" android:hint="@string/login_user_id_text"
android:layout_marginStart="10dp" android:layout_marginStart="10dp"
@ -101,8 +102,7 @@
android:text="@string/password_text" android:text="@string/password_text"
android:textSize="14sp" android:textSize="14sp"
app:txtfontName="@string/regular" /> app:txtfontName="@string/regular" />
<com.gmeremit.online.gmeremittance_native.customwidgets.securitykeypad.SecurityKeyboardView
android:paddingTop="5dp"
<com.gmeremit.online.gmeremittance_native.utils.security.securitykeypad.SecurityKeyboardView
android:layout_marginStart="10dp" android:layout_marginStart="10dp"
android:layout_marginEnd="10dp" android:layout_marginEnd="10dp"
android:id="@+id/securityKeyboard" android:id="@+id/securityKeyboard"
@ -197,22 +197,37 @@
<!--android:src="@drawable/login_footer_image"/>--> <!--android:src="@drawable/login_footer_image"/>-->
<!--<FrameLayout-->
<!--android:id="@+id/keypadContainer"-->
<!--android:layout_width="match_parent"-->
<!--android:layout_height="wrap_content"-->
<!--android:layout_alignParentBottom="true"-->
<!--&gt;-->
<!--</FrameLayout>-->
<!--<RelativeLayout-->
<!--android:id="@+id/keypadBallon"-->
<!--android:layout_width="match_parent"-->
<!--android:layout_height="wrap_content"-->
<!--android:layout_alignParentBottom="true"-->
<!--/>-->
</RelativeLayout> </RelativeLayout>
<FrameLayout <FrameLayout
android:id="@+id/keypadContainer" android:id="@+id/keypadContainer"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
>
>
</FrameLayout> </FrameLayout>
<RelativeLayout <RelativeLayout
android:id="@+id/keypadBallon" android:id="@+id/keypadBallon"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
/>
/>
</LinearLayout> </LinearLayout>

2
app/src/main/res/layout/security_keyboard_view.xml

@ -20,7 +20,7 @@
android:maxLines="1" android:maxLines="1"
android:background="@drawable/curve_rectangle_edit_text" android:background="@drawable/curve_rectangle_edit_text"
android:textColor="@android:color/black" android:textColor="@android:color/black"
android:textSize="14sp"
android:textSize="16sp"
android:textStyle="bold" /> android:textStyle="bold" />
<HorizontalScrollView <HorizontalScrollView

6
app/src/main/res/xml/network_security_config.xml

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
<domain-config cleartextTrafficPermitted="true">
<domain includeSubdomains="true">gmeuat.gmeremit.com</domain>
</domain-config>
</network-security-config>
Loading…
Cancel
Save