Executando verificação de segurança...
1

[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.

Carregando publicação patrocinada...
0