Antes, resolvendo bugs
Antes de adentrarmos no dashboard, logout e proteção de rotas, precisamos ajustar algumas coisas no login com Github. Se você tentar fazer o login da forma como fizemos, provavelmente você terá alguns erros.
- O primeiro erro é porque não criamos, no prisma, o schema
Account
- e estamos agora usando o Prisma Adapter. - O segundo é que, se você cadastrou algum email antes, por padrão (e por razão de segurança) o NextAuth não deixa autenticar em outros provedores diferentes (como Github).
Criando o schema Account
.
Para isso, basta adicionarmos, no schema.prisma
o seguinte código:
model Account { id String @id @default(cuid()) userId String type String provider String providerAccountId String refresh_token String? access_token String? expires_at Int? token_type String? scope String? id_token String? session_state String?
user User @relation(fields: [userId], references: [id], onDelete: Cascade)
@@unique([provider, providerAccountId])}
Depois, é só rodar o npx prisma db push
e verificar que a tabela já está na DB.
Permitindo logins concomitantes entre credenciais e OAuth providers
O Prisma, por padrão, não permite que façamos o login com Github com o mesmo email que usamos nas credenciais. Vamos desabilitar esse comportamento.
Para isso, basta passar para o GithubProvider
em nosso auth.ts
essa propriedade:
// ...GithubProvider({ allowDangerousEmailAccountLinking: true }),// ...
Maravilha, agora está tudo funcionando como antes!