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