diff --git a/fence/blueprints/login/base.py b/fence/blueprints/login/base.py index a41c08b6d..15ff8e147 100644 --- a/fence/blueprints/login/base.py +++ b/fence/blueprints/login/base.py @@ -4,7 +4,7 @@ from fence.auth import login_user from fence.blueprints.login.redirect import validate_redirect from fence.config import config -from fence.errors import UserError +from fence.errors import UserError, MovedTemporarily class DefaultOAuth2Login(Resource): @@ -69,6 +69,13 @@ def __init__(self, idp_name, client, username_field="email"): self.username_field = username_field def get(self): + error = flask.request.args.get("error") + full_path = flask.request.full_path + if error: + err_msg = flask.request.args.get("error_description") + err = {"error": error, "error_description": err_msg} + raise MovedTemporarily(flask.jsonify(err)) + code = flask.request.args.get("code") result = self.client.get_user_id(code) username = result.get(self.username_field) diff --git a/fence/errors.py b/fence/errors.py index 9857066e8..250c18652 100644 --- a/fence/errors.py +++ b/fence/errors.py @@ -60,3 +60,9 @@ class UnavailableError(APIError): def __init__(self, message): self.message = str(message) self.code = 503 + + +class MovedTemporarily(APIError): + def __init__(self, message): + self.message = str(message) + self.code = 302