From d03e9ee18122fb3262b3f973da6e58bff0973ed1 Mon Sep 17 00:00:00 2001 From: Sylvie Ye Date: Tue, 21 May 2019 13:12:29 +0200 Subject: [PATCH] [cmso] get tokens for navigation separately the old regexp was id_token=(?P[^&]+)&access_token=(?P[^&]+) and now it's access_token=(?P[^&]+)&id_token=(?P[^&]+) get tokens separately to avoid this --- modules/cmso/pro/pages.py | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/modules/cmso/pro/pages.py b/modules/cmso/pro/pages.py index 2486b0f930..31740f788c 100644 --- a/modules/cmso/pro/pages.py +++ b/modules/cmso/pro/pages.py @@ -29,7 +29,7 @@ from weboob.capabilities.bank import Account, Investment from weboob.capabilities.base import NotAvailable from weboob.tools.capabilities.bank.transactions import FrenchTransaction -from weboob.tools.compat import urljoin +from weboob.tools.compat import urljoin, parse_qsl from weboob.tools.capabilities.bank.investments import is_isin_valid @@ -284,9 +284,13 @@ def get_sso_url(self): class TokenPage(CMSOPage, UpdateTokenMixin): def on_load(self): - d = re.search(r'id_token=(?P[^&]+)&access_token=(?P[^&]+)', self.text).groupdict() - self.browser.token = d['id_token'] - self.browser.csrf = d['access_token'] + auth_query_params = re.search(r'parent\.location = ".*#(.*)";', self.text) + assert auth_query_params, 'Url query parameter with token for authentication was not found' + auth_query_params = auth_query_params.group(1) + + params = dict(parse_qsl(auth_query_params)) + self.browser.token = params['id_token'] + self.browser.csrf = params['access_token'] class AuthCheckUser(HTMLPage): -- GitLab