rsnext/examples/api-routes-apollo-server-and-client-auth/pages/index.js
Aaron Reisman a356d2f68c Add Apollo Server and Client Auth Example (#9913)
* Add Apollo Server and Client Auth Example

* Some updates

* Updated docs

Co-authored-by: Luis Alvarez D. <luis@zeit.co>
2020-01-23 14:55:45 -05:00

46 lines
888 B
JavaScript

import { withApollo } from '../apollo/client'
import gql from 'graphql-tag'
import Link from 'next/link'
import { useQuery } from '@apollo/react-hooks'
import { useRouter } from 'next/router'
const ViewerQuery = gql`
query ViewerQuery {
viewer {
id
email
}
}
`
const Index = () => {
const router = useRouter()
const { data, loading } = useQuery(ViewerQuery)
if (
loading === false &&
data.viewer === null &&
typeof window !== 'undefined'
) {
router.push('/signin')
}
if (data && data.viewer) {
return (
<div>
You're signed in as {data.viewer.email} goto{' '}
<Link href="/about">
<a>static</a>
</Link>{' '}
page. or{' '}
<Link href="/signout">
<a>signout</a>
</Link>
</div>
)
}
return <p>Loading...</p>
}
export default withApollo(Index)