feat(web): desktop OAuth deep link redirect

This commit is contained in:
CREDO23 2026-03-17 17:44:56 +02:00
parent 6f9eef6118
commit a866e6caa1
2 changed files with 18 additions and 0 deletions

View file

@ -35,6 +35,15 @@ function LoginContent() {
localStorage.setItem("surfsense_redirect_path", decodeURIComponent(returnUrl));
}
// Desktop app: persist login source so TokenHandler can redirect to
// the surfsense:// deep link after the OAuth round-trip completes.
const source = searchParams.get("source");
if (source === "desktop") {
sessionStorage.setItem("surfsense_login_source", "desktop");
} else {
sessionStorage.removeItem("surfsense_login_source");
}
// Show registration success message
if (registered === "true") {
toast.success(t("register_success"), {

View file

@ -60,6 +60,15 @@ const TokenHandler = ({
setRefreshToken(refreshToken);
}
// Desktop app: redirect tokens to the Electron deep link handler
const loginSource = sessionStorage.getItem("surfsense_login_source");
if (loginSource === "desktop") {
sessionStorage.removeItem("surfsense_login_source");
const deepLink = `surfsense://auth/callback?token=${token}${refreshToken ? `&refresh_token=${refreshToken}` : ""}`;
window.location.href = deepLink;
return;
}
// Check if there's a saved redirect path from before the auth flow
const savedRedirectPath = getAndClearRedirectPath();