Перенаправление пользователя на другую страницу зависит от типа пользователя в React - PullRequest
1 голос
/ 27 мая 2019

Я новичок в react and redux. Здесь я пытаюсь перенаправить пользователя на разные страницы на основе userType. Что у меня есть,

Мой файл main.js

class Main extends Component {

  componentDidMount() {
    this.props.isUserAuthenticated();
  }
  render() {
    return (
      <Router history={history}>
        <div>
          {this.props.isFetching && <Loading />}
          <Switch>
            <PrivateRoute exact path="/" component={LandingPage} />
            <PrivateRoute exact path="/create-job" component={NewJob} />
            <PrivateRoute exact path="/create-job/new" component={SelectCriteriaNewJob} />
            <PrivateRoute exact path="/view-job" component={ViewJob} />
            <PrivateRoute exact path="/resume-list/:jdId" component={ResumeList} />
            <PrivateRoute exact path="/DashBoard" component={DashBoard} />
            <Route exact path="/login" component={Login} />
            <Route exact path="/*" component={NotFound} something="foo" />
          </Switch>
        </div>
      </Router>
    )
  }
}

Теперь действие входа в систему есть. где я перенаправляю пользователя на одну страницу, где он решает, куда перенаправить пользователя на основе данных, которые я получил. В настоящее время не логика имени пользователя.

В действии входа в систему,

  export function fetchToken(bodyjson) {
  return (dispatch) => {
    dispatch({
      type: LOGIN_REQUEST
    });
    let url = LOGIN_PATH + "username=" + bodyjson.userName + "&password=" + bodyjson.password;
    return post(url, bodyjson)
      .then((response) => {
        if (response.status === 200) {
          localStorage.setItem('user', bodyjson.username);
          localStorage.setItem('access_token', response.payload.access_token);
          history.push('/');
          dispatch({
            type: LOGIN_SUCCESS,
            data: response.payload,
          })
        }
        else {
          dispatch({
            type: LOGIN_FAILED,
            data: response.status,
          });
        }
      })
  }
}

Теперь в этом действии я перенаправляю пользователя на страницу /, где компонент выглядит так:

  render() {
        if (this.state.isloading) {
          return null;
        }
        else if (this.props.jobs) {
          return <JobList />;
        } else if (this.props.error) {
          return <ErrorComponent />
        }
        else {
          return <Redirect to="/create-job" />
        }
      }
    }

Теперь, когда пользователь заходит в это время, я получил один токен, который является JWT, этот токен содержит некоторую информацию. Итак, здесь я хочу перенаправить пользователя на страницу /Dashboard, если тип пользователя - admin. Таким образом, могут быть разные роли, так что Есть ли способ, которым я могу сделать это?

Спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...