robertvari

Protected route

May 3rd, 2020
150
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. import React, {useContext, useEffect, useState} from 'react';
  2. import {Route, Redirect} from 'react-router-dom';
  3.  
  4. import {UserContext} from "./contexts/UserContext";
  5. import {useCookies} from "react-cookie";
  6.  
  7. function ProtectedRoute({component: Component, ...rest}) {
  8.     const {user, set_user} = useContext(UserContext);
  9.     const [cookies, setCookie] = useCookies();
  10.     const [loading, set_loading] = useState(true);
  11.  
  12.  
  13.     useEffect(() =>{
  14.         if(cookies.token){
  15.             set_user(cookies.token);
  16.         }
  17.         set_loading(false)
  18.     }, []);
  19.  
  20.     return (
  21.         <Route {...rest} render={
  22.             (props) => {
  23.                 if(loading){
  24.                     return null
  25.                 }else{
  26.                     if(user){
  27.                         return <Component {...props}/>
  28.                     }else{
  29.                         return <Redirect to={
  30.                             {
  31.                               pathname: '/login',
  32.                               state: {
  33.                                 from: props.location
  34.                               }
  35.                             }
  36.                         }/>
  37.                     }
  38.                 }
  39.             }
  40.         }/>
  41.     );
  42. }
  43.  
  44. export default ProtectedRoute;
Add Comment
Please, Sign In to add comment