42 lines
953 B
TypeScript
42 lines
953 B
TypeScript
import { useSession } from "next-auth/react"
|
|
import { useEffect, useState } from "react"
|
|
import AccessDenied from "../../components/access-denied"
|
|
import Layout from "../../components/layout"
|
|
|
|
export default function ProtectedPage() {
|
|
const { data: session } = useSession()
|
|
const [content, setContent] = useState()
|
|
|
|
// Fetch content from protected route
|
|
useEffect(() => {
|
|
const fetchData = async () => {
|
|
const res = await fetch("/api/examples/protected")
|
|
const json = await res.json()
|
|
if (json.content) {
|
|
setContent(json.content)
|
|
}
|
|
}
|
|
fetchData()
|
|
}, [session])
|
|
|
|
|
|
// If no session exists, display access denied message
|
|
if (!session) {
|
|
return (
|
|
<Layout>
|
|
<AccessDenied />
|
|
</Layout>
|
|
)
|
|
}
|
|
|
|
// If session exists, display content
|
|
return (
|
|
<Layout>
|
|
<h1>Protected Page</h1>
|
|
<p>
|
|
<strong>{content ?? "\u00a0"}</strong>
|
|
</p>
|
|
</Layout>
|
|
)
|
|
}
|