index.js 988 B

123456789101112131415161718192021222324252627282930313233
  1. import React from 'react';
  2. import { Route, Redirect } from 'react-router-dom';
  3. import * as routes from './../../../constants/routes';
  4. import PermissionDenied from './../../public-components/permissionDenied';
  5. export default ({ component: Component, user, access, ...rest }) => (
  6. <Route
  7. {...rest}
  8. render={props => {
  9. if (access === 'public') {
  10. return <Component {...props} />
  11. }
  12. if ( (access === 'user-only' || access === 'admin-only') && !user.data ) {
  13. return <Redirect to={routes.SIGN_IN}/>
  14. }
  15. if (access === 'user-only' && user.data) {
  16. return <Component {...props} />
  17. }
  18. if (access === 'admin-only') {
  19. if (user.isAdmin) {
  20. return <Component {...props} />
  21. }
  22. return <PermissionDenied />
  23. }
  24. }}
  25. />
  26. )