Skip to content

Commit ba7687a

Browse files
committed
windows: disable passkeys tab w/o admin, add tooltip
1 parent 5444afc commit ba7687a

1 file changed

Lines changed: 15 additions & 1 deletion

File tree

nitrokeyapp/gui.py

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,12 +24,19 @@
2424
from nitrokeyapp.secrets_tab import SecretsTab
2525
from nitrokeyapp.settings_tab import SettingsTab
2626
from nitrokeyapp.touch import TouchIndicator
27+
from nitrokeyapp.utils import should_use_ccid
2728

2829
# import wizards and stuff
2930
from nitrokeyapp.welcome_tab import WelcomeTab
3031

3132
logger = logging.getLogger(__name__)
3233

34+
PASSKEYS_TAB_INDEX = 2
35+
PASSKEYS_ADMIN_REQUIRED_MESSAGE = (
36+
"Managing passkeys requires administrator privileges on Windows. "
37+
"Please restart the Nitrokey App as administrator to list or delete passkeys."
38+
)
39+
3340

3441
class GUI(QtUtilsMixIn, QtWidgets.QMainWindow):
3542
trigger_handle_exception = Signal(object, BaseException, object)
@@ -129,6 +136,13 @@ def __init__(self, qt_app: QtWidgets.QApplication, log_file: str):
129136
self.tabs.addTab(view.widget, view.title)
130137
self.tabs.currentChanged.connect(self.tab_changed)
131138

139+
# On Windows without admin rights, CTAPHID is unavailable so the
140+
# passkeys tab cannot list/delete credentials — keep it disabled and
141+
# surface the reason via tooltip on hover.
142+
self.passkeys_admin_required = should_use_ccid()
143+
if self.passkeys_admin_required:
144+
self.tabs.setTabToolTip(PASSKEYS_TAB_INDEX, PASSKEYS_ADMIN_REQUIRED_MESSAGE)
145+
132146
# set some spacing between Nitrokey buttons
133147
self.ui.nitrokeyButtonsLayout.setSpacing(8)
134148

@@ -268,7 +282,7 @@ def show_device(self, data: DeviceData) -> None:
268282
self.tabs.setTabVisible(1, is_nk3)
269283
self.tabs.setTabEnabled(1, is_nk3)
270284
self.tabs.setTabVisible(2, has_fido2)
271-
self.tabs.setTabEnabled(2, has_fido2)
285+
self.tabs.setTabEnabled(2, has_fido2 and not self.passkeys_admin_required)
272286
self.tabs.setTabEnabled(3, True)
273287

274288
self.show_navigation()

0 commit comments

Comments
 (0)