Skip to content
Snippets Groups Projects

Resolve "Fix error messages kratos during login"

Merged Mart van Santen requested to merge 131-fix-error-handling-kratos-during-login into main
Files
5
+ 43
1
@@ -131,12 +131,52 @@ def login():
# Check if we are logged in:
identity = get_auth()
# List to contain messages pushed to the frontend
messages = list()
refresh = False
flow = request.args.get("flow")
if flow:
cookies = request.headers['cookie']
flow = kratos_public_frontend_api.get_login_flow(flow, cookie=cookies)
refresh = flow['refresh']
if refresh:
message = {
"id": "S_CONFIRM_CREDENTIALS",
"message": "Please confirm your credentials to complete this action.",
"type": "info"
}
messages.append(message)
try:
for msg in flow.ui.messages.value:
current_app.logger.info("Kratos message:" + msg.text)
if msg.id == 4000006:
message = {
"id": msg.id,
"message": "The provided login e-mail address or password is incorrect. Please try again.",
"type": "error"
}
else:
message = {
"id": msg.id,
"message": msg.text,
}
if msg.type == 'error':
message['type'] = 'error'
else:
message['type'] = 'info'
messages.append(message)
except ory_kratos_client.exceptions.ApiAttributeError as ex:
# This exception is expected when there are no messages
pass
except Exception as ex:
# An unkown exception happens, we log the error but continue as it
# only affects the messages part
current_app.logger.error("Unknown exception: " + str(ex))
if identity and not refresh:
# We are already logged in, and don't need to refresh.
@@ -164,7 +204,9 @@ def login():
# or `not identity`
# User is not logged in yet.
# In either case, we present the login screen now.
return render_template("login.html", api_url=KRATOS_PUBLIC_URL, dashboard_url=DASHBOARD_URL, refresh=refresh, demo=DEMO_INSTANCE)
return render_template("login.html", api_url=KRATOS_PUBLIC_URL,
dashboard_url=DASHBOARD_URL, messages=messages,
demo=DEMO_INSTANCE)
@web.route("/auth", methods=["GET", "POST"])
Loading