diff --git a/app/src/main/java/com/aurora/store/fragment/AccountsFragment.java b/app/src/main/java/com/aurora/store/fragment/AccountsFragment.java index 2452ec198..dfa1d3060 100644 --- a/app/src/main/java/com/aurora/store/fragment/AccountsFragment.java +++ b/app/src/main/java/com/aurora/store/fragment/AccountsFragment.java @@ -54,9 +54,11 @@ import com.aurora.store.utility.Accountant; import com.aurora.store.utility.Log; import com.aurora.store.utility.PrefUtil; import com.aurora.store.utility.ViewUtil; +import com.dragons.aurora.playstoreapiv2.AuthException; import com.dragons.aurora.playstoreapiv2.GooglePlayAPI; import com.dragons.aurora.playstoreapiv2.Image; import com.google.android.material.chip.Chip; +import com.google.android.material.dialog.MaterialAlertDialogBuilder; import com.google.android.material.textfield.TextInputEditText; import org.jetbrains.annotations.NotNull; @@ -75,6 +77,7 @@ public class AccountsFragment extends Fragment { private static final String URL_TOS = "https://www.google.com/mobile/android/market-tos.html"; private static final String URL_LICENSE = "https://gitlab.com/AuroraOSS/AuroraStore/raw/master/LICENSE"; private static final String URL_DISCLAIMER = "https://gitlab.com/AuroraOSS/AuroraStore/raw/master/DISCLAIMER"; + private static final String URL_APP_PASS = "https://myaccount.google.com/apppasswords"; @BindView(R.id.view_switcher_top) ViewSwitcher mViewSwitcherTop; @@ -333,6 +336,9 @@ public class AccountsFragment extends Fragment { } }, err -> { Log.e("Google Login failed : %s", err.getMessage()); + if (err instanceof AuthException && ((AuthException) err).getTwoFactorUrl() != null) { + show2FADialog(); + } mProgressBar.setVisibility(View.INVISIBLE); txtInputPassword.setError("Check your password"); switchButtonState(false); @@ -372,4 +378,18 @@ public class AccountsFragment extends Fragment { Log.e("No WebView found !"); } } + + private void show2FADialog() { + MaterialAlertDialogBuilder mBuilder = new MaterialAlertDialogBuilder(context) + .setTitle(getString(R.string.dialog_2FA_title)) + .setMessage(getString(R.string.dialog_2FA_desc)) + .setPositiveButton(getString(R.string.dialog_2FA_positive), (dialog, which) -> { + openWebView(URL_APP_PASS); + }) + .setNegativeButton(getString(R.string.dialog_2FA_negative), (dialog, which) -> { + dialog.dismiss(); + }); + mBuilder.create(); + mBuilder.show(); + } } diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 25a994a8b..bbc9f475e 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -343,4 +343,9 @@ APK copied successfully Failed to copy APK Loading more apps.. + + 2-Factor Verification + You seem to have enabled 2FA, kindly generate an app password and use the new generated password to login + Create password + Later \ No newline at end of file