This commit is contained in:
2025-08-14 13:26:51 -04:00
parent dbb70fc743
commit 7c36302aec
2 changed files with 22 additions and 33 deletions

View File

@@ -3,36 +3,10 @@ import { toast } from "react-toastify";
import { API_URL } from "@/config";
export default function LoginPage() {
const [redirectTo, setRedirectTo] = useState("/");
const [username, setUsername] = useState("");
const [password, setPassword] = useState("");
const [loading, setLoading] = useState(false);
// On mount, determine where to redirect after login:
// 1. Use sessionStorage 'redirectTo' if present
// 2. Else use document.referrer if same-origin
// 3. Else fallback to "/"
useEffect(() => {
try {
const savedRedirect = sessionStorage.getItem("redirectTo");
if (savedRedirect) {
setRedirectTo(savedRedirect);
} else if (document.referrer) {
const refUrl = new URL(document.referrer);
// Only accept same origin referrers for security
if (refUrl.origin === window.location.origin) {
const pathAndQuery = refUrl.pathname + refUrl.search;
setRedirectTo(pathAndQuery);
sessionStorage.setItem("redirectTo", pathAndQuery);
}
}
} catch (error) {
// Fail silently; fallback to "/"
console.error("Error determining redirect target:", error);
setRedirectTo("/");
}
}, []);
async function handleSubmit(e) {
e.preventDefault();
setLoading(true);
@@ -84,12 +58,8 @@ export default function LoginPage() {
if (data.access_token) {
toast.success("Login successful!");
// Clear stored redirect after use
sessionStorage.removeItem("redirectTo");
// Redirect to stored path or fallback "/"
window.location.href = redirectTo || "/";
// Redirect
window.location.href = "/TRip"; // TODO: fix, hardcoded
} else {
toast.error("Login failed: no access token received");
setLoading(false);