266 @param password user password |
266 @param password user password |
267 @type str |
267 @type str |
268 @param data data to be submitted |
268 @param data data to be submitted |
269 @type QByteArray |
269 @type QByteArray |
270 @param page reference to the calling page |
270 @param page reference to the calling page |
271 @type QWrbEnginePage |
271 @type QWebEnginePage |
272 """ |
272 """ |
273 # shall passwords be saved? |
273 # shall passwords be saved? |
274 if not Preferences.getUser("SavePasswords"): |
274 if not Preferences.getUser("SavePasswords"): |
275 return |
275 return |
276 |
276 |
277 if WebBrowser.WebBrowserWindow.WebBrowserWindow.mainWindow()\ |
277 if WebBrowser.WebBrowserWindow.WebBrowserWindow.mainWindow()\ |
278 .isPrivate(): |
278 .isPrivate(): |
279 return |
279 return |
|
280 |
|
281 if not self.__loaded: |
|
282 self.__load() |
280 |
283 |
281 if urlStr in self.__never: |
284 if urlStr in self.__never: |
282 return |
285 return |
283 |
286 |
284 if userName and password: |
287 if userName and password: |
313 Utilities.crypto.pwConvert(password, encode=True)) |
316 Utilities.crypto.pwConvert(password, encode=True)) |
314 from .LoginForm import LoginForm |
317 from .LoginForm import LoginForm |
315 form = LoginForm() |
318 form = LoginForm() |
316 form.url = url |
319 form.url = url |
317 form.name = userName |
320 form.name = userName |
318 form.postData = QByteArray(data) |
321 form.postData = Utilities.crypto.pwConvert( |
|
322 bytes(data).decode("utf-8"), encode=True) |
|
323 ## form.postData = QByteArray(data) |
319 self.__loginForms[key] = form |
324 self.__loginForms[key] = form |
320 self.changed.emit() |
325 self.changed.emit() |
321 |
326 |
322 def __stripUrl(self, url): |
327 def __stripUrl(self, url): |
323 """ |
328 """ |
359 |
364 |
360 form = self.__loginForms[key] |
365 form = self.__loginForms[key] |
361 if form.url != url: |
366 if form.url != url: |
362 return |
367 return |
363 |
368 |
364 script = Scripts.completeFormData(form.postData) |
369 postData = QByteArray(Utilities.crypto.pwConvert( |
|
370 form.postData, encode=False).encode("utf-8")) |
|
371 script = Scripts.completeFormData(postData) |
365 page.runJavaScript(script) |
372 page.runJavaScript(script) |
366 |
373 |
367 def masterPasswordChanged(self, oldPassword, newPassword): |
374 def masterPasswordChanged(self, oldPassword, newPassword): |
368 """ |
375 """ |
369 Public slot to handle the change of the master password. |
376 Public slot to handle the change of the master password. |
372 @param newPassword new master password (string) |
379 @param newPassword new master password (string) |
373 """ |
380 """ |
374 if not self.__loaded: |
381 if not self.__loaded: |
375 self.__load() |
382 self.__load() |
376 |
383 |
|
384 # TODO: change this to include postData |
377 progress = E5ProgressDialog( |
385 progress = E5ProgressDialog( |
378 self.tr("Re-encoding saved passwords..."), |
386 self.tr("Re-encoding saved passwords..."), |
379 None, 0, len(self.__logins), self.tr("%v/%m Passwords"), |
387 None, 0, len(self.__logins) + len(self.__loginForms), |
|
388 self.tr("%v/%m Passwords"), |
380 QApplication.activeModalWidget()) |
389 QApplication.activeModalWidget()) |
381 progress.setMinimumDuration(0) |
390 progress.setMinimumDuration(0) |
382 progress.setWindowTitle(self.tr("Passwords")) |
391 progress.setWindowTitle(self.tr("Passwords")) |
383 count = 0 |
392 count = 0 |
384 |
393 |
|
394 # step 1: do the logins |
385 for key in self.__logins: |
395 for key in self.__logins: |
386 progress.setValue(count) |
396 progress.setValue(count) |
387 QCoreApplication.processEvents() |
397 QCoreApplication.processEvents() |
388 username, hash = self.__logins[key] |
398 username, hash = self.__logins[key] |
389 hash = Utilities.crypto.pwRecode(hash, oldPassword, newPassword) |
399 hash = Utilities.crypto.pwRecode(hash, oldPassword, newPassword) |
390 self.__logins[key] = (username, hash) |
400 self.__logins[key] = (username, hash) |
391 count += 1 |
401 count += 1 |
392 |
402 |
393 progress.setValue(len(self.__logins)) |
403 # step 2: do the login forms |
|
404 for key in self.__loginForms: |
|
405 progress.setValue(count) |
|
406 QCoreApplication.processEvents() |
|
407 postData = self.__loginForms[key].postData |
|
408 postData = Utilities.crypto.pwRecode( |
|
409 postData, oldPassword, newPassword) |
|
410 self.__loginForms[key].postData = postData |
|
411 count += 1 |
|
412 |
|
413 progress.setValue(len(self.__logins) + len(self.__loginForms)) |
394 QCoreApplication.processEvents() |
414 QCoreApplication.processEvents() |
395 self.changed.emit() |
415 self.changed.emit() |