Разные маршруты для разных пользователей. - PullRequest
0 голосов
/ 04 мая 2020

Недавно я играл с приложением React и настраивал страницу входа пользователя с панелью управления (только если loggedIn === true). Я сделал это с защищенными маршрутами, и он безупречно работает с приведенным ниже кодом:

const App = () => {
  return (
    <AuthProvider>
      <Router>
        <Switch>
          <Route exact path="/" component={LandingPage} />
          <Route exact path="/LoginPage" component={LoginPage} />
          <Route exact path="/SignUpPage" component={SignUpPage} />

          <PrivateRoute exact path = "/HomePage" component={HomePage} />

          <Route exact path = "*" component={PageNotFoundPage} />
        </Switch>
      </Router>
    </AuthProvider>
  );
};

и с PrivateRoute

const PrivateRoute = ({ component: RouteComponent, ...rest }) => {
  const {currentUser} = useContext(AuthContext);

  //If login is good, allow access or redirect to login
  if (!!currentUser) {
    return(
      <Route
        {...rest}
        render={routeProps =>
            <RouteComponent {...routeProps}
              currentUser={currentUser}/>
        }
      />
    )
  } else {
    //Bad login
    return(
      <Route
        {...rest}
        render={routeProps => (
            <Redirect to={"/LoginPage"} />
          )
        }
      />
    )
  }
};

Мой вопрос: если бы я сказал, что у меня есть разные типы вошли в систему пользователи с совершенно разными функциями, но в одном приложении, нужно ли мне иметь два разных PrivateRoute, например PrivateRouteTeacher и PrivateRouteStudent? Или в этом нет необходимости, и может быть лучше просто проверить userType в одном PrivateRoute?

...