[DÚVIDA] Autorização NextAuth via back end
Preciso validar o JWT via servidor, mas não sei como.
Meu problema é o seguinte, para algumas autenticações no meu App eu preciso verificar se a pessoa tem acesso no banco de Dados.
export default NextAuth({
providers: [
GithubProvider({...}),
GoogleProvider({...})
],
callbacks: {
async jwt({ token, account }) {
// Persist the OAuth access_token to the token right after signin
if (account) {
token.accessToken = account.access_token
}
return token
},
async session({ session, token, user }) {
// Send properties to the client, like an access_token from a provider.
session.accessToken = token.accessToken
session.user.id = await getUserID(session.user.email, session.user.name) <<====
session.user.acesso = await getAcesso(session.user.email) <<====
return session
}
},
});
Para ter acesso as informações em tempo de execução usando o UseSession() do Next-auth, eu adicionei id e acesso ao token session.user.
sinalizado acima nesse trecho:
async session({ session, token, user }) {
...
session.user.id = await getUserID(session.user.email, session.user.name) <<====
session.user.acesso = await getAcesso(session.user.email) <<====
...
}
Mas isso não me parece uma boa prática, visto que está sendo exposto no front end, o acesso e o id do usuário.
Então como fazer para autenticar o acesso e o id do usuário, para que eu possa fazer os gets nos useEffects, e definir o acesso as rotas.
A aplicação está upada na Vercel.
Estou usando NextAuth validando apenas com o Google e o GitHub.
Os Gets estou fazendo com o Axios.
Exemplo de Get
useEffect ( () => {
const result = axios(
'api/prays', { params: {id: session.user.id} }
);
result.then( data=> setDados(data.data.data))
}, [setDados])
Visto ser uma questão de segurança do usuário não quero lançar a ferramenta ser resolver essa questão.
Grato por quem puder ajudar.