From 37bb23c5549ffe690f65b1c04cf432bd3153bf04 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Parm=C3=A9nides=20GV?= Date: Wed, 14 Aug 2013 12:15:42 +0200 Subject: Login dialog requires username. I've also changed the way we notify that the password should have 8 characters at least, to make it consistent to the way we notify username is required. --- src/se/leap/leapclient/Dashboard.java | 7 +------ src/se/leap/leapclient/LogInDialog.java | 26 ++++++++++++++++++++++---- src/se/leap/leapclient/ProviderAPI.java | 24 ++++++++++++++++++++---- 3 files changed, 43 insertions(+), 14 deletions(-) (limited to 'src/se/leap/leapclient') diff --git a/src/se/leap/leapclient/Dashboard.java b/src/se/leap/leapclient/Dashboard.java index 371663b7..19d33a12 100644 --- a/src/se/leap/leapclient/Dashboard.java +++ b/src/se/leap/leapclient/Dashboard.java @@ -279,12 +279,7 @@ public class Dashboard extends Activity implements LogInDialog.LogInDialogInterf DialogFragment newFragment = LogInDialog.newInstance(); if(resultData != null && !resultData.isEmpty()) { - Bundle user_message_bundle = new Bundle(); - String user_message = resultData.getString(getResources().getString(R.string.user_message)); - String username = resultData.getString(LogInDialog.USERNAME); - user_message_bundle.putString(getResources().getString(R.string.user_message), user_message); - user_message_bundle.putString(LogInDialog.USERNAME, username); - newFragment.setArguments(user_message_bundle); + newFragment.setArguments(resultData); } newFragment.show(fragment_transaction, LogInDialog.TAG); } diff --git a/src/se/leap/leapclient/LogInDialog.java b/src/se/leap/leapclient/LogInDialog.java index 73833a13..7dd1c732 100644 --- a/src/se/leap/leapclient/LogInDialog.java +++ b/src/se/leap/leapclient/LogInDialog.java @@ -17,13 +17,18 @@ package se.leap.leapclient; import se.leap.leapclient.R; +import android.R.color; import android.app.Activity; import android.app.AlertDialog; import android.app.DialogFragment; import android.content.DialogInterface; +import android.content.res.ColorStateList; import android.os.Bundle; +import android.provider.CalendarContract.Colors; import android.view.LayoutInflater; import android.view.View; +import android.view.animation.AlphaAnimation; +import android.view.animation.BounceInterpolator; import android.widget.EditText; import android.widget.TextView; @@ -44,6 +49,8 @@ public class LogInDialog extends DialogFragment { final public static String VERB = "log in"; final public static String USERNAME = "username"; final public static String PASSWORD = "password"; + final public static String USERNAME_MISSING = "username missing"; + final public static String PASSWORD_INVALID_LENGTH = "password_invalid_length"; public AlertDialog onCreateDialog(Bundle savedInstanceState) { @@ -54,23 +61,34 @@ public class LogInDialog extends DialogFragment { final TextView user_message = (TextView)log_in_dialog_view.findViewById(R.id.user_message); if(getArguments() != null && getArguments().containsKey(getResources().getString(R.string.user_message))) { user_message.setText(getArguments().getString(getResources().getString(R.string.user_message))); - } else user_message.setVisibility(View.GONE); + } else { + user_message.setVisibility(View.GONE); + } final EditText username_field = (EditText)log_in_dialog_view.findViewById(R.id.username_entered); - if(getArguments() != null && getArguments().containsKey(getResources().getString(R.string.user_message))) { + if(getArguments() != null && getArguments().containsKey(USERNAME)) { String username = getArguments().getString(USERNAME); username_field.setText(username); - username_field.setHint(""); } + if (getArguments() != null && getArguments().containsKey(USERNAME_MISSING)) { + username_field.setError(getResources().getString(R.string.username_ask)); + } + final EditText password_field = (EditText)log_in_dialog_view.findViewById(R.id.password_entered); - if(!username_field.getText().toString().isEmpty() && password_field.isFocusable()) + if(!username_field.getText().toString().isEmpty() && password_field.isFocusable()) { password_field.requestFocus(); + } + if (getArguments() != null && getArguments().containsKey(PASSWORD_INVALID_LENGTH)) { + password_field.setError(getResources().getString(R.string.error_not_valid_password_user_message)); + } + builder.setView(log_in_dialog_view) .setPositiveButton(R.string.login_button, new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int id) { String username = username_field.getText().toString().trim(); String password = password_field.getText().toString().trim(); + dialog.dismiss(); interface_with_Dashboard.authenticate(username, password); } }) diff --git a/src/se/leap/leapclient/ProviderAPI.java b/src/se/leap/leapclient/ProviderAPI.java index e7d329f8..2170478b 100644 --- a/src/se/leap/leapclient/ProviderAPI.java +++ b/src/se/leap/leapclient/ProviderAPI.java @@ -225,7 +225,7 @@ public class ProviderAPI extends IntentService { String username = (String) task.get(LogInDialog.USERNAME); String password = (String) task.get(LogInDialog.PASSWORD); - if(wellFormedPassword(password)) { + if(validUserLoginData(username, password)) { String authentication_server = (String) task.get(Provider.API_URL); SRPParameters params = new SRPParameters(new BigInteger(ConfigHelper.NG_1024, 16).toByteArray(), ConfigHelper.G.toByteArray(), BigInteger.ZERO.toByteArray(), "SHA-256"); @@ -277,14 +277,30 @@ public class ProviderAPI extends IntentService { e.printStackTrace(); } } else { - session_id_bundle.putBoolean(RESULT_KEY, false); - session_id_bundle.putString(getResources().getString(R.string.user_message), getResources().getString(R.string.error_not_valid_password_user_message)); - session_id_bundle.putString(LogInDialog.USERNAME, username); + if(!wellFormedPassword(password)) { + session_id_bundle.putBoolean(RESULT_KEY, false); + session_id_bundle.putString(LogInDialog.USERNAME, username); + session_id_bundle.putBoolean(LogInDialog.PASSWORD_INVALID_LENGTH, true); + } + if(username.isEmpty()) { + session_id_bundle.putBoolean(RESULT_KEY, false); + session_id_bundle.putBoolean(LogInDialog.USERNAME_MISSING, true); + } } return session_id_bundle; } + /** + * Validates parameters entered by the user to log in + * @param entered_username + * @param entered_password + * @return true if both parameters are present and the entered password length is greater or equal to eight (8). + */ + private boolean validUserLoginData(String entered_username, String entered_password) { + return !(entered_username.isEmpty()) && wellFormedPassword(entered_password); + } + /** * Validates a password * @param entered_password -- cgit v1.2.3