initial commit
This commit is contained in:
30
app/plugins/auth.ts
Normal file
30
app/plugins/auth.ts
Normal file
@@ -0,0 +1,30 @@
|
||||
// Faire vérifier le token présent dans le cookie
|
||||
// à WP via Pinia au 1er chargement de l'app.
|
||||
|
||||
import type { User } from "~/types/auth.ts"
|
||||
export default defineNuxtPlugin(async () => {
|
||||
const auth = useAuthStore()
|
||||
const config = useRuntimeConfig()
|
||||
|
||||
// On n'exécute la vérification que s'il y a un token
|
||||
// et qu'on n'a pas encore chargé l'utilisateur (ex: au refresh)
|
||||
if (auth.token && !auth.user) {
|
||||
try {
|
||||
// On appelle le endpoint WP qui renvoie l'utilisateur connecté
|
||||
// Note: l'URL dépend du plugin perso auth
|
||||
const data = await $fetch<User>(`${config.public.apiBase}/users/me`, {
|
||||
headers: {
|
||||
Authorization: `Bearer ${auth.token}`
|
||||
}
|
||||
})
|
||||
|
||||
// Si ça marche, on met à jour l'user dans Pinia
|
||||
auth.user = data
|
||||
} catch (error) {
|
||||
// Si le token est expiré ou invalide, WP renvoie une erreur
|
||||
// On vide tout pour forcer la reconnexion
|
||||
console.error("Session expirée ou token invalide")
|
||||
auth.logout()
|
||||
}
|
||||
}
|
||||
})
|
||||
Reference in New Issue
Block a user