mirror of
https://github.com/IT4Change/Ocelot-Social.git
synced 2026-01-20 20:01:22 +00:00
Implement redirect for user profile
This commit is contained in:
parent
51ca20335a
commit
327bd037a0
46
webapp/pages/profile/_id/index.vue
Normal file
46
webapp/pages/profile/_id/index.vue
Normal 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>
|
||||
@ -1,8 +0,0 @@
|
||||
<script>
|
||||
export default {
|
||||
layout: 'blank',
|
||||
asyncData({ error }) {
|
||||
error({ statusCode: 404, message: 'Profile slug missing' })
|
||||
}
|
||||
}
|
||||
</script>
|
||||
Loading…
x
Reference in New Issue
Block a user