-- Auto-create profile when user signs up CREATE OR REPLACE FUNCTION public.handle_new_user() RETURNS TRIGGER LANGUAGE plpgsql SECURITY DEFINER SET search_path = public AS $$ BEGIN INSERT INTO public.profiles (id, full_name) VALUES ( new.id, COALESCE(new.raw_user_meta_data ->> 'full_name', NULL) ) ON CONFLICT (id) DO NOTHING; RETURN new; END; $$; -- Drop existing trigger if exists and create new one DROP TRIGGER IF EXISTS on_auth_user_created ON auth.users; CREATE TRIGGER on_auth_user_created AFTER INSERT ON auth.users FOR EACH ROW EXECUTE FUNCTION public.handle_new_user();