From 0e7eb7164e4e6534684697bf123ec40fdf7830da Mon Sep 17 00:00:00 2001
From: Arie Peterson <arie@greenhost.nl>
Date: Tue, 2 Jul 2024 14:58:28 +0200
Subject: [PATCH] Allow presetting email address for recovery form

---
 backend/web/login/login.py | 5 ++++-
 backend/web/static/base.js | 5 +++++
 2 files changed, 9 insertions(+), 1 deletion(-)

diff --git a/backend/web/login/login.py b/backend/web/login/login.py
index c6bcd707..f97ecac3 100644
--- a/backend/web/login/login.py
+++ b/backend/web/login/login.py
@@ -75,7 +75,10 @@ def recovery():
 
     flow = request.args.get("flow")
     if not flow:
-        return redirect(KRATOS_PUBLIC_URL + "self-service/recovery/browser")
+        email = request.args.get("email")
+        response = redirect(KRATOS_PUBLIC_URL + "self-service/recovery/browser")
+        response.set_cookie("recovery_preset_email", email)
+        return response
 
     return render_template("recover.html", api_url=KRATOS_PUBLIC_URL, dashboard_url=DASHBOARD_URL)
 
diff --git a/backend/web/static/base.js b/backend/web/static/base.js
index 510d0c23..9d80b3b1 100644
--- a/backend/web/static/base.js
+++ b/backend/web/static/base.js
@@ -444,6 +444,11 @@ function getFormElement(node, context) {
 			readonly = false;
 			label =
 				"Please provide your e-mail address. If it is registered, we will send a recovery link to that address.";
+			var email = Cookies.get("recovery_preset_email");
+			if (email) {
+				value = email;	
+				Cookies.set("recovery_preset_email", "");
+                        }
 		}
 		return getFormInput(
 			"email",
-- 
GitLab