Search
 
SCRIPT & CODE EXAMPLE
 

JAVASCRIPT

How to handle protected routes in React plus redirect user to original URL being visited

import { Route, Redirect } from "react-router-dom";

export const ProtectedRoute = ({ role, ...rest }) => {
  const currentRole = JSON.parse(localStorage.getItem("role"));
  if (currentRole === role) {
    return <Route {...rest} />;
  } else {
    return (
      <Redirect
        to={{
          pathname: currentRole ? "/" : "/login",
          state: {
            from: rest.location
          }
        }}
      />
    );
  }
};


// Login Component (handled redirection to the URL being accessed)
import { useHistory, useLocation } from "react-router-dom";

const Login = () => {
  const history = useHistory();
  const { state } = useLocation();

  const [email, setEmail] = useState("");
  const [password, setPassword] = useState("");

  const onSubmit = (email, password) => {
    const user = loginData.find(
      (el) => el.email === email && el.password === password
    );

    if (user) {
      localStorage.setItem("role", JSON.stringify(user.access));
      history.replace(state.from ?? "/");
    } else {
      console.error("no user match found!");
    }
  };

  return (
    <div>
      ....
    </div>
  );
};
Comment

PREVIOUS NEXT
Code Example
Javascript :: gsap cdn not working 
Javascript :: react router v6 wrapped routes in separate files 
Javascript :: how scroll bottom simplebar in vue js 
Javascript :: how to make a tampermonkey script for all pages 
Javascript :: how to plot a line only for current day pinescript 
Javascript :: curl --post with api 
Javascript :: how to import images from public folder in react js 
Javascript :: JavaScript code to convert amount in words 
Javascript :: input should reject non-alphabetical input reacj js 
Javascript :: create a friend component react js 
Javascript :: how-to get selected value of a dropdown menu in reactjs 
Javascript :: styling font awesome icons next js 
Javascript :: Get JSON Key In Array Alternative Syntax 
Javascript :: Return A "Constructor" Function 
Javascript :: react using props and parent state 
Javascript :: how to uitree clone in jquery 
Javascript :: prevent form submit twice jquery 
Javascript :: jqxAngular 
Javascript :: calculate avg count from month in year js 
Javascript :: get file name with extension netsuite suitescript 
Javascript :: save slug on schema pre save in node js 
Javascript :: make navigation open when items are active 
Javascript :: telerik jquery grid set page size 
Javascript :: nextjs on route change content not changing 
Javascript :: VM1658:1 Uncaught (in promise) SyntaxError: Unexpected token < in JSON at position 0 
Javascript :: express docs 
Javascript :: menu with dynamic submenu in javascript 
Javascript :: html select structure 
Javascript :: javascript spread operator works on what structure 
Javascript :: nodejs mysql escaping query 
ADD CONTENT
Topic
Content
Source link
Name
5+3 =