You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
88 lines
2.1 KiB
88 lines
2.1 KiB
import "./App.css";
|
|
import { Fragment, useState, useEffect } from "react";
|
|
import { ToastContainer, toast } from "react-toastify";
|
|
import "react-toastify/dist/ReactToastify.css";
|
|
|
|
import {
|
|
BrowserRouter as Router,
|
|
Route,
|
|
Routes,
|
|
Navigate,
|
|
} from "react-router-dom";
|
|
|
|
import Login from "./components/Login";
|
|
import Dashboard from "./components/Dashboard";
|
|
import Register from "./components/Register";
|
|
|
|
toast.configure();
|
|
function App() {
|
|
const [isAuthenticated, setIsAuthenticated] = useState(false);
|
|
|
|
const setAuth = (boolean) => {
|
|
setIsAuthenticated(boolean);
|
|
};
|
|
|
|
const isAuth = async () => {
|
|
try {
|
|
const response = await fetch("http://localhost:5000/auth/is-verify", {
|
|
method: "GET",
|
|
headers: { token: localStorage.token },
|
|
});
|
|
|
|
const parseRes = await response.json();
|
|
|
|
parseRes === true ? setIsAuthenticated(true) : setIsAuthenticated(false);
|
|
} catch (error) {
|
|
console.log(error.message);
|
|
}
|
|
};
|
|
|
|
useEffect(() => {
|
|
isAuth();
|
|
}, []);
|
|
return (
|
|
<Fragment>
|
|
<ToastContainer />
|
|
<Router>
|
|
<div className="container">
|
|
<Routes>
|
|
<Route path="/" element={<Navigate to="/login" />} />
|
|
<Route
|
|
path="/login"
|
|
element={
|
|
!isAuthenticated ? (
|
|
<Login setAuth={setAuth} />
|
|
) : (
|
|
<Navigate to="/dashboard" />
|
|
)
|
|
}
|
|
/>
|
|
<Route
|
|
path="/register"
|
|
element={
|
|
!isAuthenticated ? (
|
|
<Register setAuth={setAuth} />
|
|
) : (
|
|
<Navigate to="/login" />
|
|
)
|
|
}
|
|
/>
|
|
<Route
|
|
path="/dashboard"
|
|
element={
|
|
isAuthenticated ? (
|
|
<Dashboard setAuth={setAuth} />
|
|
) : (
|
|
<Navigate to="/login" />
|
|
)
|
|
}
|
|
/>
|
|
</Routes>
|
|
</div>
|
|
</Router>
|
|
</Fragment>
|
|
);
|
|
}
|
|
|
|
export default App;
|