adding logout and show the username

This commit is contained in:
2023-12-08 00:50:36 +01:00
parent 80f786ff61
commit 9bcded7f9a
6 changed files with 36 additions and 16 deletions

View File

@@ -1,14 +1,22 @@
import NavListHome from "./navlist"; import NavListHome from "./navlist";
import list from "../list"; import list from "../list";
import LoginButton from "../login-button"; import LoginButton from "../login-button";
import logout from "../../../lib/logout";
function NavbarreHome() { function NavbarreHome({auth, setAuth}) {
return( return(
<nav className="fixed top-0 left-0 h-16 w-full px-4 flex flex-row justify-between items-center text-center"> <nav className="fixed top-0 left-0 h-16 w-full px-4 flex flex-row justify-between items-center text-center">
<div className="h-12 w-12 bg-red-500"> <div className="h-12 w-12 bg-red-500">
</div> </div>
<NavListHome list={list}/> <NavListHome list={list}/>
<LoginButton /> {auth !== null ? (
<div>
<a onClick={() => logout({setAuth})}>logout</a>
<p>{auth.username}</p>
</div>
) : (
<LoginButton/>
) }
</nav> </nav>
) )
} }

View File

@@ -9,21 +9,21 @@ import Register from "./pages/register";
const root = ReactDOM.createRoot(document.getElementById('root')); const root = ReactDOM.createRoot(document.getElementById('root'));
function App() { function App() {
const savedToken = localStorage.getItem('token'); const savedToken = localStorage.getItem('auth');
const [token, setToken] = useState(savedToken ? savedToken : null) const [auth, setAuth] = useState(savedToken ? savedToken : null)
useEffect(() => { useEffect(() => {
if(savedToken !== token){ if(savedToken !== auth){
localStorage.setItem('token', token); localStorage.setItem('auth', auth);
} }
}, [token]); }, [auth]);
return ( return (
<React.StrictMode> <React.StrictMode>
<BrowserRouter> <BrowserRouter>
<Routes> <Routes>
<Route path="/" element={<Home />}/> <Route path="/" element={<Home auth={auth} setAuth={setAuth}/>}/>
<Route path="/login" element={<Login setToken={setToken} />}/> <Route path="/login" element={<Login setAuth={setAuth} />}/>
<Route path="/register" element={<Register setToken={setToken} />}/> <Route path="/register" element={<Register setAuth={setAuth} />}/>
<Route path="/game" element={<Game />}/> <Route path="/game" element={<Game />}/>
</Routes> </Routes>
</BrowserRouter> </BrowserRouter>

6
webapp/src/lib/logout.js Normal file
View File

@@ -0,0 +1,6 @@
function logout({setAuth}) {
setAuth(null);
localStorage.removeItem('auth');
}
export default logout

View File

@@ -2,10 +2,10 @@ import NavbarreHome from "../../components/navbarre/home";
import HomeHero from "../../components/content/home/hero"; import HomeHero from "../../components/content/home/hero";
import Footer from "../../components/content/home/footer"; import Footer from "../../components/content/home/footer";
function Home() { function Home({auth, setAuth}) {
return ( return (
<div className="h-screen w-screen flex flex-col justify-center items-center"> <div className="h-screen w-screen flex flex-col justify-center items-center">
<NavbarreHome /> <NavbarreHome auth={auth} setAuth={setAuth}/>
<HomeHero /> <HomeHero />
<Footer /> <Footer />
</div> </div>

View File

@@ -1,7 +1,7 @@
import {Link, redirect, useNavigate} from "react-router-dom"; import {Link, redirect, useNavigate} from "react-router-dom";
import {useState} from "react"; import {useState} from "react";
import {get, post} from '../../modules/fetcher'; import {get, post} from '../../modules/fetcher';
function Login({setToken}) { function Login({setAuth}) {
const navigate = useNavigate(); const navigate = useNavigate();
const loginUser = async (e) => { const loginUser = async (e) => {
e.preventDefault() e.preventDefault()
@@ -9,7 +9,10 @@ function Login({setToken}) {
.then(async res => { .then(async res => {
if (res.status === 200) { if (res.status === 200) {
console.log(res.JSON.message) console.log(res.JSON.message)
setToken(res.JSON.token) setAuth({
'token': res.JSON.token,
'username': username
})
navigate('/') navigate('/')
} else { } else {
setError(res.message) setError(res.message)

View File

@@ -3,7 +3,7 @@ import {post} from "../../modules/fetcher";
import {useState} from "react"; import {useState} from "react";
function Register({setToken}) { function Register({setAuth}) {
const navigate = useNavigate(); const navigate = useNavigate();
const registerUser = async (e) => { const registerUser = async (e) => {
e.preventDefault() e.preventDefault()
@@ -11,7 +11,10 @@ function Register({setToken}) {
post('https://saucisson.justw.tf/api/users/register', {username, password}, '') post('https://saucisson.justw.tf/api/users/register', {username, password}, '')
.then(async res => { .then(async res => {
if (res.status === 200) { if (res.status === 200) {
setToken(res.JSON.token) setAuth({
'token': res.JSON.token,
'username': username
})
navigate('/') navigate('/')
} else { } else {
setError(res.message) setError(res.message)