Imagine que eu queira, na minha sessão, mostrar os dados do usuário do github - o username do github, por exemplo. Veja que a nossa sessão traz, por padrão, apenas nome, email e imagem.
Para adicionarmos mais dados à nossa sessão precisamos usar um recurso do NextAuth chamado callbacks.
Já falamos de callbacks antes, e nesse caso, vamos começar usando a callback session.
Veja que a callback session traz 3 argumentos:
session
user
token
E você precisa retornar uma session. Nesse caso, antes de retornar a session, adicionei uma chave qualquer.
A partir desse momento, esses dados já estão incorporados na sessão. Veja o console.log:
O que precisamos agora, é o seguinte fluxo:
Pegarmos dados adicionais do github
Adicionar esses dados ao meu token
Do meu token, adicionar os dados à sessão.
Pegando dados adicionais do github
Para trazermos os dados adicionais do GitHub para a sessão, vamos criar uma outra callback, a jwt. Isso porque os dados de perfil do github chegarão por lá:
Precisamos adicionar esses dados ao token, uma vez que conseguimos pegar o token no callback session:
Se agora fizermos um console.log() na nossa callback session, veremos que o token tem a chave githubProfile.
Basta então pegarmos esses dados e adicionarmos ao user:
Pronto! Quer dizer, mais ou menos, ainda temos um erro de tipo:
Para resolvermos esse erro de tipo, basta adicionar no topo do nosso arquivo o seguinte código:
O que fizemos aqui é que aumentamos o módulo next-auth de forma a aceitar, na session, um user que tenha também um githubProfile. E o tipo do githubProfile podemos deixar, por ora, como any, mas pode ser o tipo exato do objeto retorno do GitHub.
Usando os dados no Dashboard
Agora podemos usar todos os dados que quisermos. Nesse exemplo, vou usar o username e a bio do GitHub:
Pronto! Agora as informações deverão aparecer no dashboard!