Bloquear reset de senha para usuários OAuth (Google)
Status Closed — not planned
Maintainer reply None cached
Activity 2 comments · opened Feb 10, 2026 · closed Feb 13, 2026
Problema
Atualmente, usuários que se cadastraram via Google OAuth conseguem solicitar reset de senha, mesmo não tendo uma senha para resetar.
Fluxo atual:
- Usuário Google vai em "Esqueci minha senha"
- Digita seu email
- Recebe email de reset de senha
- Ao tentar resetar, pode falhar ou causar confusão
Comportamento esperado:
- Verificar se o usuário tem
provider: 'google'no banco - Se sim, retornar mensagem informativa: "Esta conta usa autenticação Google. Faça login com Google."
- Não enviar email de reset
Arquivos afetados
app/(core)/auth/api/forgot-password/route.ts
Código sugerido
// Busca usuário
const user = await db.select().from(users).where(eq(users.email, email)).limit(1);
if (!user.length) return NextResponse.json({ ok: true }); // Não revela existência
// Verificar se é usuário OAuth
if (user[0].provider) {
// Retorna ok: true para não revelar que a conta existe
// Mas não envia email
return NextResponse.json({ ok: true });
// OU: Retornar mensagem específica (menos seguro, revela existência)
// return NextResponse.json({
// error: `Esta conta usa autenticação ${user[0].provider}. Use o botão "Entrar com ${user[0].provider}".`
// }, { status: 400 });
}
Considerações de segurança
Opção 1 (mais segura): Retornar ok: true silenciosamente, sem enviar email. Não revela se a conta existe ou usa OAuth.
Opção 2 (melhor UX): Informar que a conta usa Google. Revela existência da conta, mas melhora experiência do usuário.
Labels
- bug
- auth
- security
This issue has 2 comments on GitHub. Read the full discussion on GitHub ↗