// This is an example of how to protect content using server rendering import { unstable_getServerSession } from "next-auth/next" import { authOptions } from "./api/auth/[...nextauth]" import Layout from "../components/layout" import AccessDenied from "../components/access-denied" export default function Page({ content, session }) { // If no session exists, display access denied message if (!session) { return ( ) } // If session exists, display content return (

Protected Page

{content}

) } export async function getServerSideProps(context) { const session = await unstable_getServerSession( context.req, context.res, authOptions ) let content = null if (session) { const hostname = process.env.NEXTAUTH_URL || "http://localhost:3000" const options = { headers: { cookie: context.req.headers.cookie } } const res = await fetch(`${hostname}/api/examples/protected`, options) const json = await res.json() if (json.content) { content = json.content } } return { props: { session, content, }, } }