def _registration_finished(self, ok, req): if ok: user_domain = self._username + "@" + self._domain message = "<font color='green'><h3>" message += self.tr("User %s successfully registered.") % ( user_domain, ) message += "</h3></font>" self._set_register_status(message) self.ui.lblPassword2.clearFocus() self._set_registration_fields_visibility(False) # Allow the user to remember his password if has_keyring(): self.ui.chkRemember.setVisible(True) self.ui.chkRemember.setEnabled(True) self.page(self.REGISTER_USER_PAGE).set_completed() self.button(QtGui.QWizard.BackButton).setEnabled(False) else: old_username = self._username self._username = None self._password = None error_msg = self.tr("Unknown error") try: content, _ = get_content(req) json_content = json.loads(content) error_msg = json_content.get("errors").get("login")[0] if not error_msg.istitle(): error_msg = "%s %s" % (old_username, error_msg) except Exception as e: logger.error("Unknown error: %r" % (e,)) self._set_register_status(error_msg, error=True) self.ui.btnRegister.setEnabled(True)
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 _registration_finished(self): """ SLOT TRIGGERS: self._backend.signaler.srp_registration_finished The registration has finished successfully, so we do some final steps. """ user_domain = self._username + "@" + self._domain message = "<font color='green'><h3>" message += self.tr("User %s successfully registered.") % ( user_domain, ) message += "</h3></font>" self._set_register_status(message) self.ui.lblPassword2.clearFocus() self._set_registration_fields_visibility(False) # Allow the user to remember his password if has_keyring(): self.ui.chkRemember.setVisible(True) self.ui.chkRemember.setEnabled(True) self.page(self.REGISTER_USER_PAGE).set_completed() self.button(QtGui.QWizard.BackButton).setEnabled(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 set_enabled(self, enabled=False): """ Enables or disables all the login widgets :param enabled: wether they should be enabled or not :type enabled: bool """ self.ui.lnUser.setEnabled(enabled) self.ui.lnPassword.setEnabled(enabled) self.ui.chkRemember.setEnabled(enabled and has_keyring()) self._set_cancel(not enabled)
def set_enabled(self, enabled=False): """ Enables or disables all the login widgets :param enabled: wether they should be enabled or not :type enabled: bool """ self.ui.lnUser.setEnabled(enabled) self.ui.lnPassword.setEnabled(enabled) self.ui.chkRemember.setEnabled(enabled and has_keyring()) self._set_cancel(not enabled)
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
def __init__(self, settings, parent=None): """ Constructs the LoginWidget. :param settings: client wide settings :type settings: LeapSettings :param parent: The parent widget for this widget :type parent: QWidget or None """ QtGui.QWidget.__init__(self, parent) self._settings = settings self._selected_provider_index = -1 self.ui = Ui_LoginWidget() self.ui.setupUi(self) self.ui.chkRemember.stateChanged.connect( self._remember_state_changed) self.ui.chkRemember.setEnabled(has_keyring()) self.ui.lnPassword.setEchoMode(QtGui.QLineEdit.Password) self.ui.btnLogin.clicked.connect(self.login) self.ui.lnPassword.returnPressed.connect(self.login) self.ui.lnUser.returnPressed.connect(self._focus_password) self.ui.cmbProviders.currentIndexChanged.connect( self._current_provider_changed) self.ui.btnLogout.clicked.connect( self.logout) username_re = QtCore.QRegExp(USERNAME_REGEX) self.ui.lnUser.setValidator( QtGui.QRegExpValidator(username_re, self)) self.logged_out() self.ui.btnLogout.clicked.connect(self.start_logout) self.ui.clblErrorMsg.hide() self.ui.clblErrorMsg.clicked.connect(self.ui.clblErrorMsg.hide) self.ui.lnUser.textEdited.connect(self.ui.clblErrorMsg.hide) self.ui.lnPassword.textEdited.connect(self.ui.clblErrorMsg.hide)
def __init__(self, backend, signaler, parent=None): """ Constructs the LoginWidget. :param backend: Backend being used :type backend: Backend :param signaler: Object in charge of handling communication back to the frontend :type signaler: Signaler :param parent: The parent widget for this widget :type parent: QWidget or None """ QtGui.QWidget.__init__(self, parent) SignalTracker.__init__(self) self.ui = Ui_LoginWidget() self.ui.setupUi(self) self.ui.chkRemember.stateChanged.connect(self._remember_state_changed) self.ui.chkRemember.setEnabled(has_keyring()) self.ui.lnUser.textChanged.connect(self._credentials_changed) self.ui.lnPassword.textChanged.connect(self._credentials_changed) self.ui.btnLogin.clicked.connect(self._do_login) self.ui.btnLogout.clicked.connect(self.do_logout) self.ui.lnUser.setValidator( QtGui.QRegExpValidator(QtCore.QRegExp(USERNAME_REGEX), self)) self.ui.clblErrorMsg.hide() self.ui.clblErrorMsg.clicked.connect(self.ui.clblErrorMsg.hide) self.ui.lnUser.textEdited.connect(self.ui.clblErrorMsg.hide) self.ui.lnPassword.textEdited.connect(self.ui.clblErrorMsg.hide) self._settings = LeapSettings() self._backend = backend self._leap_signaler = signaler # the selected provider that we'll use to login self._provider = None self._state = LoginState() self._set_logged_out()
def __init__(self, backend, signaler, parent=None): """ Constructs the LoginWidget. :param backend: Backend being used :type backend: Backend :param signaler: Object in charge of handling communication back to the frontend :type signaler: Signaler :param parent: The parent widget for this widget :type parent: QWidget or None """ QtGui.QWidget.__init__(self, parent) SignalTracker.__init__(self) self.ui = Ui_LoginWidget() self.ui.setupUi(self) self.ui.chkRemember.stateChanged.connect(self._remember_state_changed) self.ui.chkRemember.setEnabled(has_keyring()) self.ui.lnUser.textChanged.connect(self._credentials_changed) self.ui.lnPassword.textChanged.connect(self._credentials_changed) self.ui.btnLogin.clicked.connect(self._do_login) self.ui.btnLogout.clicked.connect(self.do_logout) self.ui.lnUser.setValidator( QtGui.QRegExpValidator(QtCore.QRegExp(USERNAME_REGEX), self)) self.ui.clblErrorMsg.hide() self.ui.clblErrorMsg.clicked.connect(self.ui.clblErrorMsg.hide) self.ui.lnUser.textEdited.connect(self.ui.clblErrorMsg.hide) self.ui.lnPassword.textEdited.connect(self.ui.clblErrorMsg.hide) self._settings = LeapSettings() self._backend = backend self._leap_signaler = signaler # the selected provider that we'll use to login self._provider = None self._state = LoginState() self._set_logged_out()
def _registration_finished(self): """ TRIGGERS: self._backend.signaler.srp_registration_finished The registration has finished successfully, so we do some final steps. """ user_domain = self._username + "@" + self._domain message = "<font color='green'><h3>" message += self.tr("User %s successfully registered.") % ( user_domain, ) message += "</h3></font>" self._set_register_status(message) self.ui.lblPassword2.clearFocus() self._set_registration_fields_visibility(False) # Allow the user to remember his password if has_keyring(): self.ui.chkRemember.setVisible(True) self.ui.chkRemember.setEnabled(True) self.page(self.REGISTER_USER_PAGE).set_completed() self.button(QtGui.QWizard.BackButton).setEnabled(False)
def get_remember(self): return has_keyring() and self.ui.chkRemember.isChecked()
def get_remember(self): return has_keyring() and self.ui.chkRemember.isChecked()