Init
This commit is contained in:
10
plugins/auth.ts
Normal file
10
plugins/auth.ts
Normal file
@@ -0,0 +1,10 @@
|
||||
import { fetchCurrentUser, useUser } from '~/composables/useAuth'
|
||||
|
||||
export default defineNuxtPlugin(async () => {
|
||||
const user = useUser()
|
||||
|
||||
// Skip if already initialized on server
|
||||
if (user.value !== undefined) { return }
|
||||
|
||||
user.value = await fetchCurrentUser()
|
||||
})
|
||||
17
plugins/error-handler.ts
Normal file
17
plugins/error-handler.ts
Normal file
@@ -0,0 +1,17 @@
|
||||
import { FetchError } from 'ofetch'
|
||||
|
||||
export default defineNuxtPlugin(async (nuxtApp) => {
|
||||
nuxtApp.hook('vue:error', (error) => {
|
||||
if (!(error instanceof FetchError)) { throw error }
|
||||
|
||||
const status = error.response?.status ?? -1
|
||||
|
||||
if ([401, 419].includes(status)) {
|
||||
navigateTo('/login')
|
||||
}
|
||||
|
||||
if ([409].includes(status)) {
|
||||
navigateTo('/verify-email')
|
||||
}
|
||||
})
|
||||
})
|
||||
Reference in New Issue
Block a user