예제 #1
0
from ubuntu_sso.qt.ui.proxy_credentials_dialog_ui import Ui_ProxyCredsDialog
from ubuntu_sso.utils import compat
from ubuntu_sso.utils.ui import (
    CANCEL_BUTTON,
    PROXY_CREDS_DIALOG_TITLE,
    PROXY_CREDS_HEADER,
    PROXY_CREDS_EXPLANATION,
    PROXY_CREDS_CONNECTION,
    PROXY_CREDS_ERROR,
    PROXY_CREDS_USER_LABEL,
    PROXY_CREDS_PSWD_LABEL,
    PROXY_CREDS_HELP_BUTTON,
    PROXY_CREDS_SAVE_BUTTON,
)

logger = setup_gui_logging("ubuntu_sso.qt.proxy_dialog")


class ProxyCredsDialog(QDialog):
    """Dialog used to require the proxy credentials."""
    def __init__(self, retry=False, domain=None):
        """Create a new instance."""
        super(ProxyCredsDialog, self).__init__()

        if domain is None:
            logger.debug('Domain passed as None.')
            domain = ''
        self.domain = domain
        self.keyring = Keyring()
        self.ui = Ui_ProxyCredsDialog()
        self.ui.setupUi(self)
from ubuntu_sso import NO_OP
from ubuntu_sso.logger import setup_gui_logging
from ubuntu_sso.qt import build_general_error_message
from ubuntu_sso.qt.sso_wizard_page import SSOWizardPage
from ubuntu_sso.qt.ui.email_verification_ui import Ui_EmailVerificationPage
from ubuntu_sso.utils import compat
from ubuntu_sso.utils.ui import (
    ERROR_EMAIL_TOKEN,
    NEXT,
    VERIFICATION_CODE,
    VERIFY_EMAIL_TITLE,
    VERIFY_EMAIL_CONTENT,
)


logger = setup_gui_logging('ubuntu_sso.email_verification_page')


class EmailVerificationPage(SSOWizardPage):
    """Widget used to input the email verification code."""

    ui_class = Ui_EmailVerificationPage
    registrationSuccess = QtCore.pyqtSignal(compat.text_type)

    def __init__(self, *args, **kwargs):
        self.email = ''
        self.password = ''
        super(EmailVerificationPage, self).__init__(*args, **kwargs)

    @property
    def _signals(self):
from ubuntu_sso import NO_OP
from ubuntu_sso.logger import setup_gui_logging, log_call
from ubuntu_sso.qt.sso_wizard_page import SSOWizardEnhancedEditPage
from ubuntu_sso.qt.ui.forgotten_password_ui import Ui_ForgottenPasswordPage
from ubuntu_sso.utils import compat
from ubuntu_sso.utils.ui import (
    EMAIL_LABEL,
    FORGOTTEN_PASSWORD_TITLE,
    FORGOTTEN_PASSWORD_SUBTITLE,
    is_correct_email,
    RESET_PASSWORD,
    REQUEST_PASSWORD_TOKEN_WRONG_EMAIL,
)


logger = setup_gui_logging('ubuntu_sso.forgotten_password_page')


class ForgottenPasswordPage(SSOWizardEnhancedEditPage):
    """Widget used to deal with users that forgot the password."""

    ui_class = Ui_ForgottenPasswordPage
    passwordResetTokenSent = QtCore.pyqtSignal(compat.text_type)

    @property
    def _signals(self):
        """The signals to connect to the backend."""
        result = {
            'PasswordResetTokenSent':
                self._filter_by_app_name(self.on_password_reset_token_sent),
            'PasswordResetError':
from ubuntu_sso import NO_OP
from ubuntu_sso.logger import setup_gui_logging
from ubuntu_sso.qt import build_general_error_message
from ubuntu_sso.qt.sso_wizard_page import SSOWizardPage
from ubuntu_sso.qt.ui.email_verification_ui import Ui_EmailVerificationPage
from ubuntu_sso.utils import compat
from ubuntu_sso.utils.ui import (
    ERROR_EMAIL_TOKEN,
    NEXT,
    VERIFICATION_CODE,
    VERIFY_EMAIL_TITLE,
    VERIFY_EMAIL_CONTENT,
)

logger = setup_gui_logging('ubuntu_sso.email_verification_page')


class EmailVerificationPage(SSOWizardPage):
    """Widget used to input the email verification code."""

    ui_class = Ui_EmailVerificationPage
    registrationSuccess = QtCore.pyqtSignal(compat.text_type)

    def __init__(self, *args, **kwargs):
        self.email = ''
        self.password = ''
        super(EmailVerificationPage, self).__init__(*args, **kwargs)

    @property
    def _signals(self):
예제 #5
0
    USER_SUCCESS,
)
from ubuntu_sso.logger import setup_gui_logging
from ubuntu_sso.utils import compat
from ubuntu_sso.qt import PREFERED_UI_SIZE, WINDOW_TITLE
from ubuntu_sso.qt.current_user_sign_in_page import CurrentUserSignInPage
from ubuntu_sso.qt.email_verification_page import EmailVerificationPage
from ubuntu_sso.qt.error_page import ErrorPage
from ubuntu_sso.qt.forgotten_password_page import ForgottenPasswordPage
from ubuntu_sso.qt.loadingoverlay import LoadingOverlay
from ubuntu_sso.qt.network_detection_page import NetworkDetectionPage
from ubuntu_sso.qt.reset_password_page import ResetPasswordPage
from ubuntu_sso.qt.setup_account_page import SetupAccountPage
from ubuntu_sso.qt.success_page import SuccessPage

