diff --git a/modules/amazon/browser.py b/modules/amazon/browser.py index 3e2fae7f4ae6d2a79b3483a72a2da6f097eafc26..630cfc74b0978d37d7e3b1aa4fe309d37848a7c4 100644 --- a/modules/amazon/browser.py +++ b/modules/amazon/browser.py @@ -23,14 +23,14 @@ from weboob.browser import LoginBrowser, URL, need_login, StatesMixin from weboob.exceptions import ( BrowserIncorrectPassword, BrowserUnavailable, ImageCaptchaQuestion, BrowserQuestion, - WrongCaptchaResponse, AuthMethodNotImplemented, NeedInteractiveFor2FA, + WrongCaptchaResponse, AuthMethodNotImplemented, NeedInteractiveFor2FA, BrowserPasswordExpired, ) from weboob.tools.value import Value from weboob.browser.browsers import ClientError from .pages import ( LoginPage, SubscriptionsPage, DocumentsPage, DownloadDocumentPage, HomePage, - PanelPage, SecurityPage, LanguagePage, HistoryPage, + PanelPage, SecurityPage, LanguagePage, HistoryPage, PasswordExpired, ) @@ -68,6 +68,7 @@ class AmazonBrowser(LoginBrowser, StatesMixin): SecurityPage, ) language = URL(r'/gp/customer-preferences/save-settings/ref=icp_lop_(?P.*)_tn', LanguagePage) + password_expired = URL(r'/ap/forgotpassword/reverification', PasswordExpired) __states__ = ('otp_form', 'otp_url', 'otp_style', 'otp_headers') @@ -188,6 +189,9 @@ def do_login(self): self.page.login(self.username, self.password) + if self.password_expired.is_here(): + raise BrowserPasswordExpired(self.page.get_message()) + if self.security.is_here(): # Raise security management self.handle_security() diff --git a/modules/amazon/pages.py b/modules/amazon/pages.py index 3e90894585cb4b04168df1e06d9c45f0e26a6ffc..0ca7b0241c642a79a66da044d2b30f255bd95c71 100644 --- a/modules/amazon/pages.py +++ b/modules/amazon/pages.py @@ -125,6 +125,11 @@ def get_error_message(self): return CleanText('//div[@id="auth-error-message-box"]')(self.doc) +class PasswordExpired(HTMLPage): + def get_message(self): + return CleanText('//form//h2')(self.doc) + + class SubscriptionsPage(LoggedPage, HTMLPage): @method class get_item(ItemElement):