diff --git a/app/src/main/java/fr/free/nrw/commons/MWApi.java b/app/src/main/java/fr/free/nrw/commons/MWApi.java
index 37a4d02e7..aef8b5cd0 100644
--- a/app/src/main/java/fr/free/nrw/commons/MWApi.java
+++ b/app/src/main/java/fr/free/nrw/commons/MWApi.java
@@ -18,7 +18,8 @@ public class MWApi extends org.mediawiki.api.MWApi {
* @param username String
* @param password String
* @return String On success: "PASS"
- * failure: A failure message code (deifned by mediawiki)
+ * continue: "2FA" (More information required for 2FA)
+ * failure: A failure message code (defined by mediawiki)
* misc: genericerror-UI, genericerror-REDIRECT, genericerror-RESTART
* @throws IOException On api request IO issue
*/
@@ -45,9 +46,14 @@ public class MWApi extends org.mediawiki.api.MWApi {
if (status.equals("PASS")) {
this.isLoggedIn = true;
return status;
-
} else if (status.equals("FAIL")) {
return loginData.getString("/api/clientlogin/@messagecode");
+ } else if (
+ status.equals("UI")
+ && loginData.getString("/api/clientlogin/requests/_v/@id").equals("TOTPAuthenticationRequest")
+ && loginData.getString("/api/clientlogin/requests/_v/@provider").equals("Two-factor authentication (OATH).")
+ ) {
+ return "2FA";
}
// UI, REDIRECT, RESTART
diff --git a/app/src/main/java/fr/free/nrw/commons/auth/LoginActivity.java b/app/src/main/java/fr/free/nrw/commons/auth/LoginActivity.java
index b104eb2e2..6c3f6a389 100644
--- a/app/src/main/java/fr/free/nrw/commons/auth/LoginActivity.java
+++ b/app/src/main/java/fr/free/nrw/commons/auth/LoginActivity.java
@@ -119,6 +119,8 @@ public class LoginActivity extends AccountAuthenticatorActivity {
} else if (result.toLowerCase().contains("userblocked".toLowerCase())) {
// Matches login-userblocked
response = R.string.login_failed_blocked;
+ } else if (result.equals("2FA")){
+ response = R.string.login_failed_2fa_not_supported;
} else {
// Occurs with unhandled login failure codes
Timber.d("Login failed with reason: %s", result);
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index e741c211b..0414f98fa 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -42,6 +42,7 @@
Unable to login - please check your password
Too many unsuccessful attempts. Please try again in a few minutes.
Sorry, this user has been blocked on Commons
+ The app doesn\'t currently support 2 Factor Authentication.
Login failed
Upload
Name this set