mirror of
https://github.com/SrIzan10/next-auth.git
synced 2026-05-01 10:55:20 +00:00
* chore(deps): add next and react to dev dependencies * chore: move build configs to avoid crash with next dev * chore: add next js dev app * chore: remove .txt extension from LICENSE file * chore: update CONTRIBUTING.md * chore: watch css under development * style(lint): run linter on index.css * chore: fix some imports for dev server * refactor: simplify client code * chore: mention VSCode extension for linting * docs: reword CONTRIBUTING.md * chore: ignore linting pages and components
33 lines
1005 B
JavaScript
33 lines
1005 B
JavaScript
import { useState, useEffect } from 'react'
|
|
import { useSession } from 'next-auth/client'
|
|
import Layout from '../components/layout'
|
|
import AccessDenied from '../components/access-denied'
|
|
|
|
export default function Page () {
|
|
const [ session, loading ] = 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])
|
|
|
|
// When rendering client side don't display anything until loading is complete
|
|
if (typeof window !== 'undefined' && loading) return null
|
|
|
|
// 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}</strong></p>
|
|
</Layout>
|
|
)
|
|
} |