adding logout and show the username
This commit is contained in:
@@ -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>
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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
6
webapp/src/lib/logout.js
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
function logout({setAuth}) {
|
||||||
|
setAuth(null);
|
||||||
|
localStorage.removeItem('auth');
|
||||||
|
}
|
||||||
|
|
||||||
|
export default logout
|
||||||
@@ -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>
|
||||||
|
|||||||
@@ -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)
|
||||||
|
|||||||
@@ -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)
|
||||||
|
|||||||
Reference in New Issue
Block a user