import { Navigate } from 'react-router-dom';
import { selectIsOnboarded } from '../store/authSelectors';
import { useAppSelector } from '../store/hooks';
interface ProtectedRouteProps {
children: React.ReactNode;
requireAuth?: boolean;
requireOnboarded?: boolean;
redirectTo?: string;
}
/**
* Protected route component that handles authentication and onboarding checks
*/
const ProtectedRoute = ({
children,
requireAuth = true,
requireOnboarded = false,
redirectTo,
}: ProtectedRouteProps) => {
const token = useAppSelector(state => state.auth.token);
const isOnboarded = useAppSelector(selectIsOnboarded);
// If auth is required but user is not logged in
if (requireAuth && !token) {
return ;
}
// If onboarding is required but user is not onboarded
if (requireOnboarded && !isOnboarded) {
return ;
}
return <>{children}>;
};
export default ProtectedRoute;