diff --git a/backend/web/login/login.py b/backend/web/login/login.py index ffe67701f07b1b8ba529e90072a0a24cf4b745b1..3fa87921db8b44587b62e4b384a90ffdd71222a6 100644 --- a/backend/web/login/login.py +++ b/backend/web/login/login.py @@ -375,14 +375,24 @@ def consent(): current_app.logger.info(f"{kratos_id} was granted access to {client_id}") # False positive: pylint: disable=no-member - return redirect( - consent_request.accept( - grant_scope=consent_request.requested_scope, - grant_access_token_audience=consent_request.requested_access_token_audience, - session=claims, - ) + try: + redirectUrl = hydra_admin_api.accept_consent_request( + challenge, + accept_consent_request=AcceptConsentRequest( + grant_scope=consent_request.requested_scope, + grant_access_token_audience=consent_request.requested_access_token_audience, + session=ConsentRequestSession(**claims), + ) + ).redirect_to ) - + except: + # If an unexpected error occurs, logout, hopefully that wipes the + # relevant cookies + current_app.logger.error('Fatal processing consent, redirect to logout:' + str(e)) + return redirect("logout") + current_app.logger.info(f"Redirect to: {redirectUrl}") + + return redirect(redirectUrl) @web.route("/status", methods=["GET", "POST"]) def status():