src/eric7/Preferences/ConfigurationPages/SecurityPage.py

branch
eric7
changeset 9209
b99e7fd55fd3
parent 8881
54e42bc2437a
child 9221
bf71ee032bb4
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/eric7/Preferences/ConfigurationPages/SecurityPage.py	Thu Jul 07 11:23:56 2022 +0200
@@ -0,0 +1,146 @@
+# -*- coding: utf-8 -*-
+
+# Copyright (c) 2011 - 2022 Detlev Offenbach <detlev@die-offenbachs.de>
+#
+
+"""
+Module implementing the Security configuration page.
+"""
+
+from PyQt6.QtCore import pyqtSlot
+from PyQt6.QtWidgets import QDialog
+
+from .ConfigurationPageBase import ConfigurationPageBase
+from .Ui_SecurityPage import Ui_SecurityPage
+
+import Preferences
+
+
+class SecurityPage(ConfigurationPageBase, Ui_SecurityPage):
+    """
+    Class implementing the Security configuration page.
+    """
+    def __init__(self, configDialog):
+        """
+        Constructor
+        
+        @param configDialog reference to the configuration dialog
+            (ConfigurationDialog)
+        """
+        super().__init__()
+        self.setupUi(self)
+        self.setObjectName("SecurityPage")
+        
+        self.__configDlg = configDialog
+        self.__displayMode = None
+        
+        # set initial values
+        self.savePasswordsCheckBox.setChecked(
+            Preferences.getUser("SavePasswords"))
+        self.masterPasswordCheckBox.setChecked(
+            Preferences.getUser("UseMasterPassword"))
+        self.masterPasswordButton.setEnabled(
+            Preferences.getUser("UseMasterPassword"))
+        
+        self.__newPassword = ""
+        self.__oldUseMasterPassword = Preferences.getUser("UseMasterPassword")
+        
+        self.alwaysRejectCheckBox.setChecked(
+            Preferences.getWebBrowser("AlwaysRejectFaultyCertificates"))
+    
+    def setMode(self, displayMode):
+        """
+        Public method to perform mode dependent setups.
+        
+        @param displayMode mode of the configuration dialog
+            (ConfigurationMode.DEFAULTMODE,
+             ConfigurationMode.WEBBROWSERMODE)
+        """
+        from ..ConfigurationDialog import ConfigurationMode
+        if displayMode in (
+            ConfigurationMode.DEFAULTMODE,
+            ConfigurationMode.WEBBROWSERMODE
+        ):
+            self.__displayMode = displayMode
+            
+            self.certificateErrorsGroup.setVisible(
+                displayMode == ConfigurationMode.WEBBROWSERMODE
+            )
+    
+    def save(self):
+        """
+        Public slot to save the Help Viewers configuration.
+        """
+        Preferences.setUser(
+            "SavePasswords",
+            self.savePasswordsCheckBox.isChecked())
+        Preferences.setUser(
+            "UseMasterPassword",
+            self.masterPasswordCheckBox.isChecked())
+        
+        if (
+            self.__oldUseMasterPassword !=
+            self.masterPasswordCheckBox.isChecked()
+        ):
+            self.__configDlg.masterPasswordChanged.emit("", self.__newPassword)
+        
+        Preferences.setWebBrowser(
+            "AlwaysRejectFaultyCertificates",
+            self.alwaysRejectCheckBox.isChecked())
+    
+    @pyqtSlot(bool)
+    def on_masterPasswordCheckBox_clicked(self, checked):
+        """
+        Private slot to handle the use of a master password.
+        
+        @param checked flag indicating the state of the check box (boolean)
+        """
+        if checked:
+            from .MasterPasswordEntryDialog import MasterPasswordEntryDialog
+            dlg = MasterPasswordEntryDialog("", self)
+            if dlg.exec() == QDialog.DialogCode.Accepted:
+                Preferences.setUser(
+                    "MasterPassword",
+                    dlg.getMasterPassword())
+                self.masterPasswordButton.setEnabled(True)
+                self.__newPassword = dlg.getMasterPassword()
+            else:
+                self.masterPasswordCheckBox.setChecked(False)
+        else:
+            self.masterPasswordButton.setEnabled(False)
+            self.__newPassword = ""
+    
+    @pyqtSlot()
+    def on_masterPasswordButton_clicked(self):
+        """
+        Private slot to change the master password.
+        """
+        from .MasterPasswordEntryDialog import MasterPasswordEntryDialog
+        dlg = MasterPasswordEntryDialog(
+            Preferences.getUser("MasterPassword"), self)
+        if dlg.exec() == QDialog.DialogCode.Accepted:
+            Preferences.setUser(
+                "MasterPassword",
+                dlg.getMasterPassword())
+            
+            if (
+                self.__oldUseMasterPassword !=
+                self.masterPasswordCheckBox.isChecked()
+            ):
+                # the user is about to change the use of a master password
+                # just save the changed password
+                self.__newPassword = dlg.getMasterPassword()
+            else:
+                self.__configDlg.masterPasswordChanged.emit(
+                    dlg.getCurrentPassword(), dlg.getMasterPassword())
+
+
+def create(dlg):
+    """
+    Module function to create the configuration page.
+    
+    @param dlg reference to the configuration dialog
+    @return reference to the instantiated page (ConfigurationPageBase)
+    """
+    page = SecurityPage(dlg)
+    return page

eric ide

mercurial