src/eric7/WebBrowser/WebBrowserWebAuthDialog.py

Mon, 15 Jul 2024 16:38:58 +0200

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Mon, 15 Jul 2024 16:38:58 +0200
branch
eric7
changeset 10847
b3f04b83fc84
child 10851
5c47172bb240
permissions
-rw-r--r--

Web Browser
- Started adding support for `Passkeys` (Qt >= 6.7.0).

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

eric ide

mercurial