privateRoute.js 875 B

1234567891011121314151617181920212223242526
  1. import React from "react"
  2. import { connect } from "react-redux"
  3. import { Redirect, Route } from "react-router"
  4. const PrivateRoute = ({component,roles,auth, ...originProps}) => {
  5. const PageWrapper = (pageProps) => {
  6. const OriginalPage = component;
  7. if(roles.includes('unknown')){
  8. return <OriginalPage {...pageProps} />
  9. }
  10. if(auth === undefined) {
  11. return <Redirect to='/login' />
  12. }
  13. let userLogged = roles.filter(item => auth.includes(item))
  14. if(userLogged){
  15. return <OriginalPage {...pageProps} />
  16. }
  17. return <Redirect to='/login' />
  18. }
  19. return (
  20. <Route component={PageWrapper} {...originProps} />
  21. )
  22. }
  23. const ConnectedPrivateRoute = connect(state => ({auth: state?.auth?.token}))(PrivateRoute)
  24. export default ConnectedPrivateRoute