From 999f7ce855282e4ce85d11920a3e16788a101c11 Mon Sep 17 00:00:00 2001 From: Florian Duguet Date: Thu, 4 Jul 2019 15:02:37 +0200 Subject: [PATCH] [bouygues] manage wrong password Closes: 43238@sibi --- modules/bouygues/browser.py | 15 +++++++++++++-- modules/bouygues/pages.py | 9 ++++++++- 2 files changed, 21 insertions(+), 3 deletions(-) diff --git a/modules/bouygues/browser.py b/modules/bouygues/browser.py index f469a38639..605e5f182d 100644 --- a/modules/bouygues/browser.py +++ b/modules/bouygues/browser.py @@ -24,11 +24,12 @@ from weboob.browser import LoginBrowser, URL, need_login from weboob.browser.exceptions import HTTPNotFound +from weboob.exceptions import BrowserIncorrectPassword from weboob.tools.compat import urlparse, parse_qsl from .pages import ( - LoginPage, AppConfigPage, SubscriberPage, SubscriptionPage, SubscriptionDetail, DocumentPage, DocumentDownloadPage, - DocumentFilePage, + LoginPage, ForgottenPasswordPage, AppConfigPage, SubscriberPage, SubscriptionPage, SubscriptionDetail, DocumentPage, + DocumentDownloadPage, DocumentFilePage, ) @@ -43,6 +44,7 @@ class BouyguesBrowser(LoginBrowser): BASEURL = 'https://api.bouyguestelecom.fr' login_page = URL(r'https://www.mon-compte.bouyguestelecom.fr/cas/login', LoginPage) + forgotten_password_page = URL(r'https://www.mon-compte.bouyguestelecom.fr/mon-compte/mot-de-passe-oublie', ForgottenPasswordPage) app_config = URL(r'https://www.bouyguestelecom.fr/mon-compte/data/app-config.json', AppConfigPage) subscriber_page = MyURL(r'/personnes/(?P\d+)$', SubscriberPage) subscriptions_page = MyURL(r'/personnes/(?P\d+)/comptes-facturation', SubscriptionPage) @@ -61,6 +63,15 @@ def do_login(self): self.login_page.go() self.page.login(self.username, self.password, self.lastname) + if self.login_page.is_here(): + msg = self.page.get_error_message() + raise BrowserIncorrectPassword(msg) + + if self.forgotten_password_page.is_here(): + # when too much attempt has been done in a short time, bouygues redirect us here, + # but no message is available on this page + raise BrowserIncorrectPassword() + # q is timestamp millisecond self.app_config.go(params={'q': int(time()*1000)}) client_id = self.page.get_client_id() diff --git a/modules/bouygues/pages.py b/modules/bouygues/pages.py index 8eb5795c79..b9aec40747 100644 --- a/modules/bouygues/pages.py +++ b/modules/bouygues/pages.py @@ -27,7 +27,7 @@ from weboob.browser.pages import HTMLPage, JsonPage, LoggedPage, RawPage from weboob.capabilities import NotAvailable from weboob.capabilities.bill import Subscription, Bill -from weboob.browser.filters.standard import Date, CleanDecimal, Env, Format, Coalesce +from weboob.browser.filters.standard import Date, CleanDecimal, Env, Format, Coalesce, CleanText from weboob.exceptions import BrowserIncorrectPassword @@ -44,6 +44,13 @@ def login(self, username, password, lastname): form.submit() + def get_error_message(self): + return CleanText('//div[@id="alert_msg"]')(self.doc) + + +class ForgottenPasswordPage(HTMLPage): + pass + class AppConfigPage(JsonPage): def get_client_id(self): -- GitLab