-- Criar tabela de perfis de usuários CREATE TABLE public.profiles ( id UUID NOT NULL REFERENCES auth.users ON DELETE CASCADE PRIMARY KEY, email TEXT, created_at TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT now(), updated_at TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT now() ); -- Habilitar RLS na tabela profiles ALTER TABLE public.profiles ENABLE ROW LEVEL SECURITY; -- Política para permitir que usuários vejam apenas seus próprios perfis CREATE POLICY "Users can view their own profile" ON public.profiles FOR SELECT USING (auth.uid() = id); -- Política para permitir que usuários insiram seus próprios perfis CREATE POLICY "Users can insert their own profile" ON public.profiles FOR INSERT WITH CHECK (auth.uid() = id); -- Política para permitir que usuários atualizem seus próprios perfis CREATE POLICY "Users can update their own profile" ON public.profiles FOR UPDATE USING (auth.uid() = id); -- Função para criar perfil automaticamente quando um usuário se registra CREATE OR REPLACE FUNCTION public.handle_new_user() RETURNS TRIGGER LANGUAGE plpgsql SECURITY DEFINER SET search_path = '' AS $$ BEGIN INSERT INTO public.profiles (id, email) VALUES (new.id, new.email); RETURN new; END; $$; -- Trigger para executar a função quando um novo usuário é criado CREATE TRIGGER on_auth_user_created AFTER INSERT ON auth.users FOR EACH ROW EXECUTE PROCEDURE public.handle_new_user();