ghostguild-org/app/composables/useAuth.js

46 lines
No EOL
1.3 KiB
JavaScript

export const useAuth = () => {
const memberData = useState('auth.member', () => null)
const isAuthenticated = computed(() => !!memberData.value)
const isMember = computed(() => !!memberData.value)
const checkMemberStatus = async () => {
console.log('🔍 checkMemberStatus called')
console.log(' - Current memberData:', !!memberData.value)
try {
console.log(' - Making API call to /api/auth/member...')
const response = await $fetch('/api/auth/member')
console.log(' - API response received:', { email: response.email, id: response.id })
memberData.value = response
console.log(' - ✅ Member authenticated successfully')
return true
} catch (error) {
console.error(' - ❌ Failed to fetch member status:', error.statusCode, error.statusMessage)
memberData.value = null
console.log(' - Cleared memberData')
return false
}
}
const logout = async () => {
try {
await $fetch('/api/auth/logout', {
method: 'POST'
})
memberData.value = null
await navigateTo('/')
} catch (error) {
console.error('Logout failed:', error)
}
}
return {
isAuthenticated: readonly(isAuthenticated),
isMember: readonly(isMember),
memberData: readonly(memberData),
checkMemberStatus,
logout
}
}