From b29b3d043293c265c6f3e31fad1868a3ac596a0a Mon Sep 17 00:00:00 2001 From: Alan Evans Date: Mon, 3 Feb 2020 08:46:28 -0500 Subject: [PATCH] Require at least 4 digits during registration. --- .../fragments/RegistrationLockFragment.java | 12 ++++++++++-- app/src/main/res/values/strings.xml | 1 + 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/org/thoughtcrime/securesms/registration/fragments/RegistrationLockFragment.java b/app/src/main/java/org/thoughtcrime/securesms/registration/fragments/RegistrationLockFragment.java index 73fb7a8784..3b79b78429 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/registration/fragments/RegistrationLockFragment.java +++ b/app/src/main/java/org/thoughtcrime/securesms/registration/fragments/RegistrationLockFragment.java @@ -3,7 +3,6 @@ package org.thoughtcrime.securesms.registration.fragments; import android.content.res.Resources; import android.os.Bundle; import android.text.InputType; -import android.text.TextUtils; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; @@ -35,6 +34,9 @@ public final class RegistrationLockFragment extends BaseRegistrationFragment { private static final String TAG = Log.tag(RegistrationLockFragment.class); + /** Applies to both V1 and V2 pins, because some V2 pins may have been migrated from V1. */ + private static final int MINIMUM_PIN_LENGTH = 4; + private EditText pinEntry; private View forgotPin; private CircularProgressButton pinButton; @@ -129,11 +131,17 @@ public final class RegistrationLockFragment extends BaseRegistrationFragment { private void handlePinEntry() { final String pin = pinEntry.getText().toString(); - if (TextUtils.isEmpty(pin) || TextUtils.isEmpty(pin.replace(" ", ""))) { + int trimmedLength = pin.replace(" ", "").length(); + if (trimmedLength == 0) { Toast.makeText(requireContext(), R.string.RegistrationActivity_you_must_enter_your_registration_lock_PIN, Toast.LENGTH_LONG).show(); return; } + if (trimmedLength < MINIMUM_PIN_LENGTH) { + Toast.makeText(requireContext(), getString(R.string.RegistrationActivity_your_pin_has_at_least_d_digits_or_characters, MINIMUM_PIN_LENGTH), Toast.LENGTH_LONG).show(); + return; + } + RegistrationViewModel model = getModel(); RegistrationService registrationService = RegistrationService.getInstance(model.getNumber().getE164Number(), model.getRegistrationSecret()); TokenResponse tokenResponse = model.getKeyBackupCurrentToken(); diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 6f270e44a0..e74e0b6606 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -1866,6 +1866,7 @@ Registration Lock PIN Registration Lock You must enter your Registration Lock PIN + Your pin has at least %d digits or characters Incorrect Registration Lock PIN Too many attempts You\'ve made too many incorrect Registration Lock PIN attempts. Please try again in a day.