logger = setup_gui_logging('ubuntu_sso.gui')


class UbuntuSSOWizard(QWizard):
    """Wizard used to create or use sso."""

    # definition of the signals raised by the widget
    recoverableError = pyqtSignal('QString', 'QString')
    loginSuccess = pyqtSignal('QString', 'QString')
    registrationSuccess = pyqtSignal('QString', 'QString')

    def __init__(self, app_name, **kwargs):
        """Create a new wizard."""
        logger.debug('UbuntuSSOWizard: app_name %r, kwargs %r.', app_name,
                     kwargs)
        parent = kwargs.pop('parent', None)
예제 #6
0
파일: gui.py 프로젝트: thnguyn2/ECE_527_MP
    RESET_PASSWORD,
    SET_NEW_PASSWORD_LABEL,
    SUCCESS,
    TC_BUTTON,
    TC_NOT_ACCEPTED,
    VERIFY_EMAIL_LABEL,
    YES_TO_TC,
    YES_TO_UPDATES,
)


# Instance of 'UbuntuSSOClientGUI' has no 'yyy' member
# pylint: disable=E1101


logger = setup_gui_logging('ubuntu_sso.gui.gtk')


# pylint: disable=C0103
def parse_color(color):
    """Parse a string color into Gdk.Color."""
    c = Gdk.RGBA()
    result = c.parse(color)
    if not result:
        logger.warning('Could not parse color %r.', color)
    return c
# pylint: enable=C0103

DEFAULT_WIDTH = 30
# To be replaced by values from the theme (LP: #616526)
HELP_TEXT_COLOR = parse_color("#bfbfbf")
from ubuntu_sso.qt.ui.current_user_sign_in_ui import Ui_CurrentUserSignInPage
from ubuntu_sso.utils import compat
from ubuntu_sso.utils.ui import (
    CANCEL_BUTTON,
    CREATE_ACCOUNT_LABEL,
    EMAIL_LABEL,
    FORGOTTEN_PASSWORD_BUTTON,
    is_correct_email,
    LOGIN_PASSWORD_LABEL,
    LOGIN_TITLE,
    LOGIN_SUBTITLE,
    SIGN_IN_BUTTON,
)


logger = setup_gui_logging('ubuntu_sso.current_user_sign_in_page')


