kandimat/redaktions-app/src/App.tsx
2021-01-09 12:49:28 +01:00

68 lines
1.3 KiB
TypeScript

import "./App.css";
import React from "react";
import Main from "./components/Main";
import { Redirect, Route, Switch } from "react-router-dom";
import SignIn from "./components/SignIn";
import SignUp from "./components/SignUp";
function App() {
return (
<Switch>
<PrivateRoute exact path={"/"}>
<Main />
</PrivateRoute>
<NotLoggedInOnlyRoute path={"/login"}>
<SignIn />
</NotLoggedInOnlyRoute>
<NotLoggedInOnlyRoute path={"/signup"}>
<SignUp />
</NotLoggedInOnlyRoute>
</Switch>
);
}
export const isLoggedIn = () => !!localStorage.getItem("token");
// @ts-ignore
function PrivateRoute({ children, ...rest }) {
return (
<Route
{...rest}
render={({ location }) =>
isLoggedIn() ? (
children
) : (
<Redirect
to={{
pathname: "/login",
state: { from: location },
}}
/>
)
}
/>
);
}
// @ts-ignore
function NotLoggedInOnlyRoute({ children, ...rest }) {
return (
<Route
{...rest}
render={({ location }) =>
!isLoggedIn() ? (
children
) : (
<Redirect
to={{
pathname: "/",
}}
/>
)
}
/>
);
}
export default App;