def _save_credentials(self): """ If the user asked to remember the credentials, we save them into the keyring. """ provider = self._provider username = self.get_user() password = self.get_password() self._settings.set_provider(provider) if self.get_remember() and has_keyring(): # in the keyring and in the settings # we store the value 'usename@provider' full_user_id = make_address(username, provider).encode("utf8") try: keyring = get_keyring() keyring.set_password(self.KEYRING_KEY, full_user_id, password.encode("utf8")) # Only save the username if it was saved correctly in # the keyring self._settings.set_user(full_user_id) except KeyringInitError as e: logger.error("Failed to unlock keyring, maybe the user " "cancelled the operation {0!r}".format(e)) except Exception as e: logger.exception("Problem saving data to keyring. %r" % (e, ))
def load_user_from_keyring(self, saved_user): """ Try to load a user from the keyring. :param saved_user: the saved username as user@domain :type saved_user: unicode :return: True if the user was loaded successfully, False otherwise. :rtype: bool """ leap_assert_type(saved_user, unicode) try: username, domain = saved_user.split('@') except ValueError as e: # if the saved_user does not contain an '@' logger.error('Username@provider malformed. %r' % (e, )) return False self.set_user(username) self.set_remember(True) saved_password = None try: keyring = get_keyring() u_user = saved_user.encode("utf8") saved_password = keyring.get_password(self.KEYRING_KEY, u_user) except ValueError as e: logger.debug("Incorrect Password. %r." % (e, )) if saved_password is not None: self.set_password(saved_password) return True return False
def _save_credentials(self): """ If the user asked to remember the credentials, we save them into the keyring. """ provider = self._provider username = self.get_user() password = self.get_password() self._settings.set_provider(provider) if self.get_remember() and has_keyring(): # in the keyring and in the settings # we store the value 'usename@provider' full_user_id = make_address(username, provider).encode("utf8") try: keyring = get_keyring() keyring.set_password(self.KEYRING_KEY, full_user_id, password.encode("utf8")) # Only save the username if it was saved correctly in # the keyring self._settings.set_user(full_user_id) except KeyringInitError as e: logger.error("Failed to unlock keyring, maybe the user " "cancelled the operation {0!r}".format(e)) except Exception as e: logger.exception("Problem saving data to keyring. %r" % (e,))
def load_user_from_keyring(self, saved_user): """ Try to load a user from the keyring. :param saved_user: the saved username as user@domain :type saved_user: unicode :return: True if the user was loaded successfully, False otherwise. :rtype: bool """ leap_assert_type(saved_user, unicode) try: username, domain = saved_user.split('@') except ValueError as e: # if the saved_user does not contain an '@' logger.error('Username@provider malformed. %r' % (e, )) return False self.set_user(username) self.set_remember(True) saved_password = None try: keyring = get_keyring() u_user = saved_user.encode("utf8") saved_password = keyring.get_password(self.KEYRING_KEY, u_user) except ValueError as e: logger.debug("Incorrect Password. %r." % (e,)) if saved_password is not None: self.set_password(saved_password) return True return False
def start_login(self): """ Setups the login widgets for actually performing the login and performs some basic checks. :returns: True if everything's good to go, False otherwise :rtype: bool """ username = self.get_user() password = self.get_password() provider = self.get_selected_provider() self._enabled_services = self._settings.get_enabled_services( self.get_selected_provider()) if len(provider) == 0: self.set_status( self.tr("Please select a valid provider")) return False if len(username) == 0: self.set_status( self.tr("Please provide a valid username")) return False if len(password) == 0: self.set_status( self.tr("Please provide a valid password")) return False self.set_status(self.tr("Logging in..."), error=False) self.set_enabled(False) self.ui.clblErrorMsg.hide() self._settings.set_provider(provider) if self.get_remember() and has_keyring(): # in the keyring and in the settings # we store the value 'usename@provider' full_user_id = make_address(username, provider).encode("utf8") try: keyring = get_keyring() keyring.set_password(self.KEYRING_KEY, full_user_id, password.encode("utf8")) # Only save the username if it was saved correctly in # the keyring self._settings.set_user(full_user_id) except Exception as e: logger.exception("Problem saving data to keyring. %r" % (e,)) return True