5.1 KiB
🚨 ERRO CRÍTICO NA EDGE FUNCTION - BACKEND
Resumo do Problema
A Edge Function /functions/v1/create-user está retornando erro 500 com mensagem:
{ "error": "Failed to assign user role" }
Evidências
Console do Frontend
XHRPOST https://yuanqfswhberkoevtmfr.supabase.co/functions/v1/create-user
[HTTP/3 500 1065ms]
[API ERROR] https://yuanqfswhberkoevtmfr.supabase.co/functions/v1/create-user 500
Object { error: "Failed to assign user role" }
Request Enviado (CORRETO)
{
"email": "dipar64745@fanlvr.com",
"password": "senha789!",
"full_name": "Jonas Francisco Nascimento Bonfim",
"phone": "(79) 99649-8907",
"role": "medico"
}
Response Recebido (ERRO)
{
"error": "Failed to assign user role"
}
Fluxo Atual (Correto segundo documentação)
- ✅ Frontend cria perfil na tabela
doctors - ✅ Frontend gera senha aleatória
- ✅ Frontend chama
/functions/v1/create-usercom dados corretos - ❌ Edge Function falha ao atribuir role na tabela
user_roles
O Que a Edge Function DEVE Fazer
Segundo a documentação da API (Documentação API.md), a Edge Function /functions/v1/create-user deve:
- ✅ Criar usuário no Supabase Auth (isso está funcionando)
- ❌ Inserir registro na tabela
user_roles(isso está falhando) - ✅ Retornar
{ success: true, user: {...} }
Possíveis Causas do Erro
1. SUPABASE_SERVICE_ROLE_KEY não configurada
A Edge Function precisa da SUPABASE_SERVICE_ROLE_KEY para ter permissão de:
- Inserir na tabela
user_roles - Fazer operações administrativas
Como verificar:
- Acesse o Supabase Dashboard
- Vá em Edge Functions >
create-user - Verifique se a variável de ambiente
SUPABASE_SERVICE_ROLE_KEYestá configurada - Copie a chave de: Settings > API > service_role key (secret)
2. Tabela user_roles sem permissões corretas
A tabela pode estar bloqueando inserções da Edge Function.
Como verificar:
- Acesse o Supabase Dashboard
- Vá em Database > user_roles
- Clique em RLS Policies
- Verifique se existe uma policy permitindo:
- Service role pode inserir
- OU Edge Function pode inserir usando service key
Policy esperada:
-- Permitir que service role insira roles
CREATE POLICY "service_role_insert_user_roles"
ON user_roles FOR INSERT
TO service_role
WITH CHECK (true);
3. Código da Edge Function com bug
O código da Edge Function pode ter erro de lógica ao tentar inserir na tabela.
Onde encontrar:
- Supabase Dashboard > Edge Functions >
create-user> Editor
O que verificar:
// A Edge Function deve ter algo assim:
const { data, error } = await supabaseAdmin
.from('user_roles')
.insert({
user_id: newUser.id,
role: role
});
if (error) {
console.error('Erro ao inserir role:', error);
return new Response(
JSON.stringify({ error: 'Failed to assign user role' }),
{ status: 500 }
);
}
Como Testar Cada Possibilidade
Teste 1: Verificar se service key está funcionando
Execute no SQL Editor do Supabase:
-- Teste de inserção manual
INSERT INTO user_roles (user_id, role)
VALUES ('00000000-0000-0000-0000-000000000000', 'medico');
-- Se der erro, mostrará a mensagem de permissão
Teste 2: Verificar logs da Edge Function
- Acesse Edge Functions >
create-user - Clique em Logs
- Procure por erros detalhados quando o frontend faz a chamada
Teste 3: Verificar estrutura da tabela
-- Verificar estrutura da tabela user_roles
SELECT column_name, data_type, is_nullable
FROM information_schema.columns
WHERE table_name = 'user_roles';
Campos esperados:
id(uuid, primary key)user_id(uuid, not null, foreign key para auth.users)role(text ou enum, not null)created_at(timestamp, default now())
Solução Esperada do Backend
A equipe de backend precisa:
- URGENTE: Configurar
SUPABASE_SERVICE_ROLE_KEYna Edge Function - URGENTE: Adicionar RLS policy para permitir inserções via service role
- Recomendado: Adicionar logs detalhados na Edge Function para debug
- Recomendado: Retornar erro mais específico (ex: "Permission denied to insert into user_roles")
Status do Frontend
✅ O código do frontend está 100% correto e seguindo a documentação!
Não há nada a fazer no frontend. O erro está exclusivamente no backend.
Workaround Temporário (NÃO RECOMENDADO)
Se o backend não puder resolver urgentemente, podemos:
- Criar usuários sem role (ou role padrão)
- Administrador atribui roles manualmente depois
Mas isso NÃO É RECOMENDADO porque:
- Usuários não terão permissões corretas
- Aumenta trabalho manual
- Pode gerar problemas de segurança
Contato
Frontend: ✅ Implementação completa e correta
Backend: ❌ Precisa corrigir Edge Function create-user
Prioridade: 🔴 CRÍTICA - Sistema não consegue criar novos usuários
Data do erro: 10/10/2025
Ambiente: https://yuanqfswhberkoevtmfr.supabase.co
Edge Function: /functions/v1/create-user
Status Code: 500
Mensagem: "Failed to assign user role"