class CurrentUserSignInPage(SSOWizardPage):
    """Wizard Page that lets a current user Sign into Ubuntu Single Sign On."""

    ui_class = Ui_CurrentUserSignInPage
    userLoggedIn = QtCore.pyqtSignal(compat.text_type)
    passwordForgotten = QtCore.pyqtSignal()
    createAccount = QtCore.pyqtSignal()
    userNotValidated = QtCore.pyqtSignal(compat.text_type)

    @property
    def _signals(self):
        """The signals to connect to the backend."""
        result = {'LoggedIn':
from ubuntu_sso.qt.sso_wizard_page import SSOWizardEnhancedEditPage
from ubuntu_sso.qt.ui.reset_password_ui import Ui_ResetPasswordPage
from ubuntu_sso.utils import compat
from ubuntu_sso.utils.ui import (
    is_min_required_password,
    PASSWORD1_ENTRY,
    PASSWORD2_ENTRY,
    PASSWORD_HELP,
    RESET_CODE_ENTRY,
    RESET_PASSWORD,
    RESET_TITLE,
    RESET_SUBTITLE,
)


logger = setup_gui_logging('ubuntu_sso.reset_password_page')


class ResetPasswordPage(SSOWizardEnhancedEditPage):
    """Widget used to allow the user change his password."""

    ui_class = Ui_ResetPasswordPage
    passwordChanged = pyqtSignal(compat.text_type)

    @property
    def _signals(self):
        """The signals to connect to the backend."""
        result = {
            'PasswordChanged':
                self._filter_by_app_name(self.on_password_changed),
            'PasswordChangeError':
from ubuntu_sso import NO_OP
from ubuntu_sso.logger import setup_gui_logging, log_call
from ubuntu_sso.qt.sso_wizard_page import SSOWizardEnhancedEditPage
from ubuntu_sso.qt.ui.forgotten_password_ui import Ui_ForgottenPasswordPage
from ubuntu_sso.utils import compat
from ubuntu_sso.utils.ui import (
    EMAIL_LABEL,
    FORGOTTEN_PASSWORD_TITLE,
    FORGOTTEN_PASSWORD_SUBTITLE,
    is_correct_email,
    RESET_PASSWORD,
    REQUEST_PASSWORD_TOKEN_WRONG_EMAIL,
)

logger = setup_gui_logging('ubuntu_sso.forgotten_password_page')


class ForgottenPasswordPage(SSOWizardEnhancedEditPage):
    """Widget used to deal with users that forgot the password."""

    ui_class = Ui_ForgottenPasswordPage
    passwordResetTokenSent = QtCore.pyqtSignal(compat.text_type)

    @property
    def _signals(self):
        """The signals to connect to the backend."""
        result = {
            'PasswordResetTokenSent':
            self._filter_by_app_name(self.on_password_reset_token_sent),
            'PasswordResetError':
예제 #10
0
)
from twisted.internet import defer

from ubuntu_sso import main
from ubuntu_sso.constants import APP_NAME, TC_URL, POLICY_URL, PING_URL
from ubuntu_sso.logger import setup_gui_logging, log_call
from ubuntu_sso.qt import (
    ERROR_STYLE,
    maybe_elide_text,
    PREFERED_UI_SIZE,
    TITLE_STYLE,
)
from ubuntu_sso.utils.ui import GENERIC_BACKEND_ERROR


logger = setup_gui_logging('ubuntu_sso.sso_wizard_page')


class WizardHeader(QFrame):
    """WizardHeader Class for Title and Subtitle in all wizard pages."""

    def __init__(self, max_width, parent=None):
        """Create a new instance."""
        super(WizardHeader, self).__init__(parent=parent)
        self.max_width = max_width
        self.max_title_width = self.max_width * 0.95
        self.max_subtitle_width = self.max_width * 1.8

        vbox = QVBoxLayout(self)
        vbox.setContentsMargins(0, 0, 0, 0)
        self.title_label = QLabel()
예제 #11
0
from ubuntu_sso.qt import build_general_error_message, common
from ubuntu_sso.qt.sso_wizard_page import SSOWizardEnhancedEditPage
from ubuntu_sso.qt.ui.reset_password_ui import Ui_ResetPasswordPage
from ubuntu_sso.utils import compat
from ubuntu_sso.utils.ui import (
    is_min_required_password,
    PASSWORD1_ENTRY,
    PASSWORD2_ENTRY,
    PASSWORD_HELP,
    RESET_CODE_ENTRY,
    RESET_PASSWORD,
    RESET_TITLE,
    RESET_SUBTITLE,
)

logger = setup_gui_logging('ubuntu_sso.reset_password_page')


class ResetPasswordPage(SSOWizardEnhancedEditPage):
    """Widget used to allow the user change his password."""

    ui_class = Ui_ResetPasswordPage
    passwordChanged = pyqtSignal(compat.text_type)

    @property
    def _signals(self):
        """The signals to connect to the backend."""
        result = {
            'PasswordChanged':
            self._filter_by_app_name(self.on_password_changed),
            'PasswordChangeError':
예제 #12
0
    PASSWORD,
    PASSWORD1_ENTRY,
    PASSWORD2_ENTRY,
    PASSWORD_HELP,
    PASSWORD_MISMATCH,
    PASSWORD_TOO_WEAK,
    PRIVACY_POLICY_TEXT,
    RETYPE_EMAIL,
    RETYPE_PASSWORD,
    SET_UP_ACCOUNT_BUTTON,
    SIGN_IN_LABEL,
    TERMS_TEXT,
    REGISTER_TITLE,
)

logger = setup_gui_logging('ubuntu_sso.setup_account_page')

ERROR_EMAIL = 'email'


class SetupAccountPage(SSOWizardEnhancedEditPage):
    """Customized Setup Account page for SSO."""

    ui_class = Ui_SetUpAccountPage
    userRegistered = QtCore.pyqtSignal(compat.text_type)
    signIn = QtCore.pyqtSignal()

    def __init__(self, *args, **kwargs):
        self.captcha_file = None
        self.captcha_id = None
        self.captcha_received = False
    PASSWORD1_ENTRY,
    PASSWORD2_ENTRY,
    PASSWORD_HELP,
    PASSWORD_MISMATCH,
    PASSWORD_TOO_WEAK,
    PRIVACY_POLICY_TEXT,
    RETYPE_EMAIL,
    RETYPE_PASSWORD,
    SET_UP_ACCOUNT_BUTTON,
    SIGN_IN_LABEL,
    TERMS_TEXT,
    REGISTER_TITLE,
)


logger = setup_gui_logging("ubuntu_sso.setup_account_page")

ERROR_EMAIL = "email"


class SetupAccountPage(SSOWizardEnhancedEditPage):
    """Customized Setup Account page for SSO."""

    ui_class = Ui_SetUpAccountPage
    userRegistered = QtCore.pyqtSignal(compat.text_type)
    signIn = QtCore.pyqtSignal()

    def __init__(self, *args, **kwargs):
        self.captcha_file = None
        self.captcha_id = None
        self.captcha_received = False
예제 #14
0
# do not wish to do so, delete this exception statement from your
# version.  If you delete this exception statement from all source
# files in the program, then also delete it here.
"""The Qt graphical interface for the Ubuntu Single Sign On Client."""

from __future__ import unicode_literals

import sys
import collections

from PyQt4 import QtGui, QtCore

from ubuntu_sso.logger import setup_gui_logging
from ubuntu_sso.utils.ui import GENERIC_BACKEND_ERROR

logger = setup_gui_logging('ubuntu_sso.qt')

LINK_STYLE = ('<a href="{link_url}">'
              '<span style="color:#df2d1f;">{link_text}</span></a>')
ERROR_ALL = '__all__'
ERROR_STYLE = '<font color="#df2d1f" style="font-size:small"><b>%s</b></font>'
ERROR_MESSAGE = 'message'
PREFERED_UI_SIZE = {'width': 550, 'height': 525}
TITLE_STYLE = '<span style="font-size:xx-large;font-weight:bold;">%s</span>'
WINDOW_TITLE = 'Ubuntu Single Sign On'

# TODO: There is a pixel discrepancy between Qt on Linux and Windows
# and Mac OS X. On Mac OS X, one test fails with the height being
# off. For now, we're forcing a different UI height on darwin.
if sys.platform == 'darwin':
    PREFERED_UI_SIZE['height'] = 533
예제 #15
0
    SSL_THIRD_REASON,
    SSL_CERT_DETAILS,
    SSL_NOT_SURE,
    SSL_REMEMBER_DECISION,
    SSL_HELP_BUTTON,
    SSL_CONNECT_BUTTON,
)

