import { defineStore } from 'pinia'
import { ref } from 'vue'
import { getLoggedUser, logout, getAuthUsername } from 'src/api/auth'
import { usePermissions } from 'src/composables/usePermissions'

export const useAuthStore = defineStore('auth', () => {
  const user = ref(null)
  const loading = ref(true)
  const { loadPermissions } = usePermissions()

  async function checkSession () {
    loading.value = true
    try {
      user.value = await getLoggedUser()
      // Permissions depuis le hub : par courriel, avec REPLI par username Authentik (whoami sans courriel /
      // courriel non provisionné). Si les deux sont vides → permissions non chargées → App.vue affiche « fail-loud ».
      const email = (user.value && user.value !== 'authenticated') ? user.value : ''
      await loadPermissions(email, getAuthUsername())
    } catch {
      user.value = 'authenticated'
    } finally {
      loading.value = false
    }
  }

  return { user, loading, checkSession, doLogout: logout }
})
