import { useState, useEffect } from 'react' import { useSearchParams, Outlet, Navigate, Link, useLocation } from 'react-router-dom' import { api } from '../../api/client' export default function AdminLayout() { const [searchParams] = useSearchParams() const [verified, setVerified] = useState(null) const location = useLocation() const isRoot = location.pathname === '/admin' || location.pathname === '/admin/' useEffect(() => { const keyFromUrl = searchParams.get('key') const keyFromStorage = localStorage.getItem('maple-admin-key') const key = keyFromUrl || keyFromStorage if (!key) { setVerified(false) return } api('/api/admin/verify', { method: 'POST', body: { key } }) .then(() => { localStorage.setItem('maple-admin-key', key) setVerified(true) }) .catch(() => { localStorage.removeItem('maple-admin-key') setVerified(false) }) }, [searchParams]) if (verified === null) { return (
) } if (!verified) { return } return (
{!isRoot && ( ← )}
Admin

관리자

) }