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}