Exemple #1
0
    def signin(self):
        """Handle signin request."""
        session = api_utils.get_user_session()
        if api_utils.is_authenticated():
            pecan.redirect(CONF.ui_url)
        else:
            api_utils.delete_params_from_user_session([const.USER_OPENID])

        csrf_token = api_utils.get_token()
        session[const.CSRF_TOKEN] = csrf_token
        session.save()
        return_endpoint = parse.urljoin(CONF.api.api_url,
                                        CONF.osid.openid_return_to)
        return_to = api_utils.set_query_params(return_endpoint,
                                               {const.CSRF_TOKEN: csrf_token})

        params = {
            const.OPENID_MODE: CONF.osid.openid_mode,
            const.OPENID_NS: CONF.osid.openid_ns,
            const.OPENID_RETURN_TO: return_to,
            const.OPENID_CLAIMED_ID: CONF.osid.openid_claimed_id,
            const.OPENID_IDENTITY: CONF.osid.openid_identity,
            const.OPENID_REALM: CONF.api.api_url,
            const.OPENID_NS_SREG: CONF.osid.openid_ns_sreg,
            const.OPENID_NS_SREG_REQUIRED: CONF.osid.openid_sreg_required,
        }
        url = CONF.osid.openstack_openid_endpoint
        url = api_utils.set_query_params(url, params)
        pecan.redirect(location=url)
Exemple #2
0
    def signin(self):
        """Handle signin request."""
        session = api_utils.get_user_session()
        if api_utils.is_authenticated():
            pecan.redirect(CONF.ui_url)
        else:
            api_utils.delete_params_from_user_session([const.USER_OPENID])

        csrf_token = api_utils.get_token()
        session[const.CSRF_TOKEN] = csrf_token
        session.save()
        return_endpoint = parse.urljoin(CONF.api.api_url,
                                        CONF.osid.openid_return_to)
        return_to = api_utils.set_query_params(return_endpoint,
                                               {const.CSRF_TOKEN: csrf_token})

        params = {
            const.OPENID_MODE: CONF.osid.openid_mode,
            const.OPENID_NS: CONF.osid.openid_ns,
            const.OPENID_RETURN_TO: return_to,
            const.OPENID_CLAIMED_ID: CONF.osid.openid_claimed_id,
            const.OPENID_IDENTITY: CONF.osid.openid_identity,
            const.OPENID_REALM: CONF.api.api_url,
            const.OPENID_NS_SREG: CONF.osid.openid_ns_sreg,
            const.OPENID_NS_SREG_REQUIRED: CONF.osid.openid_sreg_required,
        }
        url = CONF.osid.openstack_openid_endpoint
        url = api_utils.set_query_params(url, params)
        pecan.redirect(location=url)
Exemple #3
0
def setup_app(config):
    """App factory."""
    # By default we expect path to oslo config file in environment variable
    # REFSTACK_OSLO_CONFIG (option for testing and development)
    # If it is empty we look up those config files
    # in the following directories:
    #   ~/.${project}/
    #   ~/
    #   /etc/${project}/
    #   /etc/

    default_config_files = ((os.getenv('REFSTACK_OSLO_CONFIG'), )
                            if os.getenv('REFSTACK_OSLO_CONFIG')
                            else cfg.find_config_files('refstack'))
    CONF('',
         project='refstack',
         default_config_files=default_config_files)

    log.setup(CONF, 'refstack')
    CONF.log_opt_values(LOG, logging.DEBUG)

    template_path = CONF.api.template_path % {'project_root': PROJECT_ROOT}
    static_root = CONF.api.static_root % {'project_root': PROJECT_ROOT}
    app_conf = dict(config.app)
    app = pecan.make_app(
        app_conf.pop('root'),
        debug=CONF.api.app_dev_mode,
        static_root=static_root,
        template_path=template_path,
        hooks=[
            JWTAuthHook(), JSONErrorHook(), CORSHook(),
            pecan.hooks.RequestViewerHook(
                {'items': ['status', 'method', 'controller', 'path', 'body']},
                headers=False, writer=WritableLogger(LOG, logging.DEBUG)
            )
        ]
    )

    beaker_conf = {
        'session.key': 'refstack',
        'session.type': 'ext:database',
        'session.url': CONF.database.connection,
        'session.timeout': 604800,
        'session.validate_key': api_utils.get_token(),
        'session.sa.pool_recycle': 600
    }
    app = SessionMiddleware(app, beaker_conf)

    if CONF.api.app_dev_mode:
        LOG.debug('\n\n <<< Refstack UI is available at %s >>>\n\n',
                  CONF.ui_url)

    return app
Exemple #4
0
def setup_app(config):
    """App factory."""
    # By default we expect path to oslo config file in environment variable
    # REFSTACK_OSLO_CONFIG (option for testing and development)
    # If it is empty we look up those config files
    # in the following directories:
    #   ~/.${project}/
    #   ~/
    #   /etc/${project}/
    #   /etc/

    default_config_files = ((os.getenv('REFSTACK_OSLO_CONFIG'), )
                            if os.getenv('REFSTACK_OSLO_CONFIG')
                            else cfg.find_config_files('refstack'))
    CONF('',
         project='refstack',
         default_config_files=default_config_files)

    log.setup(CONF, 'refstack')
    CONF.log_opt_values(LOG, logging.DEBUG)

    template_path = CONF.api.template_path % {'project_root': PROJECT_ROOT}
    static_root = CONF.api.static_root % {'project_root': PROJECT_ROOT}

    app_conf = dict(config.app)
    app = pecan.make_app(
        app_conf.pop('root'),
        debug=CONF.api.app_dev_mode,
        static_root=static_root,
        template_path=template_path,
        hooks=[JSONErrorHook(), CORSHook(), pecan.hooks.RequestViewerHook(
            {'items': ['status', 'method', 'controller', 'path', 'body']},
            headers=False, writer=loggers.WritableLogger(LOG, logging.DEBUG)
        )]
    )

    beaker_conf = {
        'session.key': 'refstack',
        'session.type': 'ext:database',
        'session.url': CONF.database.connection,
        'session.timeout': 604800,
        'session.validate_key': api_utils.get_token(),
        'session.sa.pool_recycle': 600
    }
    app = SessionMiddleware(app, beaker_conf)

    if CONF.api.app_dev_mode:
        LOG.debug('\n\n <<< Refstack UI is available at %s >>>\n\n',
                  CONF.ui_url)

    return app
Exemple #5
0
 def test_get_token(self):
     token = api_utils.get_token(42)
     self.assertRegexpMatches(token, "[a-z]{42}")
Exemple #6
0
 def test_get_token(self):
     token = api_utils.get_token(42)
     self.assertRegex(token, "[a-z]{42}")