Exemplo n.º 1
0
def oauth_init():
    if not settings.OAUTH:
        abort(404)

    callback_url = url_for('.oauth_callback')
    state = get_best_next_url(request.args.get('next'), request.referrer)
    return oauth.provider.authorize(callback=callback_url, state=state)
Exemplo n.º 2
0
def oauth_callback():
    if not settings.OAUTH:
        abort(404)

    resp = oauth.provider.authorized_response()
    if resp is None or isinstance(resp, OAuthException):
        log.warning("Failed OAuth: %r", resp)
        return Unauthorized("Authentication has failed.")

    response = signals.handle_oauth_session.send(provider=oauth.provider,
                                                 oauth=resp)
    for (_, role) in response:
        if role is None:
            continue
        db.session.commit()
        update_role(role)
        log.info("Logged in: %r", role)
        request.authz = Authz.from_role(role)
        record_audit(Audit.ACT_LOGIN)
        token = request.authz.to_token(role=role)
        token = token.decode('utf-8')
        state = request.args.get('state')
        next_url = get_best_next_url(state, request.referrer)
        next_url, _ = urldefrag(next_url)
        next_url = '%s#token=%s' % (next_url, token)
        return redirect(next_url)

    log.error("No OAuth handler for %r was installed.", oauth.provider.name)
    return Unauthorized("Authentication has failed.")
Exemplo n.º 3
0
def oauth_callback():
    if not settings.OAUTH:
        abort(404)

    resp = oauth.provider.authorized_response()
    if resp is None or isinstance(resp, OAuthException):
        log.warning("Failed OAuth: %r", resp)
        return Unauthorized("Authentication has failed.")

    response = signals.handle_oauth_session.send(provider=oauth.provider,
                                                 oauth=resp)
    db.session.commit()
    for (_, role) in response:
        if role is None:
            continue
        log.info("Logged in: %r", role)
        next_url = get_best_next_url(request.args.get('state'),
                                     request.referrer)
        next_url, _ = urldefrag(next_url)
        next_url = '%s#token=%s' % (next_url, create_token(role))
        return redirect(next_url)

    log.error("No OAuth handler for %r was installed.", oauth.provider.name)
    return Unauthorized("Authentication has failed.")
Exemplo n.º 4
0
 def test_get_best_next_url_all_unsafe(self):
     self.assertEqual(UI_URL, get_best_next_url(self.fake.url(), self.fake.url()))  # noqa
Exemplo n.º 5
0
 def test_get_best_next_url_unsafe_safe(self):
     self.assertEqual(
         UI_URL + 'next', get_best_next_url(self.fake.url(), '/next'))
Exemplo n.º 6
0
 def test_get_best_next_url_blank(self):
     self.assertEqual(UI_URL, get_best_next_url(''))
Exemplo n.º 7
0
 def test_get_best_next_url_blank(self):
     self.assertEqual(UI_URL, get_best_next_url(''))
Exemplo n.º 8
0
 def test_get_best_next_url_all_unsafe(self):
     self.assertEqual(UI_URL, get_best_next_url(self.fake.url(), self.fake.url()))  # noqa
Exemplo n.º 9
0
 def test_get_best_next_url_unsafe_safe(self):
     self.assertEqual(UI_URL + 'next', get_best_next_url(self.fake.url(), '/next'))