29 lines
599 B
TypeScript
29 lines
599 B
TypeScript
import type { ReactNode } from "react";
|
|
import { Navigate, useLocation } from "react-router-dom";
|
|
import { useAuth } from "./AuthContext";
|
|
|
|
export function RequireSignIn({ children }: { children: ReactNode }) {
|
|
const { user, loading } = useAuth();
|
|
const location = useLocation();
|
|
|
|
if (loading) {
|
|
return (
|
|
<div className="auth-loading">
|
|
<p>Loading…</p>
|
|
</div>
|
|
);
|
|
}
|
|
|
|
if (!user) {
|
|
return (
|
|
<Navigate
|
|
to="/auth/sign-in"
|
|
state={{ from: `${location.pathname}${location.search}` }}
|
|
replace
|
|
/>
|
|
);
|
|
}
|
|
|
|
return children;
|
|
}
|