19 lines
482 B
TypeScript
19 lines
482 B
TypeScript
import type { PropsWithChildren } from 'react'
|
|
import { useEffect } from 'react'
|
|
import { useLocation } from 'react-router-dom'
|
|
import { useAuth } from './AuthProvider'
|
|
|
|
|
|
export function RequireAuth({ children }: PropsWithChildren) {
|
|
const { isAuthenticated, signIn } = useAuth()
|
|
const loc = useLocation()
|
|
|
|
|
|
useEffect(() => {
|
|
if (!isAuthenticated) void signIn(loc.pathname + loc.search)
|
|
}, [isAuthenticated, signIn, loc])
|
|
|
|
|
|
if (!isAuthenticated) return null
|
|
return <>{children}</>
|
|
} |