From 44c192874c0f3a2b7c80fd9bebfab23c906e8cad Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Axel=20P=C3=A9lerin?= Date: Fri, 31 Jul 2020 15:54:02 +0200 Subject: [PATCH] [banquepopulaire] change login url On some regional part of banque populaire, like credit maritime or banque chaix, the url may include the name of the bank in the url. Resulting of having: `https://www.icgauth.creditmaritime.groupe.banquepopulaire.fr/credit-maritime-grand-ouest-se-connecter/` instead of `https://www.icgauth.creditmaritime.groupe.banquepopulaire.fr/se-connecter/` --- modules/banquepopulaire/browser.py | 27 +++++++++++++++------------ 1 file changed, 15 insertions(+), 12 deletions(-) diff --git a/modules/banquepopulaire/browser.py b/modules/banquepopulaire/browser.py index f2491307d4..507f81b9a7 100644 --- a/modules/banquepopulaire/browser.py +++ b/modules/banquepopulaire/browser.py @@ -108,8 +108,8 @@ def wrapper(browser, *args, **kwargs): class BanquePopulaire(LoginBrowser): login_page = URL(r'https://[^/]+/auth/UI/Login.*', LoginPage) - new_login = URL(r'https://[^/]+/se-connecter/sso', NewLoginPage) - js_file = URL(r'https://[^/]+/se-connecter/main-.*.js$', JsFilePage) + new_login = URL(r'https://[^/]+/.*se-connecter/sso', NewLoginPage) + js_file = URL(r'https://[^/]+/.*se-connecter/main-.*.js$', JsFilePage) authorize = URL(r'https://www.as-ex-ath-groupe.banquepopulaire.fr/api/oauth/v2/authorize', AuthorizePage) login_tokens = URL(r'https://www.as-ex-ath-groupe.banquepopulaire.fr/api/oauth/v2/consume', LoginTokensPage) info_tokens = URL(r'https://www.as-ex-ano-groupe.banquepopulaire.fr/api/oauth/token', InfoTokensPage) @@ -294,6 +294,18 @@ def do_old_login(self): data = {'integrationMode': 'INTERNET_RESCUE'} self.location('/cyber/internet/Login.do', data=data) + def get_bpcesta(self, cdetab): + return { + 'csid': str(uuid4()), + 'typ_app': 'rest', + 'enseigne': 'bp', + 'typ_sp': 'out-band', + 'typ_act': 'auth', + 'snid': '123456', + 'cdetab': cdetab, + 'typ_srv': self.user_type, + } + def do_new_login(self): # Same login as caissedepargne url_params = parse_qs(urlparse(self.url).query) @@ -335,16 +347,7 @@ def do_new_login(self): # 'Accept': 'applcation/json'. If we do not add this header, we # instead have a form that we can directly send to complete # the login. - bpcesta = { - 'csid': str(uuid4()), - 'typ_app': 'rest', - 'enseigne': 'bp', - 'typ_sp': 'out-band', - 'typ_act': 'auth', - 'snid': '123456', - 'cdetab': cdetab, - 'typ_srv': self.user_type, - } + bpcesta = self.get_bpcesta(cdetab) claims = { 'userinfo': { 'cdetab': None, -- GitLab