src/eric7/WebBrowser/WebBrowserWebAuthDialog.py

Tue, 16 Jul 2024 19:47:54 +0200

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Tue, 16 Jul 2024 19:47:54 +0200
branch
eric7
changeset 10851
5c47172bb240
parent 10847
b3f04b83fc84
permissions
-rw-r--r--

Web Browser
- Finished support for `Passkeys` (Qt >= 6.7.0) in the eric browser.

10847
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1 # -*- coding: utf-8 -*-
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
2 # Copyright (c) 2024 Detlev Offenbach <detlev@die-offenbachs.de>
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
3 #
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
4
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
5
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
6 """
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
7 Module implementing a dialog to handle the various WebAuth requests.
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
8 """
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
9
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
10 from PyQt6.QtCore import Qt, pyqtSlot
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
11 from PyQt6.QtWebEngineCore import QWebEngineWebAuthUxRequest
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
12 from PyQt6.QtWidgets import (
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
13 QButtonGroup,
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
14 QDialog,
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
15 QDialogButtonBox,
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
16 QLineEdit,
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
17 QRadioButton,
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
18 QSizePolicy,
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
19 QVBoxLayout,
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
20 )
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
21
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
22 from eric7.EricGui import EricPixmapCache
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
23
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
24 from .Ui_WebBrowserWebAuthDialog import Ui_WebBrowserWebAuthDialog
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
25
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
26
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
27 class WebBrowserWebAuthDialog(QDialog, Ui_WebBrowserWebAuthDialog):
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
28 """
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
29 Class implementing a dialog to handle the various WebAuth requests.
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
30 """
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
31
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
32 def __init__(self, uxRequest, parent=None):
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
33 """
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
34 Constructor
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
35
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
36 @param uxRequest reference to the WebAuth request object
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
37 @type QWebEngineWebAuthUxRequest
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
38 @param parent reference to the parent widget (defaults to None)
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
39 @type QWidget (optional)
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
40 """
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
41 super().__init__(parent)
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
42 self.setupUi(self)
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
43
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
44 self.__uxRequest = uxRequest
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
45
10851
5c47172bb240 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10847
diff changeset
46 self.pinButton.setIcon(EricPixmapCache.getIcon("showPassword"))
5c47172bb240 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10847
diff changeset
47
10847
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
48 self.selectAccountButtonGroup = QButtonGroup(self)
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
49 self.selectAccountButtonGroup.setExclusive(True)
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
50
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
51 self.selectAccountLayout = QVBoxLayout(self.selectAccountWidget)
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
52 self.selectAccountLayout.setAlignment(Qt.AlignmentFlag.AlignTop)
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
53
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
54 self.buttonBox.accepted.connect(self.__acceptRequest)
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
55 self.buttonBox.rejected.connect(self.__cancelRequest)
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
56 self.buttonBox.button(QDialogButtonBox.StandardButton.Retry).clicked.connect(
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
57 self.__retry
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
58 )
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
59
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
60 self.updateDialog()
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
61
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
62 self.setSizePolicy(QSizePolicy.Policy.Fixed, QSizePolicy.Policy.Expanding)
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
63
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
64 @pyqtSlot(str)
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
65 def on_pinEdit_textEdited(self, pin):
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
66 """
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
67 Private slot handling entering a PIN.
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
68
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
69 @param pin entered PIN
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
70 @type str
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
71 """
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
72 self.confirmPinErrorLabel.setVisible(
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
73 self.confirmPinEdit.isVisible() and pin != self.confirmPinEdit.text()
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
74 )
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
75 self.buttonBox.button(QDialogButtonBox.StandardButton.Ok).setEnabled(
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
76 (self.confirmPinEdit.isVisible() and pin == self.confirmPinEdit.text())
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
77 or not self.confirmPinEdit.isVisible()
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
78 )
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
79
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
80 @pyqtSlot(bool)
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
81 def on_pinButton_toggled(self, checked):
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
82 """
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
83 Private slot to handle the toggling of the PIN visibility.
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
84
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
85 @param checked state of the PIN visibility button
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
86 @type bool
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
87 """
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
88 pinRequestInfo = self.__uxRequest.pinRequest()
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
89
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
90 if checked:
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
91 self.pinButton.setIcon(EricPixmapCache.getIcon("hidePassword"))
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
92 self.pinEdit.setEchoMode(QLineEdit.EchoMode.Normal)
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
93 else:
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
94 self.pinButton.setIcon(EricPixmapCache.getIcon("showPassword"))
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
95 self.pinEdit.setEchoMode(QLineEdit.EchoMode.Password)
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
96
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
97 if pinRequestInfo.reason != QWebEngineWebAuthUxRequest.PinEntryReason.Challenge:
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
98 self.confirmPinLabel.setVisible(not checked)
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
99 self.confirmPinEdit.setVisible(not checked)
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
100 self.on_pinEdit_textEdited(self.pinEdit.text())
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
101
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
102 @pyqtSlot(str)
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
103 def on_confirmPinEdit_textEdited(self, pin):
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
104 """
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
105 Private slot handling entering of a confirmation PIN.
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
106
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
107 @param pin entered confirmation PIN
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
108 @type str
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
109 """
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
110 self.confirmPinErrorLabel.setVisible(pin != self.pinEdit.text())
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
111 self.buttonBox.button(QDialogButtonBox.StandardButton.Ok).setEnabled(
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
112 pin == self.confirmPinEdit.text()
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
113 )
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
114
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
115 @pyqtSlot()
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
116 def __acceptRequest(self):
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
117 """
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
118 Private slot to accept the WebAuth request.
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
119 """
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
120 requestState = self.__uxRequest.state()
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
121 if requestState == QWebEngineWebAuthUxRequest.WebAuthUxState.SelectAccount:
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
122 checkedButton = self.selectAccountButtonGroup.checkedButton()
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
123 if checkedButton:
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
124 self.__uxRequest.setSelectedAccount(checkedButton.text())
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
125 elif requestState == QWebEngineWebAuthUxRequest.WebAuthUxState.CollectPin:
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
126 self.__uxRequest.setPin(self.pinEdit.text())
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
127
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
128 @pyqtSlot()
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
129 def __cancelRequest(self):
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
130 """
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
131 Private slot to cancel the WebAuth request.
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
132 """
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
133 self.__uxRequest.cancel()
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
134
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
135 @pyqtSlot()
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
136 def __retry(self):
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
137 """
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
138 Private slot to retry the WebAuth request.
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
139 """
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
140 self.__uxRequest.retry()
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
141
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
142 @pyqtSlot()
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
143 def updateDialog(self):
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
144 """
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
145 Public slot to update the dialog depending on the current WebAuth request state.
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
146 """
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
147 requestState = self.__uxRequest.state()
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
148 if requestState == QWebEngineWebAuthUxRequest.WebAuthUxState.SelectAccount:
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
149 self.__setupSelectAccountUi()
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
150 elif requestState == QWebEngineWebAuthUxRequest.WebAuthUxState.CollectPin:
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
151 self.__setupCollectPinUi()
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
152 elif (
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
153 requestState
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
154 == QWebEngineWebAuthUxRequest.WebAuthUxState.FinishTokenCollection
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
155 ):
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
156 self.__setupFinishCollectTokenUi()
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
157 elif requestState == QWebEngineWebAuthUxRequest.WebAuthUxState.RequestFailed:
10851
5c47172bb240 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10847
diff changeset
158 self.__setupErrorUi()
10847
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
159
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
160 self.adjustSize()
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
161
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
162 def __setupSelectAccountUi(self):
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
163 """
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
164 Private method to configure the 'Select Account' UI.
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
165 """
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
166 self.__clearSelectAccountButtons()
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
167
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
168 self.headerLabel.setText(self.tr("<b>Choose Passkey</b>"))
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
169 self.descriptionLabel.setText(
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
170 self.tr("Which passkey do you want to use for {0}?").format(
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
171 self.__uxRequest.relyingPartyId()
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
172 )
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
173 )
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
174 self.pinGroupBox.setVisible(False)
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
175
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
176 self.selectAccountArea.setVisible(True)
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
177 self.selectAccountWidget.resize(self.width(), self.height())
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
178 userNames = self.__uxRequest.userNames()
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
179 for name in sorted(userNames):
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
180 button = QRadioButton(name)
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
181 self.selectAccountLayout.addWidget(button)
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
182 self.selectAccountButtonGroup.addButton(button)
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
183 if len(userNames) == 1:
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
184 # nothing to select from, select the one and only button
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
185 self.selectAccountButtonGroup.buttons()[0].setChecked(True)
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
186
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
187 self.buttonBox.button(QDialogButtonBox.StandardButton.Ok).setText(self.tr("Ok"))
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
188 self.buttonBox.button(QDialogButtonBox.StandardButton.Ok).setVisible(True)
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
189 self.buttonBox.button(QDialogButtonBox.StandardButton.Cancel).setVisible(True)
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
190 self.buttonBox.button(QDialogButtonBox.StandardButton.Retry).setVisible(False)
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
191
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
192 def __setupCollectPinUi(self):
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
193 """
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
194 Private method to configure the 'Collect PIN' UI.
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
195 """
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
196 self.__clearSelectAccountButtons()
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
197
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
198 self.selectAccountArea.setVisible(False)
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
199
10851
5c47172bb240 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10847
diff changeset
200 self.pinGroupBox.setVisible(True)
10847
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
201 self.confirmPinLabel.setVisible(False)
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
202 self.confirmPinEdit.setVisible(False)
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
203 self.confirmPinErrorLabel.setVisible(False)
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
204
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
205 self.buttonBox.button(QDialogButtonBox.StandardButton.Ok).setText(
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
206 self.tr("Next")
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
207 )
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
208 self.buttonBox.button(QDialogButtonBox.StandardButton.Ok).setVisible(True)
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
209 self.buttonBox.button(QDialogButtonBox.StandardButton.Cancel).setVisible(True)
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
210 self.buttonBox.button(QDialogButtonBox.StandardButton.Retry).setVisible(False)
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
211
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
212 pinRequestInfo = self.__uxRequest.pinRequest()
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
213 if pinRequestInfo.reason == QWebEngineWebAuthUxRequest.PinEntryReason.Challenge:
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
214 self.headerLabel.setText(self.tr("<b>PIN Required</b>"))
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
215 self.descriptionLabel.setText(
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
216 self.tr("Enter the PIN for your security key.")
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
217 )
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
218 else:
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
219 if pinRequestInfo.reason == QWebEngineWebAuthUxRequest.PinEntryReason.Set:
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
220 self.headerLabel.setText(self.tr("<b>New PIN Required</b>"))
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
221 self.descriptionLabel.setText(
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
222 self.tr("Set new PIN for your security key.")
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
223 )
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
224 else:
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
225 self.headerLabel.setText(self.tr("<b>PIN Change Required</b>"))
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
226 self.descriptionLabel.setText(
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
227 self.tr("Change the PIN for your security key.")
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
228 )
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
229 self.confirmPinLabel.setVisible(True)
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
230 self.confirmPinEdit.setVisible(True)
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
231
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
232 errorDetails = ""
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
233 if (
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
234 pinRequestInfo.error
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
235 == QWebEngineWebAuthUxRequest.PinEntryError.InternalUvLocked
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
236 ):
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
237 errorDetails = self.tr("Internal User Verification Locked!")
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
238 elif pinRequestInfo.error == QWebEngineWebAuthUxRequest.PinEntryError.WrongPin:
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
239 errorDetails = self.tr("Wrong PIN!")
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
240 elif pinRequestInfo.error == QWebEngineWebAuthUxRequest.PinEntryError.TooShort:
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
241 errorDetails = self.tr("PIN Too Short!")
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
242 elif (
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
243 pinRequestInfo.error
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
244 == QWebEngineWebAuthUxRequest.PinEntryError.InvalidCharacters
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
245 ):
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
246 errorDetails = self.tr("PIN Contains Invalid Characters!")
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
247 elif (
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
248 pinRequestInfo.error
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
249 == QWebEngineWebAuthUxRequest.PinEntryError.SameAsCurrentPin
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
250 ):
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
251 errorDetails = self.tr("New PIN is same as current PIN!")
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
252 if errorDetails:
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
253 errorDetails = self.tr(
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
254 "{0} %n attempt(s) remaining.", "", pinRequestInfo.remainingAttempts
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
255 ).format(errorDetails)
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
256 self.pinErrorLabel.setText(errorDetails)
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
257
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
258 def __setupFinishCollectTokenUi(self):
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
259 """
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
260 Private method to configure the 'Finish Collect Token' UI.
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
261 """
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
262 self.__clearSelectAccountButtons()
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
263
10851
5c47172bb240 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10847
diff changeset
264 self.headerLabel.setText(
5c47172bb240 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10847
diff changeset
265 self.tr("<b>Use your security key with {0}</b>").format(
5c47172bb240 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10847
diff changeset
266 self.__uxRequest.relyingPartyId()
5c47172bb240 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10847
diff changeset
267 )
5c47172bb240 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10847
diff changeset
268 )
10847
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
269 self.descriptionLabel.setText(
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
270 self.tr("Touch your security key to complete the request.")
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
271 )
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
272 self.pinGroupBox.setVisible(False)
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
273
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
274 self.selectAccountArea.setVisible(False)
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
275
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
276 self.buttonBox.button(QDialogButtonBox.StandardButton.Ok).setVisible(False)
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
277 self.buttonBox.button(QDialogButtonBox.StandardButton.Cancel).setVisible(True)
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
278 self.buttonBox.button(QDialogButtonBox.StandardButton.Retry).setVisible(False)
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
279
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
280 def __setupErrorUi(self):
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
281 """
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
282 Private method to configure the 'Error' UI.
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
283 """
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
284 self.__clearSelectAccountButtons()
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
285
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
286 errorMsg = ""
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
287 retryVisible = False
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
288
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
289 requestFailureReason = self.__uxRequest.requestFailureReason()
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
290 if (
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
291 requestFailureReason
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
292 == QWebEngineWebAuthUxRequest.RequestFailureReason.Timeout
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
293 ):
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
294 errorMsg = self.tr("Request Timeout")
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
295 elif (
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
296 requestFailureReason
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
297 == QWebEngineWebAuthUxRequest.RequestFailureReason.KeyNotRegistered
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
298 ):
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
299 errorMsg = self.tr("Security key is not registered.")
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
300 elif (
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
301 requestFailureReason
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
302 == QWebEngineWebAuthUxRequest.RequestFailureReason.KeyAlreadyRegistered
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
303 ):
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
304 errorMsg = self.tr(
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
305 "You already registered this security key. Try again with another"
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
306 " security key."
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
307 )
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
308 retryVisible = True
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
309 elif (
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
310 requestFailureReason
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
311 == QWebEngineWebAuthUxRequest.RequestFailureReason.SoftPinBlock
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
312 ):
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
313 errorMsg = self.tr(
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
314 "The security key is locked because the wrong PIN was entered too"
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
315 " many times. To unlock it, remove and reinsert it."
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
316 )
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
317 retryVisible = True
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
318 elif (
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
319 requestFailureReason
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
320 == QWebEngineWebAuthUxRequest.RequestFailureReason.HardPinBlock
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
321 ):
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
322 errorMsg = self.tr(
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
323 "The security key is locked because the wrong PIN was entered too"
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
324 " many times. You will need to reset the security key."
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
325 )
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
326 elif (
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
327 requestFailureReason
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
328 == QWebEngineWebAuthUxRequest.RequestFailureReason.AuthenticatorRemovedDuringPinEntry # noqa: E501
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
329 ):
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
330 errorMsg = self.tr(
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
331 "Security key removed during verification. Please reinsert and try"
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
332 " again."
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
333 )
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
334 elif (
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
335 requestFailureReason
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
336 == QWebEngineWebAuthUxRequest.RequestFailureReason.AuthenticatorMissingResidentKeys # noqa: E501
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
337 ):
10851
5c47172bb240 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10847
diff changeset
338 errorMsg = self.tr("Security key does not have resident key support.")
10847
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
339 elif (
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
340 requestFailureReason
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
341 == QWebEngineWebAuthUxRequest.RequestFailureReason.AuthenticatorMissingUserVerification # noqa: E501
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
342 ):
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
343 errorMsg = self.tr("Security key is missing user verification.")
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
344 elif (
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
345 requestFailureReason
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
346 == QWebEngineWebAuthUxRequest.RequestFailureReason.AuthenticatorMissingLargeBlob # noqa: E501
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
347 ):
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
348 errorMsg = self.tr("Security key is missing Large Blob support.")
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
349 elif (
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
350 requestFailureReason
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
351 == QWebEngineWebAuthUxRequest.RequestFailureReason.NoCommonAlgorithms
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
352 ):
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
353 errorMsg = self.tr("Security key does not provide a common algorithm.")
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
354 elif (
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
355 requestFailureReason
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
356 == QWebEngineWebAuthUxRequest.RequestFailureReason.StorageFull
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
357 ):
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
358 errorMsg = self.tr("No storage space left on the security key.")
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
359 elif (
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
360 requestFailureReason
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
361 == QWebEngineWebAuthUxRequest.RequestFailureReason.UserConsentDenied
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
362 ):
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
363 errorMsg = self.tr("User consent denied.")
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
364 elif (
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
365 requestFailureReason
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
366 == QWebEngineWebAuthUxRequest.RequestFailureReason.WinUserCancelled
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
367 ):
10851
5c47172bb240 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10847
diff changeset
368 errorMsg = self.tr("User canceled the WebAuth request.")
10847
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
369
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
370 self.headerLabel.setText(self.tr("<b>Something went wrong</b>"))
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
371 self.descriptionLabel.setText(errorMsg)
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
372 self.descriptionLabel.adjustSize()
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
373
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
374 self.pinGroupBox.setVisible(False)
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
375 self.selectAccountArea.setVisible(False)
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
376
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
377 self.buttonBox.button(QDialogButtonBox.StandardButton.Ok).setVisible(False)
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
378 self.buttonBox.button(QDialogButtonBox.StandardButton.Cancel).setVisible(True)
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
379 self.buttonBox.button(QDialogButtonBox.StandardButton.Cancel).setText(
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
380 self.tr("Close")
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
381 )
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
382 self.buttonBox.button(QDialogButtonBox.StandardButton.Retry).setVisible(
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
383 retryVisible
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
384 )
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
385 if retryVisible:
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
386 self.buttonBox.button(QDialogButtonBox.StandardButton.Retry).setFocus()
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
387
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
388 def __clearSelectAccountButtons(self):
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
389 """
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
390 Private method to remove the account selection buttons.
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
391 """
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
392 for button in self.selectAccountButtonGroup.buttons():
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
393 self.selectAccountLayout.removeWidget(button)
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
394 self.selectAccountButtonGroup.removeButton(button)

eric ide

mercurial