diff --git a/modules/cmso/pro/pages.py b/modules/cmso/pro/pages.py index 2486b0f93065c77d34285351dca7a374edb67897..31740f788cbd0dccab702559471d031dc9ab146e 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):