Show page not found error if there is no 'id' and no 'slug' in a persistent link

This commit is contained in:
Wolfgang Huß 2022-09-09 13:49:16 +02:00
parent 36f6fee8be
commit af26b8605c

View File

@ -10,22 +10,24 @@ export default function (options = {}) {
} = context } = context
const idOrSlug = id || slug const idOrSlug = id || slug
const variables = { idOrSlug } if (idOrSlug) {
const client = apolloProvider.defaultClient const variables = { idOrSlug }
const client = apolloProvider.defaultClient
let response let response
let resource let resource
response = await client.query({ query: queryId, variables }) response = await client.query({ query: queryId, variables })
resource = response.data[Object.keys(response.data)[0]][0] resource = response.data[Object.keys(response.data)[0]][0]
if (resource && resource.slug === slug) return // all good if (resource && resource.slug === slug) return // all good
if (resource && resource.slug !== slug) { if (resource && resource.slug !== slug) {
return redirect(`/${path}/${resource.id}/${resource.slug}`) return redirect(`/${path}/${resource.id}/${resource.slug}`)
}
response = await client.query({ query: querySlug, variables })
resource = response.data[Object.keys(response.data)[0]][0]
if (resource) return redirect(`/${path}/${resource.id}/${resource.slug}`)
} }
response = await client.query({ query: querySlug, variables })
resource = response.data[Object.keys(response.data)[0]][0]
if (resource) return redirect(`/${path}/${resource.id}/${resource.slug}`)
return error({ statusCode: 404, key: message }) return error({ statusCode: 404, key: message })
}, },
} }