diff -r 30c45bd597e6 -r 9082eb8f6571 src/eric7/WebBrowser/WebBrowserWindow.py --- a/src/eric7/WebBrowser/WebBrowserWindow.py Fri Jul 19 18:06:48 2024 +0200 +++ b/src/eric7/WebBrowser/WebBrowserWindow.py Sat Jul 20 11:14:51 2024 +0200 @@ -9,6 +9,7 @@ import contextlib import functools +import importlib import os import pathlib import shutil @@ -1929,6 +1930,26 @@ self.passwordsAct.triggered.connect(self.__showPasswordsDialog) self.__actions.append(self.passwordsAct) + self.securityKeysAct = EricAction( + self.tr("Manage FIDO2 Security Keys"), + EricPixmapCache.getIcon("securityKey"), + self.tr("Manage FIDO2 Security Keys..."), + 0, + 0, + self, + "webbrowser_manage_security_keys", + ) + self.securityKeysAct.setStatusTip(self.tr("Manage FIDO2 security keys")) + self.securityKeysAct.setWhatsThis( + self.tr( + """<b>Manage FIDO2 Security Keys...</b>""" + """<p>Opens a dialog to manage FIDO2 security keys.</p>""" + ) + ) + self.securityKeysAct.triggered.connect(self.__showSecurityKeysDialog) + self.__actions.append(self.securityKeysAct) + self.securityKeysAct.setEnabled(importlib.util.find_spec("fido2") is not None) + self.adblockAct = EricAction( self.tr("Ad Block"), EricPixmapCache.getIcon("adBlockPlus"), @@ -2451,6 +2472,7 @@ menu.addAction(self.searchEnginesAct) menu.addSeparator() menu.addAction(self.passwordsAct) + menu.addAction(self.securityKeysAct) menu.addAction(self.certificateErrorsAct) menu.addSeparator() menu.addAction(self.zoomValuesAct) @@ -2577,6 +2599,7 @@ menu.addAction(self.searchEnginesAct) menu.addSeparator() menu.addAction(self.passwordsAct) + menu.addAction(self.securityKeysAct) menu.addAction(self.certificateErrorsAct) menu.addSeparator() menu.addAction(self.zoomValuesAct) @@ -4216,6 +4239,16 @@ dlg.exec() @pyqtSlot() + def __showSecurityKeysDialog(self): + """ + Private slot to show a dialog for managing FIDO2 security keys. + """ + from .WebAuth.Fido2ManagementDialog import Fido2ManagementDialog + + dlg = Fido2ManagementDialog(parent=self) + dlg.exec() + + @pyqtSlot() def __showCertificateErrorsDialog(self): """ Private slot to show the certificate errors management dialog.