Auth admin React

4 respostas
reactapijavascript
G

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
       }
}

4 Respostas

thimor

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

Dragoon
  • 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.

G

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

G

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.

Criado 25 de outubro de 2019
Ultima resposta 28 de out. de 2019
Respostas 4
Participantes 3