WebBrowser/Passwords/PasswordManager.py

branch
QtWebEngine
changeset 4749
750577d35452
parent 4744
ad3f6c1caf8d
child 4751
f745a556fd6f
equal deleted inserted replaced
4745:285bfd224a1b 4749:750577d35452
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()

eric ide

mercurial