46 lines
No EOL
1.3 KiB
JavaScript
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
|
|
}
|
|
} |