Generate random passwords for new users as we do on iphone

pull/14/head
Sam Bosley 13 years ago
parent a158192c7f
commit bbdc745731

@ -24,6 +24,7 @@ import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.net.MalformedURLException;
import java.security.NoSuchAlgorithmException;
import java.util.Random;
import java.util.concurrent.atomic.AtomicBoolean;
import java.util.concurrent.atomic.AtomicReference;
@ -63,6 +64,7 @@ import com.todoroo.andlib.service.Autowired;
import com.todoroo.andlib.service.ContextManager;
import com.todoroo.andlib.service.DependencyInjectionService;
import com.todoroo.andlib.service.ExceptionService;
import com.todoroo.andlib.utility.DateUtilities;
import com.todoroo.andlib.utility.DialogUtilities;
import com.todoroo.andlib.utility.Preferences;
import com.todoroo.astrid.actfm.sync.ActFmInvoker;
@ -91,6 +93,7 @@ public class ActFmLoginActivity extends Activity implements AuthListener {
@Autowired
protected ActFmPreferenceService actFmPreferenceService;
private final ActFmInvoker actFmInvoker = new ActFmInvoker();
private Random rand;
private Facebook facebook;
private AsyncFacebookRunner facebookRunner;
@ -134,6 +137,8 @@ public class ActFmLoginActivity extends Activity implements AuthListener {
setContentView(getContentViewResource());
setTitle(getTitleResource());
rand = new Random(DateUtilities.now());
noSync = getIntent().getBooleanExtra(EXTRA_DO_NOT_SYNC, false);
facebook = new Facebook(APP_ID);
@ -233,6 +238,7 @@ public class ActFmLoginActivity extends Activity implements AuthListener {
isNew.set(!isNew.get());
int nameIndex = body.indexOfChild(name);
int visibility = isNew.get() ? View.VISIBLE : View.GONE;
int passwordVisibility = isNew.get() ? View.GONE : View.VISIBLE;
toggleNew.setText(isNew.get() ? R.string.actfm_ALA_pw_returning
: R.string.actfm_ALA_pw_new);
dialog.get().setTitle(
@ -240,6 +246,12 @@ public class ActFmLoginActivity extends Activity implements AuthListener {
: R.string.actfm_ALA_login_title);
body.getChildAt(nameIndex - 1).setVisibility(visibility);
body.getChildAt(nameIndex).setVisibility(visibility);
EditText password = (EditText) body.getChildAt(nameIndex + 4);
String passwordText = isNew.get() ? generateRandomPassword() : ""; //$NON-NLS-1$
password.setText(passwordText);
body.getChildAt(nameIndex + 3).setVisibility(passwordVisibility);
body.getChildAt(nameIndex + 4).setVisibility(passwordVisibility);
}
});
toggleNew.setText(R.string.actfm_ALA_pw_returning);
@ -259,6 +271,10 @@ public class ActFmLoginActivity extends Activity implements AuthListener {
R.string.actfm_ALA_password_label);
password.setTransformationMethod(new PasswordTransformationMethod());
password.setText(generateRandomPassword());
body.getChildAt(body.indexOfChild(password) - 1).setVisibility(View.GONE);
password.setVisibility(View.GONE);
dialog.set(new AlertDialog.Builder(ActFmLoginActivity.this).setView(
body).setIcon(R.drawable.icon_32).setTitle(
R.string.actfm_ALA_signup_title).setPositiveButton(
@ -282,6 +298,16 @@ public class ActFmLoginActivity extends Activity implements AuthListener {
}
};
private String generateRandomPassword() {
String acceptable = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890!@#$%^&*(),."; //$NON-NLS-1$
char[] chars = new char[8];
for (int i = 0; i < chars.length; i++) {
char r = acceptable.charAt(rand.nextInt(acceptable.length()));
chars[i] = r;
}
return new String(chars);
}
private EditText addEditField(LinearLayout body, int hint) {
TextView label = new TextView(ActFmLoginActivity.this);
label.setText(hint);

Loading…
Cancel
Save