index.js 2.06 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";
18
import Maintenance from "../container/Auth/Maintenance";
d.arizona's avatar
d.arizona committed
19 20

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

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