Auth admin React

Estou tentando fazer uma autenticação pra saber se o usuário e Admin ou não, mas quando eu coloco a função como async, await para fazer um get, ele não me retorna true ou false.

Função que faz o redirect:

const AdminPrivateRoute = ({ component: Component, ...rest }) => (
      <Route
        {...rest}
        render={props =>
          isAdmin() ? (
            <Component {...props} />
          ) : (                
            <Redirect to={{ pathname: "/", state: { from: props.location } }} />
          )
        }
      />
);

Função que faz o auth:

import api from '../services/api';

export const isAdmin = async () =>  {
       var role = sessionStorage.getItem('role');
       const response = await api.get(`/role/listar/${role}`)   
       console.log(response.data.data.role)

       if (response.data.data.role !== "admin") {
             return false
       } else {
             return true
       }
}

isso ta certo? response.data.data? é apenas response.data.role

  • O que retorna sua api.get(/role/listar/${role}) ?
  • Se você tem gravado sessionStorage.getItem('role') não é só comparar?
  • Código refatoração:

Se você está fazendo uma comparação já retornar true ou false, então:

//já é o suficiente para true ou false
return (response.data.data.role !== "admin");

Esse seu código parece que tem alguns problemas pontuais.

Tudo que você responde vai depender do primeiro item onde qual é o retorno e porque desse retorno.

Sim, ele retorna, “admin” ou “usuario”

Retorna o nome da role do usuário do sistema, admin ou usuario, se for admin acessa outras telas se for usuário eu vou restringir.

Se pudesse me dar uma outra opção ficaria muito grato.