index.js 1.94 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
  Redirect
d.arizona's avatar
d.arizona committed
7
} from "react-router-dom";
syadziy's avatar
syadziy committed
8 9 10 11 12 13 14 15
import Home from '../container/Menu/Home'
import Login from '../container/Auth/Login'
import Register from '../container/Auth/Register'
import Screen404 from '../container/Auth/Screen404'
import ForgotPassword from '../container/Auth/ForgotPassword'
import ResetPassword from '../container/Auth/ResetPassword'
import SetPassword from '../container/Auth/SetPassword'
import EmailVerification from "../container/Auth/EmailVerification";
d.arizona's avatar
d.arizona committed
16
import Constant from "../library/Constant";
d.arizona's avatar
d.arizona committed
17
import ShadowScreen from "../container/ShadowScreen";
d.arizona's avatar
d.arizona committed
18 19

export default function BasicExample() {
d.arizona's avatar
d.arizona committed
20
  
d.arizona's avatar
d.arizona committed
21
  return (
d.arizona's avatar
d.arizona committed
22
    <Router basename={process.env.REACT_APP_URL_MAIN_FE}>
Deni Rinaldi's avatar
Deni Rinaldi committed
23
      <Switch>
d.arizona's avatar
d.arizona committed
24 25 26
        <Route exact path="/">
          <Redirect
            to={{
d.arizona's avatar
d.arizona committed
27
              pathname: "/home/beranda",
d.arizona's avatar
d.arizona committed
28 29 30
            }}
          />
        </Route>
d.arizona's avatar
d.arizona committed
31
        <Route path="/login" component={Login}/>
EKSAD's avatar
EKSAD committed
32
        <Route path="/forgot-password" component={ForgotPassword} />
EKSAD's avatar
EKSAD committed
33
        <Route path="/reset-password/:id" component={ResetPassword} />
a.bairuha's avatar
a.bairuha committed
34
        <Route path="/set-password/:id" component={SetPassword} />
EKSAD's avatar
EKSAD committed
35
        <Route path="/email-verification" component={EmailVerification} />
d.arizona's avatar
d.arizona committed
36
        <Route path="/register" component={Register}/>
d.arizona's avatar
d.arizona committed
37
        <Route path="/cronjob/:type" component={ShadowScreen}/>
d.arizona's avatar
d.arizona committed
38 39 40
        <PrivateRoute path="/home">
          <Home/>
        </PrivateRoute>
d.arizona's avatar
d.arizona committed
41 42 43
        <Route path="*">
          <Screen404 />
        </Route>
Deni Rinaldi's avatar
Deni Rinaldi committed
44
      </Switch>
d.arizona's avatar
d.arizona committed
45 46
    </Router>
  );
d.arizona's avatar
d.arizona committed
47 48 49
}

function PrivateRoute({ children, ...rest }) {
syadziy's avatar
syadziy committed
50
  const logged = localStorage.getItem(Constant.TOKEN) !== null ? true : false
d.arizona's avatar
d.arizona committed
51
  
d.arizona's avatar
d.arizona committed
52 53 54 55
  return (
    <Route
      {...rest}
      render={({ location }) =>
d.arizona's avatar
d.arizona committed
56 57 58
        logged ? (
          children
        ) : (
d.arizona's avatar
d.arizona committed
59 60 61
          <Redirect
            to={{
              pathname: "/login",
d.arizona's avatar
d.arizona committed
62
              state: { from: location }
d.arizona's avatar
d.arizona committed
63 64
            }}
          />
d.arizona's avatar
d.arizona committed
65
        )
d.arizona's avatar
d.arizona committed
66 67 68
      }
    />
  );
d.arizona's avatar
d.arizona committed
69
}