ghostguild-org/app/composables/useAuth.js

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,
};
};