Merges the full git history of Inventory_frontend into the monorepo under frontend/. Removes the submodule in favor of a unified repo. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
50 lines
1.3 KiB
TypeScript
50 lines
1.3 KiB
TypeScript
import { useState, useRuntimeConfig } from '#imports'
|
|
|
|
export interface Profile {
|
|
id: string
|
|
firstName: string
|
|
lastName: string
|
|
email?: string | null
|
|
isActive?: boolean
|
|
hasPassword?: boolean
|
|
roles?: string[]
|
|
[key: string]: unknown
|
|
}
|
|
|
|
const buildUrl = (path: string): string => {
|
|
const config = useRuntimeConfig()
|
|
const base = (config.public.apiBaseUrl as string)?.replace(/\/$/, '') || ''
|
|
return `${base}${path}`
|
|
}
|
|
|
|
export function useProfiles() {
|
|
const profiles = useState<Profile[]>('profiles:list', () => [])
|
|
const loadingProfiles = useState<boolean>('profiles:loading', () => false)
|
|
const profilesLoaded = useState<boolean>('profiles:loaded', () => false)
|
|
|
|
const fetchProfiles = async (): Promise<Profile[]> => {
|
|
loadingProfiles.value = true
|
|
try {
|
|
profiles.value = await $fetch<Profile[]>(buildUrl('/session/profiles'), {
|
|
method: 'GET',
|
|
credentials: 'include',
|
|
})
|
|
profilesLoaded.value = true
|
|
} catch (error) {
|
|
console.error('Erreur lors du chargement des profils', error)
|
|
profiles.value = []
|
|
profilesLoaded.value = false
|
|
} finally {
|
|
loadingProfiles.value = false
|
|
}
|
|
return profiles.value
|
|
}
|
|
|
|
return {
|
|
profiles,
|
|
loadingProfiles,
|
|
profilesLoaded,
|
|
fetchProfiles,
|
|
}
|
|
}
|