src/eric7/WebBrowser/WebAuth/WebBrowserWebAuthDialog.py

Sat, 26 Apr 2025 12:34:32 +0200

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Sat, 26 Apr 2025 12:34:32 +0200
branch
eric7
changeset 11240
c48c615c04a3
parent 11148
15e30f0c76a8
permissions
-rw-r--r--

MicroPython
- Added a configuration option to disable the support for the no longer produced Pimoroni Pico Wireless Pack.

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

eric ide

mercurial