From 8f16784a985c862ebcf51fdb193b05df6d49244e Mon Sep 17 00:00:00 2001 From: Maxime Gasselin Date: Tue, 2 Apr 2019 18:40:51 +0200 Subject: [PATCH] [banquepopulaire] Fix login for some connections For some connexions login have changed. You must do the request firstly with the login and then with the password. Closes: 38991@sibi --- modules/banquepopulaire/pages.py | 23 +++++++++++++++++------ 1 file changed, 17 insertions(+), 6 deletions(-) diff --git a/modules/banquepopulaire/pages.py b/modules/banquepopulaire/pages.py index 4232785fce..2fe5c67340 100644 --- a/modules/banquepopulaire/pages.py +++ b/modules/banquepopulaire/pages.py @@ -319,7 +319,7 @@ def on_load(self): r = self.browser.open(self.request_url) doc = r.json() - self.form_id, = [(k, v[0]['id']) for k, v in doc['step']['validationUnits'][0].items() if v[0]['type'] == 'PASSWORD_LOOKUP'] + self.form_id, = [(k, v[0]['id'], v[0]['type']) for k, v in doc['step']['validationUnits'][0].items() if v[0]['type'] in ('PASSWORD_LOOKUP', 'IDENTIFIER')] def login(self, login, password): payload = { @@ -332,10 +332,22 @@ def login(self, login, password): } ] } } - url = self.request_url + '/step' - headers = {'Content-Type': 'application/json'} - r = self.browser.open(url, data=json.dumps(payload), headers=headers) + if self.form_id[2] == 'IDENTIFIER': + del payload['validate'][self.form_id[0]][0]['password'] + payload['validate'][self.form_id[0]][0]['type'] = 'IDENTIFIER' + doc = self.browser.open(url, json=payload).json() + form_id, = [(k, v[0]['id'], v[0]['type']) for k, v in doc['validationUnits'][0].items() if v[0]['type'] in ('PASSWORD',)] + payload = { + 'validate': { + form_id[0]: [{ + 'id': self.form_id[1], + 'password': password, + 'type': 'PASSWORD', + }] + } + } + r = self.browser.open(url, json=payload) doc = r.json() self.logger.debug('doc = %s', doc) @@ -349,8 +361,7 @@ def login(self, login, password): payload = {'validate': doc['validationUnits'][0]} url = self.request_url + '/step' - headers = {'Content-Type': 'application/json'} - r = self.browser.open(url, data=json.dumps(payload), headers=headers) + r = self.browser.open(url, json=payload) doc = r.json() self.logger.debug('doc = %s', doc) -- GitLab