Skip to content
This repository was archived by the owner on Jul 25, 2024. It is now read-only.

Commit a2b9060

Browse files
committed
Add validation for login fields
1 parent edbbb14 commit a2b9060

File tree

2 files changed

+48
-3
lines changed

2 files changed

+48
-3
lines changed

app/src/main/java/com/zulip/android/activities/LoginActivity.java

Lines changed: 44 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
import android.os.Bundle;
88
import android.support.v4.app.FragmentActivity;
99
import android.util.Log;
10+
import android.util.Patterns;
1011
import android.view.View;
1112
import android.widget.CheckBox;
1213
import android.widget.CompoundButton;
@@ -39,6 +40,8 @@ public class LoginActivity extends FragmentActivity implements View.OnClickListe
3940
private ProgressDialog connectionProgressDialog;
4041
private GoogleApiClient mGoogleApiClient;
4142
private EditText mServerEditText;
43+
private EditText mUserName;
44+
private EditText mPassword;
4245
private View mGoogleSignInButton;
4346
private CheckBox mUseZulipCheckbox;
4447

@@ -58,6 +61,8 @@ protected void onCreate(Bundle savedInstanceState) {
5861
findViewById(R.id.google_sign_in_button).setOnClickListener(this);
5962
findViewById(R.id.zulip_login).setOnClickListener(this);
6063
mUseZulipCheckbox.setOnCheckedChangeListener(this);
64+
mUserName = (EditText) findViewById(R.id.username);
65+
mPassword = (EditText) findViewById(R.id.password);
6166
}
6267

6368
@Override
@@ -101,6 +106,10 @@ private void saveServerURL() {
101106
}
102107

103108
// add https if scheme is not included
109+
if (!serverURL.contains("://")) {
110+
serverURL = "https://" + serverURL;
111+
}
112+
104113
Uri serverUri = Uri.parse(serverURL);
105114
if (serverUri.isRelative()) {
106115
serverUri = serverUri.buildUpon().scheme("https").build();
@@ -225,11 +234,12 @@ public void onClick(View v) {
225234
setupGoogleSignIn();
226235
break;
227236
case R.id.zulip_login:
237+
if (!isInputValid()) return;
228238
saveServerURL();
229239
connectionProgressDialog.show();
230-
if (!mUseZulipCheckbox.isChecked()) saveServerURL();
231-
AsyncLogin alog = new AsyncLogin(LoginActivity.this, ((EditText) findViewById(R.id.username)).getText().toString(),
232-
((EditText) findViewById(R.id.password)).getText().toString());
240+
241+
AsyncLogin alog = new AsyncLogin(LoginActivity.this,
242+
mUserName.getText().toString(), mPassword.getText().toString());
233243
// Remove the CPD when done
234244
alog.setCallback(new AsyncTaskCompleteListener() {
235245
@Override
@@ -251,6 +261,37 @@ public void onTaskFailure(String result) {
251261
}
252262
}
253263

264+
private boolean isInputValid() {
265+
boolean isValid = true;
266+
267+
if (mPassword.length() == 0) {
268+
isValid = false;
269+
mPassword.setError(getString(R.string.password_required));
270+
}
271+
272+
if (mUserName.length() == 0) {
273+
isValid = false;
274+
mUserName.setError(getString(R.string.username_required));
275+
}
276+
277+
if (!mUseZulipCheckbox.isChecked()) {
278+
if (mServerEditText.length() == 0) {
279+
isValid = false;
280+
mServerEditText.setError(getString(R.string.server_domain_required));
281+
} else {
282+
String serverString = mServerEditText.getText().toString();
283+
if (!serverString.contains("://")) serverString = "https://" + serverString;
284+
285+
if (!Patterns.WEB_URL.matcher(serverString).matches()) {
286+
mServerEditText.setError(getString(R.string.invalid_domain));
287+
isValid = false;
288+
}
289+
}
290+
}
291+
292+
return isValid;
293+
}
294+
254295
@Override
255296
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
256297
if (isChecked) {

app/src/main/res/values/strings.xml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,5 +46,9 @@
4646
<string name="use_another_server">Use Zulip.com</string>
4747
<string name="invalid_server_domain">Invalid server domain</string>
4848
<string name="logging_into_server">Logging into server: %s</string>
49+
<string name="password_required">Password required</string>
50+
<string name="username_required">Username required</string>
51+
<string name="server_domain_required">Server domain required</string>
52+
<string name="invalid_domain">Invalid domain</string>
4953

5054
</resources>

0 commit comments

Comments
 (0)