src/eric7/WebBrowser/WebAuth/WebBrowserWebAuthDialog.py

Wed, 17 Jul 2024 16:48:46 +0200

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Wed, 17 Jul 2024 16:48:46 +0200
branch
eric7
changeset 10852
65ee5eba7b10
parent 10851
src/eric7/WebBrowser/WebBrowserWebAuthDialog.py@5c47172bb240
child 10854
30c45bd597e6
permissions
-rw-r--r--

Reorganized and fixed the WebAuth related dialog and moved it in a new package.

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
10852
65ee5eba7b10 Reorganized and fixed the WebAuth related dialog and moved it in a new package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10851
diff changeset
80 self.adjustSize()
65ee5eba7b10 Reorganized and fixed the WebAuth related dialog and moved it in a new package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10851
diff changeset
81
10847
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
82 @pyqtSlot(bool)
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
83 def on_pinButton_toggled(self, checked):
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 Private slot to handle the toggling of the PIN visibility.
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
86
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
87 @param checked state of the PIN visibility button
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
88 @type bool
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 pinRequestInfo = self.__uxRequest.pinRequest()
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
91
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
92 if checked:
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
93 self.pinButton.setIcon(EricPixmapCache.getIcon("hidePassword"))
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
94 self.pinEdit.setEchoMode(QLineEdit.EchoMode.Normal)
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
95 else:
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
96 self.pinButton.setIcon(EricPixmapCache.getIcon("showPassword"))
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
97 self.pinEdit.setEchoMode(QLineEdit.EchoMode.Password)
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
98
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
99 if pinRequestInfo.reason != QWebEngineWebAuthUxRequest.PinEntryReason.Challenge:
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
100 self.confirmPinLabel.setVisible(not checked)
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
101 self.confirmPinEdit.setVisible(not checked)
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
102 self.on_pinEdit_textEdited(self.pinEdit.text())
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
103
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
104 @pyqtSlot(str)
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
105 def on_confirmPinEdit_textEdited(self, 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 Private slot handling entering of a confirmation PIN.
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
108
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
109 @param pin entered confirmation PIN
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
110 @type str
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 self.confirmPinErrorLabel.setVisible(pin != self.pinEdit.text())
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
113 self.buttonBox.button(QDialogButtonBox.StandardButton.Ok).setEnabled(
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
114 pin == self.confirmPinEdit.text()
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
10852
65ee5eba7b10 Reorganized and fixed the WebAuth related dialog and moved it in a new package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10851
diff changeset
117 self.adjustSize()
65ee5eba7b10 Reorganized and fixed the WebAuth related dialog and moved it in a new package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10851
diff changeset
118
10847
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
119 @pyqtSlot()
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
120 def __acceptRequest(self):
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
121 """
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
122 Private slot to accept the WebAuth request.
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
123 """
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
124 requestState = self.__uxRequest.state()
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
125 if requestState == QWebEngineWebAuthUxRequest.WebAuthUxState.SelectAccount:
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
126 checkedButton = self.selectAccountButtonGroup.checkedButton()
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
127 if checkedButton:
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
128 self.__uxRequest.setSelectedAccount(checkedButton.text())
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
129 elif requestState == QWebEngineWebAuthUxRequest.WebAuthUxState.CollectPin:
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
130 self.__uxRequest.setPin(self.pinEdit.text())
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 @pyqtSlot()
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
133 def __cancelRequest(self):
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 Private slot to cancel the WebAuth request.
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
136 """
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
137 self.__uxRequest.cancel()
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
138
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
139 @pyqtSlot()
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
140 def __retry(self):
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 Private slot to retry the WebAuth request.
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
143 """
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
144 self.__uxRequest.retry()
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 @pyqtSlot()
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
147 def updateDialog(self):
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
148 """
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
149 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
150 """
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
151 requestState = self.__uxRequest.state()
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
152 if requestState == QWebEngineWebAuthUxRequest.WebAuthUxState.SelectAccount:
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
153 self.__setupSelectAccountUi()
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
154 elif requestState == QWebEngineWebAuthUxRequest.WebAuthUxState.CollectPin:
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
155 self.__setupCollectPinUi()
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
156 elif (
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
157 requestState
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
158 == QWebEngineWebAuthUxRequest.WebAuthUxState.FinishTokenCollection
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.__setupFinishCollectTokenUi()
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
161 elif requestState == QWebEngineWebAuthUxRequest.WebAuthUxState.RequestFailed:
10851
5c47172bb240 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10847
diff changeset
162 self.__setupErrorUi()
10847
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 self.adjustSize()
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 def __setupSelectAccountUi(self):
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 Private method to configure the 'Select Account' UI.
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.__clearSelectAccountButtons()
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
171
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
172 self.headerLabel.setText(self.tr("<b>Choose Passkey</b>"))
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
173 self.descriptionLabel.setText(
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
174 self.tr("Which passkey do you want to use for {0}?").format(
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
175 self.__uxRequest.relyingPartyId()
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
176 )
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.pinGroupBox.setVisible(False)
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
179
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
180 self.selectAccountArea.setVisible(True)
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
181 self.selectAccountWidget.resize(self.width(), self.height())
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
182 userNames = self.__uxRequest.userNames()
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
183 for name in sorted(userNames):
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
184 button = QRadioButton(name)
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
185 self.selectAccountLayout.addWidget(button)
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
186 self.selectAccountButtonGroup.addButton(button)
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
187 if len(userNames) == 1:
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
188 # nothing to select from, select the one and only button
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
189 self.selectAccountButtonGroup.buttons()[0].setChecked(True)
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
190
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
191 self.buttonBox.button(QDialogButtonBox.StandardButton.Ok).setText(self.tr("Ok"))
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
192 self.buttonBox.button(QDialogButtonBox.StandardButton.Ok).setVisible(True)
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
193 self.buttonBox.button(QDialogButtonBox.StandardButton.Cancel).setVisible(True)
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
194 self.buttonBox.button(QDialogButtonBox.StandardButton.Retry).setVisible(False)
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
195
10852
65ee5eba7b10 Reorganized and fixed the WebAuth related dialog and moved it in a new package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10851
diff changeset
196 if len(userNames) > 1:
65ee5eba7b10 Reorganized and fixed the WebAuth related dialog and moved it in a new package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10851
diff changeset
197 self.selectAccountButtonGroup.buttons()[0].setFocus(
65ee5eba7b10 Reorganized and fixed the WebAuth related dialog and moved it in a new package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10851
diff changeset
198 Qt.FocusReason.OtherFocusReason
65ee5eba7b10 Reorganized and fixed the WebAuth related dialog and moved it in a new package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10851
diff changeset
199 )
65ee5eba7b10 Reorganized and fixed the WebAuth related dialog and moved it in a new package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10851
diff changeset
200 else:
65ee5eba7b10 Reorganized and fixed the WebAuth related dialog and moved it in a new package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10851
diff changeset
201 self.buttonBox.button(QDialogButtonBox.StandardButton.Ok).setFocus(
65ee5eba7b10 Reorganized and fixed the WebAuth related dialog and moved it in a new package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10851
diff changeset
202 Qt.FocusReason.OtherFocusReason
65ee5eba7b10 Reorganized and fixed the WebAuth related dialog and moved it in a new package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10851
diff changeset
203 )
65ee5eba7b10 Reorganized and fixed the WebAuth related dialog and moved it in a new package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10851
diff changeset
204
10847
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
205 def __setupCollectPinUi(self):
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
206 """
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
207 Private method to configure the 'Collect PIN' UI.
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
208 """
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
209 self.__clearSelectAccountButtons()
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.selectAccountArea.setVisible(False)
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
212
10851
5c47172bb240 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10847
diff changeset
213 self.pinGroupBox.setVisible(True)
10847
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
214 self.confirmPinLabel.setVisible(False)
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
215 self.confirmPinEdit.setVisible(False)
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
216 self.confirmPinErrorLabel.setVisible(False)
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 self.buttonBox.button(QDialogButtonBox.StandardButton.Ok).setText(
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
219 self.tr("Next")
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 self.buttonBox.button(QDialogButtonBox.StandardButton.Ok).setVisible(True)
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
222 self.buttonBox.button(QDialogButtonBox.StandardButton.Cancel).setVisible(True)
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
223 self.buttonBox.button(QDialogButtonBox.StandardButton.Retry).setVisible(False)
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
224
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
225 pinRequestInfo = self.__uxRequest.pinRequest()
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
226 if pinRequestInfo.reason == QWebEngineWebAuthUxRequest.PinEntryReason.Challenge:
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
227 self.headerLabel.setText(self.tr("<b>PIN Required</b>"))
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
228 self.descriptionLabel.setText(
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
229 self.tr("Enter the PIN for your security key.")
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
230 )
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
231 else:
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
232 if pinRequestInfo.reason == QWebEngineWebAuthUxRequest.PinEntryReason.Set:
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
233 self.headerLabel.setText(self.tr("<b>New PIN Required</b>"))
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
234 self.descriptionLabel.setText(
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
235 self.tr("Set new PIN for your security key.")
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 else:
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
238 self.headerLabel.setText(self.tr("<b>PIN Change Required</b>"))
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
239 self.descriptionLabel.setText(
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
240 self.tr("Change the PIN for your security key.")
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
241 )
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
242 self.confirmPinLabel.setVisible(True)
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
243 self.confirmPinEdit.setVisible(True)
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
244
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
245 errorDetails = ""
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
246 if (
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
247 pinRequestInfo.error
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
248 == QWebEngineWebAuthUxRequest.PinEntryError.InternalUvLocked
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
249 ):
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
250 errorDetails = self.tr("Internal User Verification Locked!")
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
251 elif pinRequestInfo.error == QWebEngineWebAuthUxRequest.PinEntryError.WrongPin:
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
252 errorDetails = self.tr("Wrong PIN!")
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
253 elif pinRequestInfo.error == QWebEngineWebAuthUxRequest.PinEntryError.TooShort:
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
254 errorDetails = self.tr("PIN Too Short!")
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
255 elif (
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
256 pinRequestInfo.error
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
257 == QWebEngineWebAuthUxRequest.PinEntryError.InvalidCharacters
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
258 ):
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
259 errorDetails = self.tr("PIN Contains Invalid Characters!")
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
260 elif (
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
261 pinRequestInfo.error
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
262 == QWebEngineWebAuthUxRequest.PinEntryError.SameAsCurrentPin
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
263 ):
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
264 errorDetails = self.tr("New PIN is same as current PIN!")
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
265 if errorDetails:
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
266 errorDetails = self.tr(
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
267 "{0} %n attempt(s) remaining.", "", pinRequestInfo.remainingAttempts
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
268 ).format(errorDetails)
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
269 self.pinErrorLabel.setText(errorDetails)
10852
65ee5eba7b10 Reorganized and fixed the WebAuth related dialog and moved it in a new package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10851
diff changeset
270 self.pinErrorLabel.setVisible(bool(errorDetails))
65ee5eba7b10 Reorganized and fixed the WebAuth related dialog and moved it in a new package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10851
diff changeset
271
65ee5eba7b10 Reorganized and fixed the WebAuth related dialog and moved it in a new package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10851
diff changeset
272 self.pinEdit.setFocus(Qt.FocusReason.OtherFocusReason)
10847
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 def __setupFinishCollectTokenUi(self):
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 Private method to configure the 'Finish Collect Token' UI.
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
277 """
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
278 self.__clearSelectAccountButtons()
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
279
10851
5c47172bb240 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10847
diff changeset
280 self.headerLabel.setText(
5c47172bb240 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10847
diff changeset
281 self.tr("<b>Use your security key with {0}</b>").format(
5c47172bb240 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10847
diff changeset
282 self.__uxRequest.relyingPartyId()
5c47172bb240 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10847
diff changeset
283 )
5c47172bb240 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10847
diff changeset
284 )
10847
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
285 self.descriptionLabel.setText(
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
286 self.tr("Touch your security key to complete the request.")
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
287 )
10852
65ee5eba7b10 Reorganized and fixed the WebAuth related dialog and moved it in a new package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10851
diff changeset
288
10847
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
289 self.pinGroupBox.setVisible(False)
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
290 self.selectAccountArea.setVisible(False)
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
291
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
292 self.buttonBox.button(QDialogButtonBox.StandardButton.Ok).setVisible(False)
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
293 self.buttonBox.button(QDialogButtonBox.StandardButton.Cancel).setVisible(True)
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
294 self.buttonBox.button(QDialogButtonBox.StandardButton.Retry).setVisible(False)
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
295
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
296 def __setupErrorUi(self):
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
297 """
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
298 Private method to configure the 'Error' UI.
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 self.__clearSelectAccountButtons()
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
301
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
302 errorMsg = ""
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
303 retryVisible = False
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 requestFailureReason = self.__uxRequest.requestFailureReason()
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
306 if (
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
307 requestFailureReason
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
308 == QWebEngineWebAuthUxRequest.RequestFailureReason.Timeout
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
309 ):
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
310 errorMsg = self.tr("Request Timeout")
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
311 elif (
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
312 requestFailureReason
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
313 == QWebEngineWebAuthUxRequest.RequestFailureReason.KeyNotRegistered
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
314 ):
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
315 errorMsg = self.tr("Security key is not registered.")
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
316 elif (
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
317 requestFailureReason
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
318 == QWebEngineWebAuthUxRequest.RequestFailureReason.KeyAlreadyRegistered
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
319 ):
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
320 errorMsg = self.tr(
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
321 "You already registered this security key. Try again with another"
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
322 " security key."
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
323 )
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
324 retryVisible = True
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
325 elif (
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
326 requestFailureReason
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
327 == QWebEngineWebAuthUxRequest.RequestFailureReason.SoftPinBlock
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
328 ):
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
329 errorMsg = self.tr(
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
330 "The security key is locked because the wrong PIN was entered too"
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
331 " many times. To unlock it, remove and reinsert it."
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
332 )
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
333 retryVisible = True
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.HardPinBlock
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
337 ):
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
338 errorMsg = self.tr(
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
339 "The security key is locked because the wrong PIN was entered too"
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
340 " many times. You will need to reset the security key."
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
341 )
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
342 elif (
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
343 requestFailureReason
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
344 == QWebEngineWebAuthUxRequest.RequestFailureReason.AuthenticatorRemovedDuringPinEntry # noqa: E501
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
345 ):
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
346 errorMsg = self.tr(
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
347 "Security key removed during verification. Please reinsert and try"
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
348 " again."
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
349 )
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.AuthenticatorMissingResidentKeys # noqa: E501
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
353 ):
10851
5c47172bb240 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10847
diff changeset
354 errorMsg = self.tr("Security key does not have resident key support.")
10847
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.AuthenticatorMissingUserVerification # noqa: E501
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("Security key is missing user verification.")
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.AuthenticatorMissingLargeBlob # noqa: E501
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("Security key is missing Large Blob support.")
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.NoCommonAlgorithms
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("Security key does not provide a common algorithm.")
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
370 elif (
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
371 requestFailureReason
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
372 == QWebEngineWebAuthUxRequest.RequestFailureReason.StorageFull
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 errorMsg = self.tr("No storage space left on the security key.")
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
375 elif (
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
376 requestFailureReason
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
377 == QWebEngineWebAuthUxRequest.RequestFailureReason.UserConsentDenied
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
378 ):
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
379 errorMsg = self.tr("User consent denied.")
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
380 elif (
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
381 requestFailureReason
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
382 == QWebEngineWebAuthUxRequest.RequestFailureReason.WinUserCancelled
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
383 ):
10851
5c47172bb240 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10847
diff changeset
384 errorMsg = self.tr("User canceled the WebAuth request.")
10847
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 self.headerLabel.setText(self.tr("<b>Something went wrong</b>"))
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
387 self.descriptionLabel.setText(errorMsg)
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
388 self.descriptionLabel.adjustSize()
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 self.pinGroupBox.setVisible(False)
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
391 self.selectAccountArea.setVisible(False)
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 self.buttonBox.button(QDialogButtonBox.StandardButton.Ok).setVisible(False)
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
394 self.buttonBox.button(QDialogButtonBox.StandardButton.Cancel).setVisible(True)
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
395 self.buttonBox.button(QDialogButtonBox.StandardButton.Cancel).setText(
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
396 self.tr("Close")
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
397 )
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
398 self.buttonBox.button(QDialogButtonBox.StandardButton.Retry).setVisible(
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
399 retryVisible
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
400 )
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
401 if retryVisible:
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
402 self.buttonBox.button(QDialogButtonBox.StandardButton.Retry).setFocus()
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
403
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
404 def __clearSelectAccountButtons(self):
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
405 """
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
406 Private method to remove the account selection buttons.
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
407 """
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
408 for button in self.selectAccountButtonGroup.buttons():
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
409 self.selectAccountLayout.removeWidget(button)
b3f04b83fc84 Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
410 self.selectAccountButtonGroup.removeButton(button)

eric ide

mercurial