This commit is contained in:
gpt-engineer-app[bot]
2026-01-27 22:40:17 +00:00
parent d408e92588
commit 6366e23ba3
11 changed files with 713 additions and 11 deletions
+62
View File
@@ -0,0 +1,62 @@
import { useState, useEffect } from "react";
import { User, Session } from "@supabase/supabase-js";
import { supabase } from "@/integrations/supabase/client";
export function useAuth() {
const [user, setUser] = useState<User | null>(null);
const [session, setSession] = useState<Session | null>(null);
const [loading, setLoading] = useState(true);
useEffect(() => {
// Set up auth state listener BEFORE getting session
const { data: { subscription } } = supabase.auth.onAuthStateChange(
(_event, session) => {
setSession(session);
setUser(session?.user ?? null);
setLoading(false);
}
);
// Get initial session
supabase.auth.getSession().then(({ data: { session } }) => {
setSession(session);
setUser(session?.user ?? null);
setLoading(false);
});
return () => subscription.unsubscribe();
}, []);
const signUp = async (email: string, password: string) => {
const { error } = await supabase.auth.signUp({
email,
password,
options: {
emailRedirectTo: window.location.origin,
},
});
return { error };
};
const signIn = async (email: string, password: string) => {
const { error } = await supabase.auth.signInWithPassword({
email,
password,
});
return { error };
};
const signOut = async () => {
const { error } = await supabase.auth.signOut();
return { error };
};
return {
user,
session,
loading,
signUp,
signIn,
signOut,
};
}