REASONS_TEMPLATE = ('<p>%(explanation)s</p>'
                    '<ul style="margin-left:-10px">'
                    '<li style="margin-bottom:5px;">%(first_reason)s</li>'
                    '<li style="margin-bottom:5px;">%(second_reason)s</li>'
                    '<li>%(third_reason)s</li>'
                    '</ul>')

logger = setup_gui_logging("ubuntu_sso.qt.proxy_dialog")
assert(resources_rc)


class SSLDialog(QDialog):
    """"Dialog used to show SSL exceptions."""

    def __init__(self, app_name, domain=None, details=None, parent=None):
        """Create a new instance."""
        super(SSLDialog, self).__init__()
        if domain is None:
            logger.debug('Domain passed as None.')
            domain = ''
        self.domain = domain
        if details is None:
            logger.debug('Details passed as None.')
from ubuntu_sso.qt.sso_wizard_page import SSOWizardPage
from ubuntu_sso.qt.ui.current_user_sign_in_ui import Ui_CurrentUserSignInPage
from ubuntu_sso.utils import compat
from ubuntu_sso.utils.ui import (
    CANCEL_BUTTON,
    CREATE_ACCOUNT_LABEL,
    EMAIL_LABEL,
    FORGOTTEN_PASSWORD_BUTTON,
    is_correct_email,
    LOGIN_PASSWORD_LABEL,
    LOGIN_TITLE,
    LOGIN_SUBTITLE,
    SIGN_IN_BUTTON,
)

logger = setup_gui_logging('ubuntu_sso.current_user_sign_in_page')


class CurrentUserSignInPage(SSOWizardPage):
    """Wizard Page that lets a current user Sign into Ubuntu Single Sign On."""

    ui_class = Ui_CurrentUserSignInPage
    userLoggedIn = QtCore.pyqtSignal(compat.text_type)
    passwordForgotten = QtCore.pyqtSignal()
    createAccount = QtCore.pyqtSignal()
    userNotValidated = QtCore.pyqtSignal(compat.text_type)

    @property
    def _signals(self):
        """The signals to connect to the backend."""
        result = {