Skip to content

feat: login social com Google #471

Description

@RafaelFantinel

Implementar Autenticação via Google OAuth2

Banco de Dados

Adicionar duas colunas na tabela user:

  • google_id (varchar, nullable) — identificador do perfil Google
  • profile_complete (boolean, nullable) — null para usuários tradicionais, false para OAuth sem perfil completo, true após onboarding

Variáveis de Ambiente

GOOGLE_CLIENT_ID=
GOOGLE_CLIENT_SECRET=
GOOGLE_CALLBACK_URL=
CLIENT_URL=

Endpoints

GET /user/auth/google

Inicia fluxo OAuth, redireciona para Google. Sem body, sem resposta direta.

GET /user/auth/google/callback

Callback do Google. Lógica:

  • Email já existe na base:

    • Associar googleId ao usuário existente (se ainda não tiver)
    • Gerar JWT
    • Se profileComplete === false → redirecionar para {CLIENT_URL}/onboarding?token=...
    • Caso contrário → redirecionar para {CLIENT_URL}/auth/callback?token=...
  • Email não existe:

    • Criar usuário com: firstName, lastName, email, googleId, profileComplete = false, role = aluno, sem senha, sem confirmação de email pendente
    • Redirecionar para /onboarding?token=...

PATCH /user/complete-profile

Autenticado via JWT. Apenas para usuários com profileComplete === false.

Corpo da requisição:

{
  "phone": "string",
  "gender": "Gender",
  "birthday": "string (data ISO)",
  "state": "string",
  "city": "string",
  "lgpd": "boolean"
}

Retorna novo token.

Dependências

  • passport-google-oauth20
  • Configurar GoogleStrategy com Passport
  • Criar GoogleAuthGuard

Metadata

Metadata

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions