/**
 * Composable d'auth admin minimal.
 *
 * Pas de mécanique de session côté API (l'API est stateless). On stocke
 * juste le token Bearer en localStorage et on l'envoie sur les writes.
 *
 *  - isAuthenticated : "j'ai un token, donc je passe pour admin côté front"
 *  - login(token)    : stocke + déclenche reactivité
 *  - logout()        : efface
 *
 * Une vraie validation du token se fait quand on appelle un endpoint protégé
 * (l'API renvoie 401 si le token est faux). C'est le client api.ts qui
 * laisse remonter cette erreur et le router peut alors rediriger vers /admin/login.
 */

import { computed, ref } from 'vue'
import { clearAdminToken, getAdminToken, setAdminToken } from '@/api/client'

const tokenRef = ref<string | null>(getAdminToken())

export function useAuth() {
  return {
    token: computed(() => tokenRef.value),
    isAuthenticated: computed(() => tokenRef.value !== null && tokenRef.value !== ''),
    login(token: string) {
      const trimmed = token.trim()
      setAdminToken(trimmed)
      tokenRef.value = trimmed
    },
    logout() {
      clearAdminToken()
      tokenRef.value = null
    },
  }
}
