diff options
| -rw-r--r-- | changes/bug-5540_change-password-fix | 1 | ||||
| -rw-r--r-- | src/leap/bitmask/gui/mainwindow.py | 11 | ||||
| -rw-r--r-- | src/leap/bitmask/gui/preferenceswindow.py | 71 | 
3 files changed, 37 insertions, 46 deletions
| diff --git a/changes/bug-5540_change-password-fix b/changes/bug-5540_change-password-fix new file mode 100644 index 00000000..9c9c09d5 --- /dev/null +++ b/changes/bug-5540_change-password-fix @@ -0,0 +1 @@ +Change password doesn't work. Closes #5540. diff --git a/src/leap/bitmask/gui/mainwindow.py b/src/leap/bitmask/gui/mainwindow.py index 5b8d9b1e..e7406106 100644 --- a/src/leap/bitmask/gui/mainwindow.py +++ b/src/leap/bitmask/gui/mainwindow.py @@ -571,10 +571,13 @@ class MainWindow(QtGui.QMainWindow):          Displays the preferences window.          """ -        user = self._login_widget.get_user() -        prov = self._login_widget.get_selected_provider() -        preferences = PreferencesWindow( -            self, self._backend, self._soledad_started, user, prov) +        user = self._logged_user +        domain = self._login_widget.get_selected_provider() +        mx_provided = False +        if self._provider_details is not None: +            mx_provided = MX_SERVICE in self._provider_details.services +        preferences = PreferencesWindow(self, user, domain, self._backend, +                                        self._soledad_started, mx_provided)          self.soledad_ready.connect(preferences.set_soledad_ready)          preferences.show() diff --git a/src/leap/bitmask/gui/preferenceswindow.py b/src/leap/bitmask/gui/preferenceswindow.py index c67052f3..a3b81d38 100644 --- a/src/leap/bitmask/gui/preferenceswindow.py +++ b/src/leap/bitmask/gui/preferenceswindow.py @@ -38,28 +38,31 @@ class PreferencesWindow(QtGui.QDialog):      """      preferences_saved = QtCore.Signal() -    def __init__(self, parent, backend, soledad_started, username, domain): +    def __init__(self, parent, username, domain, backend, soledad_started, mx):          """          :param parent: parent object of the PreferencesWindow.          :parent type: QWidget -        :param backend: Backend being used -        :type backend: Backend -        :param soledad_started: whether soledad has started or not -        :type soledad_started: bool          :param username: the user set in the login widget          :type username: unicode          :param domain: the selected domain in the login widget          :type domain: unicode +        :param backend: Backend being used +        :type backend: Backend +        :param soledad_started: whether soledad has started or not +        :type soledad_started: bool +        :param mx: whether the current provider provides mx or not. +        :type mx: bool          """          QtGui.QDialog.__init__(self, parent)          self.AUTOMATIC_GATEWAY_LABEL = self.tr("Automatic") -        self._backend = backend -        self._settings = LeapSettings() -        self._soledad_started = soledad_started          self._username = username          self._domain = domain +        self._backend = backend +        self._soledad_started = soledad_started +        self._mx_provided = mx +        self._settings = LeapSettings()          self._backend_connect()          # Load UI @@ -80,26 +83,17 @@ class PreferencesWindow(QtGui.QDialog):          else:              self._add_configured_providers() -        self._backend.user_get_logged_in_status() +        if self._username is None: +            self._not_logged_in() +        else: +            self.ui.gbPasswordChange.setEnabled(True) +            if self._mx_provided: +                self._provides_mx()          self._select_provider_by_name(domain) -    @QtCore.Slot() -    def _is_logged_in(self): -        """ -        TRIGGERS: -            Signaler.srp_status_logged_in - -        Actions to perform is the user is logged in. -        """ -        self._backend.provider_provides_mx() - -    @QtCore.Slot()      def _not_logged_in(self):          """ -        TRIGGERS: -            Signaler.srp_status_not_logged_in -          Actions to perform if the user is not logged in.          """          msg = self.tr( @@ -107,12 +101,8 @@ class PreferencesWindow(QtGui.QDialog):          self._set_password_change_status(msg)          self.ui.gbPasswordChange.setEnabled(False) -    @QtCore.Slot()      def _provides_mx(self):          """ -        TRIGGERS: -            Signaler.prov_provides_mx -          Actions to perform if the provider provides MX.          """          pw_enabled = True @@ -136,16 +126,6 @@ class PreferencesWindow(QtGui.QDialog):          self.ui.gbPasswordChange.setEnabled(pw_enabled)      @QtCore.Slot() -    def _not_provides_mx(self): -        """ -        TRIGGERS: -            Signaler.prov_not_provides_mx - -        Actions to perform if the provider does not provides MX. -        """ -        self.ui.gbPasswordChange.setEnabled(False) - -    @QtCore.Slot()      def set_soledad_ready(self):          """          TRIGGERS: @@ -226,7 +206,11 @@ class PreferencesWindow(QtGui.QDialog):          """          new_password = self.ui.leNewPassword.text()          logger.debug("SRP password changed successfully.") -        self._backend.soledad_change_password(new_password) + +        if self._mx_provided: +            self._backend.soledad_change_password(new_password) +        else: +            self._change_password_success()      @QtCore.Slot(unicode)      def _srp_change_password_problem(self, msg): @@ -250,6 +234,13 @@ class PreferencesWindow(QtGui.QDialog):          TRIGGERS:              Signaler.soledad_password_change_ok +        Soledad password change went OK. +        """ +        logger.debug("Soledad password changed successfully.") +        self._change_password_success() + +    def _change_password_success(self): +        """          Callback used to display a successfully changed password.          """          logger.debug("Soledad password changed successfully.") @@ -434,12 +425,8 @@ class PreferencesWindow(QtGui.QDialog):          """          sig = self._backend.signaler -        sig.prov_provides_mx.connect(self._provides_mx)          sig.prov_get_supported_services.connect(self._load_services) -        sig.srp_status_logged_in.connect(self._is_logged_in) -        sig.srp_status_not_logged_in.connect(self._not_logged_in) -          sig.srp_password_change_ok.connect(self._srp_change_password_ok)          pwd_change_error = lambda: self._srp_change_password_problem( | 
