PrivateRoute.js 853 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, fallback='/login',...originProps}) => {
  5. const PageWrapper = (pageProps) => {
  6. const OriginalPage = component
  7. console.log(auth)
  8. if(roles.includes('unknown')){
  9. return <OriginalPage {...pageProps} />
  10. }
  11. if(auth === undefined) {
  12. return <Redirect to={fallback} />
  13. }
  14. let userL = roles.filter(item => auth.includes(item))
  15. if(userL){
  16. return <OriginalPage {...pageProps} />
  17. }
  18. return <Redirect to={fallback} />
  19. }
  20. return (
  21. <Route component={PageWrapper} {...originProps} />
  22. )
  23. }
  24. const RoleRoute = connect(state => ({auth: state.authReducer?.payload?.sub.acl[1]}))(PrivateRoute)
  25. export default RoleRoute