Resposta rápida: para criar recuperação de senha em um app Lovable conectado ao Supabase, você precisa de três peças: uma tela onde o usuário informa o e-mail, o envio do link de recuperação pelo Supabase Auth e uma rota do seu app que recebe o usuário de volta e permite definir uma nova senha. O ponto que mais causa erro é a URL de redirecionamento não estar autorizada no Supabase.
Esse fluxo é diferente de simplesmente criar login e cadastro. Na recuperação, o usuário já existe, perdeu a senha e precisa provar acesso ao e-mail cadastrado. O Supabase envia um link temporário, o app recupera a sessão de recuperação e só então permite trocar a senha.
Como funciona a recuperação de senha na Lovable
A integração oficial Lovable + Supabase inclui autenticação por e-mail e senha e permite construir páginas de acesso ligadas ao Supabase Auth. Para recuperação de senha, a interface criada na Lovable chama o método de recuperação do Supabase informando o e-mail e a URL para onde o usuário deve voltar depois de clicar no link.
Depois que o usuário abre o e-mail, o Supabase valida o token e redireciona para a rota definida. Nessa rota, o app exibe um formulário para a nova senha e atualiza a credencial do usuário autenticado naquele fluxo.
Fluxo completo
Usuário clica em “Esqueci minha senha”
↓
Informa o e-mail cadastrado
↓
Supabase Auth envia o link
↓
Usuário abre o e-mail
↓
App Lovable recebe a sessão de recuperação
↓
Usuário define nova senha
↓
Senha atualizada e login liberado
Passo a passo para implementar
1. Crie a ação “Esqueci minha senha”
Na tela de login, adicione um link visível para quem não consegue entrar. Esse link deve abrir uma página simples com campo de e-mail, botão para enviar recuperação e mensagens claras de sucesso ou erro. Evite misturar esse formulário com o cadastro para não confundir estados diferentes de autenticação.
2. Envie o e-mail de recuperação pelo Supabase Auth
Ao enviar o formulário, use a recuperação de senha do Supabase e informe uma URL de redirecionamento do seu próprio app. Em produção, essa URL precisa usar o domínio real publicado. Durante desenvolvimento, você pode ter uma URL de teste separada, mas ela também precisa estar autorizada nas configurações de autenticação.
await supabase.auth.resetPasswordForEmail(email, {
redirectTo: "https://seu-dominio.com/redefinir-senha"
})
3. Autorize a URL de redirecionamento
No Supabase, abra Authentication e revise as configurações de URL. A rota usada no redirectTo precisa estar entre as URLs aceitas. Se o link do e-mail abre o app, mas a recuperação não continua, esse é um dos primeiros pontos a conferir.
Quando você usa domínio personalizado na Lovable, lembre de atualizar essa configuração. Um projeto que funcionava no subdomínio lovable.app pode falhar depois de trocar para um domínio próprio se a nova URL não estiver autorizada.
4. Crie a página de redefinição de senha
A rota de redefinição deve ser dedicada ao processo. Exiba campos de nova senha e confirmação, aplique os mesmos requisitos de segurança usados no cadastro e bloqueie o envio se os dois valores forem diferentes. Depois da atualização, mostre uma confirmação e direcione o usuário para a área autenticada ou para o login.
const { error } = await supabase.auth.updateUser({
password: novaSenha
})
if (error) {
// mostre uma mensagem segura ao usuário
}
5. Trate a sessão de recuperação
O link enviado pelo Supabase carrega informações temporárias para permitir a troca da senha. A sua aplicação deve deixar o cliente do Supabase processar esse retorno antes de chamar updateUser. Não tente criar um endpoint próprio que aceite senha nova sem validar a sessão de recuperação.
6. Teste no domínio publicado
Teste o fluxo inteiro com um usuário real de teste: solicite a recuperação, abra o e-mail, clique no link, confirme a URL final, troque a senha, encerre a sessão e tente entrar com a nova credencial. Esse teste identifica problemas que não aparecem quando você valida somente o formulário local.
Erros mais comuns
- O e-mail não chega: confira o provedor de e-mail do projeto, limites de envio e a caixa de spam.
- O link abre a página errada: revise redirectTo e as URLs autorizadas no Supabase Auth.
- Link expirado: solicite uma nova recuperação e não reutilize links antigos.
- updateUser retorna erro: confirme que o usuário chegou pela sessão de recuperação válida.
- Funciona em lovable.app e quebra no domínio próprio: adicione o domínio final às URLs permitidas.
- Usuário recebe mensagem que revela se a conta existe: prefira respostas neutras para reduzir enumeração de usuários.

