bnporc raise IncorrectPassword after 100 connections

This commit is contained in:
Baptiste Delpey 2015-07-27 16:22:53 +02:00 committed by Romain Bignon
commit d155f2ca3b
2 changed files with 10 additions and 3 deletions

View file

@ -24,8 +24,9 @@ from weboob.browser import LoginBrowser, URL, need_login
from weboob.capabilities.base import find_object
from weboob.capabilities.bank import AccountNotFound
from weboob.tools.json import json
from weboob.exceptions import BrowserPasswordExpired
from .pages import LoginPage, AccountsPage, AccountsIBANPage, HistoryPage, TransferInitPage
from .pages import LoginPage, AccountsPage, AccountsIBANPage, HistoryPage, TransferInitPage, ConnectionThresholdPage
__all__ = ['BNPParibasBrowser']
@ -67,6 +68,7 @@ class BNPParibasBrowser(CompatMixin, JsonBrowserMixin, LoginBrowser):
'SEEA-pa01/devServer/seeaserver',
'https://mabanqueprivee.bnpparibas.net/fr/espace-prive/comptes-et-contrats\?u=%2FSEEA-pa01%2FdevServer%2Fseeaserver',
LoginPage)
con_threshold = URL(r'/fr/connexion/100-connexions', ConnectionThresholdPage)
accounts = URL('udc-wspl/rest/getlstcpt', AccountsPage)
ibans = URL('rib-wspl/rpc/comptes', AccountsIBANPage)
history = URL('rop-wspl/rest/releveOp', HistoryPage)
@ -81,6 +83,8 @@ class BNPParibasBrowser(CompatMixin, JsonBrowserMixin, LoginBrowser):
self.login.go(timestamp=timestamp())
if self.login.is_here():
self.page.login(self.username, self.password)
if self.con_threshold.is_here():
raise BrowserPasswordExpired(u'Vous avez atteint le seuil de 100 connexions avec le même code secret. Par mesure de sécurité, veuillez le changer.')
@need_login
def get_accounts_list(self):

View file

@ -23,7 +23,7 @@ from cStringIO import StringIO
from random import randint
from decimal import Decimal
from weboob.browser.pages import JsonPage, LoggedPage
from weboob.browser.pages import JsonPage, LoggedPage, HTMLPage
from weboob.tools.captcha.virtkeyboard import GridVirtKeyboard
from weboob.capabilities.bank import Account
from weboob.tools.capabilities.bank.transactions import FrenchTransaction
@ -32,6 +32,9 @@ from weboob.tools.json import json
from weboob.tools.date import parse_french_date as Date
class ConnectionThresholdPage(HTMLPage):
pass
def cast(x, typ, default=None):
try:
return typ(x or default)
@ -88,7 +91,7 @@ class LoginPage(JsonPage):
if error:
msg = self.get('message')
if error == 201 or error == 21510:
if error == 201 or error == 21510 or error == 203:
raise BrowserIncorrectPassword(msg)
self.logger.debug('Unexpected error at login: "%s" (code=%s)' % (msg, error))