From 5a32ca9a6869dff06f0918c193fc1c93da14fa68 Mon Sep 17 00:00:00 2001 From: Lukian LEIZOUR Date: Thu, 6 Jun 2024 14:48:07 +0200 Subject: [PATCH] commit --- src/App.jsx | 2 ++ src/assets/UserVerfication.jsx | 55 +++++++++++++++++++++++++++++++ src/pages/Admin.jsx | 60 ++++++++++++++++++++++++++++++++++ src/pages/Home.jsx | 9 ++++- src/pages/Login.jsx | 21 ++++++------ src/pages/Register.jsx | 9 +---- 6 files changed, 136 insertions(+), 20 deletions(-) create mode 100644 src/assets/UserVerfication.jsx create mode 100644 src/pages/Admin.jsx diff --git a/src/App.jsx b/src/App.jsx index 7c87efa..3879623 100644 --- a/src/App.jsx +++ b/src/App.jsx @@ -10,6 +10,7 @@ library.add(fas, far) import Home from './pages/Home'; import Login from './pages/Login'; import Register from './pages/Register'; +import Admin from './pages/Admin'; export default function App() { @@ -19,6 +20,7 @@ export default function App() { } /> } /> } /> + } /> ) diff --git a/src/assets/UserVerfication.jsx b/src/assets/UserVerfication.jsx new file mode 100644 index 0000000..2f9b411 --- /dev/null +++ b/src/assets/UserVerfication.jsx @@ -0,0 +1,55 @@ +import { useState, useEffect } from 'react'; +import { useNavigate } from "react-router-dom"; +import { FontAwesomeIcon } from '@fortawesome/react-fontawesome' +import axios from "axios"; + +export default function UserVerfication({token}) { + const [users, setUsers] = useState([]); + const [usersLoading, setUsersLoading] = useState(true); + + useEffect(() => { + async function fetchUsers() { + const response = await axios.post("https://leizour.fr/api/v1/admin/getUnVerifiedUsers", { token }) + .catch((error) => {console.error("Error fetching users:", error);}) + setUsers(response.data); + setUsersLoading(false); + } + + fetchUsers(); + }, []); + + function verifyUser(username) { + axios.post("https://leizour.fr/api/v1/admin/verifyUser", { token, username }) + .then(() => { + setUsers(users.filter((user) => user.username !== username)); + }) + .catch((error) => {console.error("Error verifying user:", error);}) + } + + if (usersLoading) { + return
Loading...
+ } + + else if (users.length === 0) { + return
Aucun utilisateur à vérifier
+ } + + else { + return ( +
+ {users.map((user) => { + return ( +
+

{user.username}

+

{user.name}

+

{user.lastname}

+

{user.id}

+ +
+ ) + })} +
+ ) + } + +} \ No newline at end of file diff --git a/src/pages/Admin.jsx b/src/pages/Admin.jsx new file mode 100644 index 0000000..2673410 --- /dev/null +++ b/src/pages/Admin.jsx @@ -0,0 +1,60 @@ +import { useState, useEffect } from 'react'; +import { useNavigate } from "react-router-dom"; +import { FontAwesomeIcon } from '@fortawesome/react-fontawesome' +import axios from "axios"; + +import UserVerfication from '../assets/UserVerfication'; + +export default function Admin() { + const navigate = useNavigate(); + const [user, setUser] = useState(); + const [token, setToken] = useState(); + const [userloading, setUserLoading] = useState(true); + const [section , setSection] = useState(1); + + useEffect(() => { + const tokenLocal = localStorage.getItem("token"); + + function checkToken() { + if (!tokenLocal) { + navigate("/login"); + return; + } + + if (JSON.parse(atob(tokenLocal.split(".")[1])).expiration < Date.now()) { + localStorage.removeItem("token"); + navigate("/login"); + return; + } + + setToken(tokenLocal); + setUser(JSON.parse(atob(tokenLocal.split(".")[1])).user); + setUserLoading(false); + } + + checkToken(); + }, []); + + if (userloading) return
Loading...
; + + return ( +
+

Base de données des jeux Joclud

+
+

Bienvenue, {user.name} !

+ + +
+
+ + +
+ {section === 1 ? : null} +
+ ); +} \ No newline at end of file diff --git a/src/pages/Home.jsx b/src/pages/Home.jsx index b0d37dc..93be473 100644 --- a/src/pages/Home.jsx +++ b/src/pages/Home.jsx @@ -1,4 +1,4 @@ -import { useState, useEffect, useRef } from 'react'; +import { useState, useEffect } from 'react'; import { useNavigate } from "react-router-dom"; import { FontAwesomeIcon } from '@fortawesome/react-fontawesome' import axios from "axios"; @@ -25,6 +25,12 @@ export default function Home() { navigate("/login"); return; } + + if (JSON.parse(atob(tokenLocal.split(".")[1])).expiration < Date.now()) { + localStorage.removeItem("token"); + navigate("/login"); + return; + } setToken(tokenLocal); setUser(JSON.parse(atob(tokenLocal.split(".")[1])).user); @@ -80,6 +86,7 @@ export default function Home() {

Base de données des jeux Joclud

Bienvenue, {user.name} !

+ {user.admin ? : null}