Implement redirect for user profile

This commit is contained in:
Robert Schäfer 2019-03-25 14:49:54 +01:00
parent 51ca20335a
commit 327bd037a0
3 changed files with 46 additions and 8 deletions

View File

@ -0,0 +1,46 @@
<script>
import gql from 'graphql-tag'
const queryId = gql`
query($idOrSlug: ID) {
User(id: $idOrSlug) {
id
slug
}
}
`
const querySlug = gql`
query($idOrSlug: String) {
User(slug: $idOrSlug) {
id
slug
}
}
`
export default {
layout: 'blank',
async asyncData(context) {
const {
params: { id: idOrSlug },
redirect,
error,
app: { apolloProvider }
} = context
const variables = { idOrSlug }
const client = apolloProvider.defaultClient
const tryToRedirect = async query => {
const idRes = await client.query({ query, variables })
const user = idRes.data.User[0]
if (user) redirect(`/profile/${user.id}/${user.slug}`)
}
await tryToRedirect(queryId)
await tryToRedirect(querySlug)
return error({ statusCode: 404 })
}
}
</script>

View File

@ -1,8 +0,0 @@
<script>
export default {
layout: 'blank',
asyncData({ error }) {
error({ statusCode: 404, message: 'Profile slug missing' })
}
}
</script>