misc
This commit is contained in:
@@ -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);
|
||||
|
Reference in New Issue
Block a user