index.js 2.1 KB
Newer Older
d.arizona's avatar
d.arizona committed
1 2 3 4 5
import React from "react";
import {
  BrowserRouter as Router,
  Switch,
  Route,
d.arizona's avatar
d.arizona committed
6
  Link,
d.arizona's avatar
d.arizona committed
7 8
  useLocation,
  Redirect
d.arizona's avatar
d.arizona committed
9
} from "react-router-dom";
d.arizona's avatar
d.arizona committed
10 11 12
import Home from '../container/Home'
import Login from '../container/Login'
import Register from '../container/Register'
d.arizona's avatar
d.arizona committed
13
import Screen404 from '../container/Screen404'
EKSAD's avatar
EKSAD committed
14
import ForgotPassword from '../container/ForgotPassword'
EKSAD's avatar
EKSAD committed
15
import ResetPassword from '../container/ResetPassword'
EKSAD's avatar
EKSAD committed
16
import EmailVerification from "../container/EmailVerification";
d.arizona's avatar
d.arizona committed
17
import Constant from "../library/Constant";
d.arizona's avatar
d.arizona committed
18 19 20 21 22 23 24 25 26 27 28
// This site has 3 pages, all of which are rendered
// dynamically in the browser (not server rendered).
//
// Although the page does not ever refresh, notice how
// React Router keeps the URL up to date as you navigate
// through the site. This preserves the browser history,
// making sure things like the back button and bookmarks
// work properly.

export default function BasicExample() {
  return (
d.arizona's avatar
d.arizona committed
29
    <Router basename={"/tia-web"}>
Deni Rinaldi's avatar
Deni Rinaldi committed
30
      <Switch>
d.arizona's avatar
d.arizona committed
31 32 33
        <Route exact path="/">
          <Redirect
            to={{
d.arizona's avatar
d.arizona committed
34
              pathname: "/home/beranda",
d.arizona's avatar
d.arizona committed
35 36 37 38
              // state: { from: location }
            }}
          />
        </Route>
d.arizona's avatar
d.arizona committed
39 40 41
        <Route path="/login" component={Login}/>
          {/* <Login/>
        </PrivateRoute> */}
EKSAD's avatar
EKSAD committed
42 43 44
        <Route path="/forgot-password" component={ForgotPassword} />
        <Route path="/reset-password" component={ResetPassword} />
        <Route path="/email-verification" component={EmailVerification} />
d.arizona's avatar
d.arizona committed
45
        <Route path="/register" component={Register}/>
d.arizona's avatar
d.arizona committed
46 47 48
        <PrivateRoute path="/home">
          <Home/>
        </PrivateRoute>
d.arizona's avatar
d.arizona committed
49 50 51
        <Route path="*">
          <Screen404 />
        </Route>
Deni Rinaldi's avatar
Deni Rinaldi committed
52
      </Switch>
d.arizona's avatar
d.arizona committed
53 54
    </Router>
  );
d.arizona's avatar
d.arizona committed
55 56 57
}

function PrivateRoute({ children, ...rest }) {
d.arizona's avatar
d.arizona committed
58
  const logged = localStorage.getItem(Constant.TOKEN) !== null? true : false
d.arizona's avatar
d.arizona committed
59 60 61 62
  return (
    <Route
      {...rest}
      render={({ location }) =>
d.arizona's avatar
d.arizona committed
63 64 65
        logged ? (
          children
        ) : (
d.arizona's avatar
d.arizona committed
66 67 68
          <Redirect
            to={{
              pathname: "/login",
d.arizona's avatar
d.arizona committed
69
              state: { from: location }
d.arizona's avatar
d.arizona committed
70 71
            }}
          />
d.arizona's avatar
d.arizona committed
72
        )
d.arizona's avatar
d.arizona committed
73 74 75
      }
    />
  );
d.arizona's avatar
d.arizona committed
76
}