Commit e399dd26 authored by Sajal Narang's avatar Sajal Narang

Disallow login with empty username/password, fix #142

parent 88b9f944
...@@ -5,7 +5,10 @@ import android.app.ProgressDialog; ...@@ -5,7 +5,10 @@ import android.app.ProgressDialog;
import android.content.Context; import android.content.Context;
import android.content.Intent; import android.content.Intent;
import android.os.Bundle; import android.os.Bundle;
import android.support.design.widget.TextInputLayout;
import android.support.v7.app.AppCompatActivity; import android.support.v7.app.AppCompatActivity;
import android.text.Editable;
import android.text.TextWatcher;
import android.util.Log; import android.util.Log;
import android.view.KeyEvent; import android.view.KeyEvent;
import android.view.View; import android.view.View;
...@@ -29,6 +32,8 @@ import retrofit2.Response; ...@@ -29,6 +32,8 @@ import retrofit2.Response;
public class LoginActivity extends AppCompatActivity { public class LoginActivity extends AppCompatActivity {
private static final String TAG = "LoginActivity"; private static final String TAG = "LoginActivity";
private static final int PLAY_SERVICES_RESOLUTION_REQUEST = 9000; private static final int PLAY_SERVICES_RESOLUTION_REQUEST = 9000;
public static final String USERNAME_ERROR = "Username cannot be blank";
public static final String PASSWORD_ERROR = "Password cannot be blank";
SessionManager session; SessionManager session;
Context mContext = this; Context mContext = this;
private ProgressDialog progressDialog; private ProgressDialog progressDialog;
...@@ -48,17 +53,64 @@ public class LoginActivity extends AppCompatActivity { ...@@ -48,17 +53,64 @@ public class LoginActivity extends AppCompatActivity {
final Button loginButton = findViewById(R.id.login_button); final Button loginButton = findViewById(R.id.login_button);
final EditText usernameEditText = findViewById(R.id.login_username); final EditText usernameEditText = findViewById(R.id.login_username);
final EditText passwordEditText = findViewById(R.id.login_password); final EditText passwordEditText = findViewById(R.id.login_password);
final TextInputLayout usernameLayout = findViewById(R.id.login_username_layout);
final TextInputLayout passwordLayout = findViewById(R.id.login_password_layout);
usernameEditText.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
if (usernameEditText.getText().toString().equals("")) {
usernameLayout.setError(USERNAME_ERROR);
} else {
usernameLayout.setError(null);
}
}
@Override
public void afterTextChanged(Editable s) {
}
});
passwordEditText.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
if (passwordEditText.getText().toString().equals("")) {
passwordLayout.setError(PASSWORD_ERROR);
} else {
passwordLayout.setError(null);
}
}
@Override
public void afterTextChanged(Editable s) {
}
});
loginButton.setOnClickListener(new View.OnClickListener() { loginButton.setOnClickListener(new View.OnClickListener() {
@Override @Override
public void onClick(View view) { public void onClick(View view) {
if (!progressDialog.isShowing()) { String username = usernameEditText.getText().toString();
progressDialog.setMessage("Logging In"); String password = passwordEditText.getText().toString();
progressDialog.setCancelable(false); if (username.equals("")) {
progressDialog.setIndeterminate(true); usernameLayout.setError(USERNAME_ERROR);
progressDialog.show(); return;
}
if (password.equals("")) {
passwordLayout.setError(PASSWORD_ERROR);
return;
} }
login(usernameEditText.getText().toString(), passwordEditText.getText().toString()); login(username, password);
} }
}); });
...@@ -84,6 +136,12 @@ public class LoginActivity extends AppCompatActivity { ...@@ -84,6 +136,12 @@ public class LoginActivity extends AppCompatActivity {
} }
private void login(final String username, final String password) { private void login(final String username, final String password) {
if (!progressDialog.isShowing()) {
progressDialog.setMessage("Logging In");
progressDialog.setCancelable(false);
progressDialog.setIndeterminate(true);
progressDialog.show();
}
RetrofitInterface retrofitInterface = ServiceGenerator.createService(RetrofitInterface.class); RetrofitInterface retrofitInterface = ServiceGenerator.createService(RetrofitInterface.class);
retrofitInterface.passwordLogin(username, password).enqueue(new Callback<LoginResponse>() { retrofitInterface.passwordLogin(username, password).enqueue(new Callback<LoginResponse>() {
@Override @Override
......
...@@ -3,9 +3,9 @@ ...@@ -3,9 +3,9 @@
xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
android:orientation="vertical"
android:focusable="true" android:focusable="true"
android:focusableInTouchMode="true" android:focusableInTouchMode="true"
android:orientation="vertical"
android:weightSum="2"> android:weightSum="2">
...@@ -41,8 +41,10 @@ ...@@ -41,8 +41,10 @@
android:padding="20dp"> android:padding="20dp">
<android.support.design.widget.TextInputLayout <android.support.design.widget.TextInputLayout
android:id="@+id/login_username_layout"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content"> android:layout_height="wrap_content"
app:errorEnabled="true">
<android.support.design.widget.TextInputEditText <android.support.design.widget.TextInputEditText
android:id="@+id/login_username" android:id="@+id/login_username"
...@@ -54,16 +56,16 @@ ...@@ -54,16 +56,16 @@
</android.support.design.widget.TextInputLayout> </android.support.design.widget.TextInputLayout>
<android.support.design.widget.TextInputLayout <android.support.design.widget.TextInputLayout
android:id="@+id/login_password_layout"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
app:errorEnabled="true"
app:passwordToggleEnabled="true"> app:passwordToggleEnabled="true">
<android.support.design.widget.TextInputEditText <android.support.design.widget.TextInputEditText
android:id="@+id/login_password" android:id="@+id/login_password"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginBottom="10dp"
android:layout_marginTop="10dp"
android:ems="10" android:ems="10"
android:hint="Password" android:hint="Password"
android:inputType="textPassword" /> android:inputType="textPassword" />
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment