30 lines
1.0 KiB
TypeScript
30 lines
1.0 KiB
TypeScript
// 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()
|
|
}
|
|
}
|
|
}) |