54 lines
1.5 KiB
JavaScript
54 lines
1.5 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,
|
|
fetchMember: checkMemberStatus, // Alias for consistency
|
|
logout,
|
|
};
|
|
};
|