rsnext/examples/api-routes-apollo-server-and-client-auth/pages/index.js
Luis Alvarez D 9dc902835c
[Examples] Move api-routes-apollo-server-and-client-auth to SSG (#13849)
Related to https://github.com/vercel/next.js/issues/11014

The authentication method has been replaced with an improved version of the passport example.
2020-06-10 03:46:11 +00:00

51 lines
1 KiB
JavaScript

import { useEffect } from 'react'
import { useRouter } from 'next/router'
import Link from 'next/link'
import gql from 'graphql-tag'
import { useQuery } from '@apollo/react-hooks'
const ViewerQuery = gql`
query ViewerQuery {
viewer {
id
email
}
}
`
const Index = () => {
const router = useRouter()
const { data, loading, error } = useQuery(ViewerQuery)
const viewer = data?.viewer
const shouldRedirect = !(loading || error || viewer)
useEffect(() => {
if (shouldRedirect) {
router.push('/signin')
}
// eslint-disable-next-line react-hooks/exhaustive-deps
}, [shouldRedirect])
if (error) {
return <p>{error.message}</p>
}
if (viewer) {
return (
<div>
You're signed in as {viewer.email} goto{' '}
<Link href="/about">
<a>about</a>
</Link>{' '}
page. or{' '}
<Link href="/signout">
<a>signout</a>
</Link>
</div>
)
}
return <p>Loading...</p>
}
export default Index