jenkins-bot submitted this change.

View Change

Approvals: Xqt: Looks good to me, approved jenkins-bot: Verified
[IMPR] Enable 2FA login with Pywikibot

Bug: T186274
Change-Id: I1113734c0456ed0b8d734c07514c5ca2d47a4fa4
---
M pywikibot/data/api/_login.py
1 file changed, 17 insertions(+), 1 deletion(-)

diff --git a/pywikibot/data/api/_login.py b/pywikibot/data/api/_login.py
index 11de1ae..f88a371 100644
--- a/pywikibot/data/api/_login.py
+++ b/pywikibot/data/api/_login.py
@@ -18,7 +18,11 @@

class LoginManager(login.LoginManager):

- """Supply login_to_site method to use API interface."""
+ """Supply login_to_site method to use API interface.
+
+ .. versionchanged:: 8.0
+ 2FA login was enabled.
+ """

# API login parameters mapping
mapping = {
@@ -69,6 +73,9 @@

Note, this doesn't do anything with cookies. The http module
takes care of all the cookie stuff. Throws exception on failure.
+
+ .. versionchanged:: 8.0
+ 2FA login was enabled.
"""
self.below_mw_1_27 = False
if hasattr(self, '_waituntil') \
@@ -131,6 +138,15 @@
self.keyword('token')] = self.get_login_token()
continue

+ if status == 'UI':
+ oathtoken = pywikibot.input(response['message'], password=True)
+ login_request['OATHToken'] = oathtoken
+ login_request['logincontinue'] = True
+ del login_request['username']
+ del login_request['password']
+ del login_request['rememberMe']
+ continue
+
# messagecode was introduced with 1.29.0-wmf.14
# but older wikis are still supported
login_throttled = response.get('messagecode') == 'login-throttled'

To view, visit change 842505. To unsubscribe, or for help writing mail filters, visit settings.

Gerrit-Project: pywikibot/core
Gerrit-Branch: master
Gerrit-Change-Id: I1113734c0456ed0b8d734c07514c5ca2d47a4fa4
Gerrit-Change-Number: 842505
Gerrit-PatchSet: 4
Gerrit-Owner: Xqt <info@gno.de>
Gerrit-Reviewer: Framawiki <framawiki@tools.wmflabs.org>
Gerrit-Reviewer: Masti <mastigm@gmail.com>
Gerrit-Reviewer: Xqt <info@gno.de>
Gerrit-Reviewer: jenkins-bot
Gerrit-MessageType: merged