From c2f4c9fa55afe3289df33f5b694e9f9a8aec31a1 Mon Sep 17 00:00:00 2001 From: T'JAMPENS QUENTIN p2406187 Date: Wed, 17 Dec 2025 15:20:51 +0100 Subject: [PATCH] Redirect to 404 page if user not found --- .../VolunteerProfile/VolunteerProfilePage.jsx | 16 ++++++++++++---- src/router.js | 4 ++++ src/utils/users/getUserById.js | 9 ++++++--- 3 files changed, 22 insertions(+), 7 deletions(-) diff --git a/src/pages/VolunteerProfile/VolunteerProfilePage.jsx b/src/pages/VolunteerProfile/VolunteerProfilePage.jsx index 06b4ee3..1f18805 100644 --- a/src/pages/VolunteerProfile/VolunteerProfilePage.jsx +++ b/src/pages/VolunteerProfile/VolunteerProfilePage.jsx @@ -4,20 +4,28 @@ import { useEffect, useState } from "react"; import getUserById from "../../utils/users/getUserById.js"; import formatDate from "../../utils/date/formatDate.js"; import Task from "../../components/Task/Task.jsx"; +import { useNavigate } from "react-router"; export default function VolunteerProfilePage() { const params = useParams(); const id = params.id; + const navigate = useNavigate(); + const [user, setUser] = useState({}); useEffect(() => { (async () => { - const data = await getUserById(id); - setUser(data); - }) () - }, []); + const result = await getUserById(id); + if (result?.error === 'not_found') { + navigate("/404"); + } else { + setUser(result); + } + })(); + }, [id]); + return
diff --git a/src/router.js b/src/router.js index 7b34c16..e9b0c56 100644 --- a/src/router.js +++ b/src/router.js @@ -28,6 +28,10 @@ const router = createBrowserRouter([ path: "/*", Component: PageNotFound, }, + { + path: "/404", + Component: PageNotFound, + }, { path: "/", Component: Layout, diff --git a/src/utils/users/getUserById.js b/src/utils/users/getUserById.js index 59af94a..1fad659 100644 --- a/src/utils/users/getUserById.js +++ b/src/utils/users/getUserById.js @@ -1,4 +1,4 @@ -export default async function getUserById (id) { +export default async function getUserById(id) { try { const res = await fetch(`http://${import.meta.env.VITE_API_URL}/api/users/${id}`, { method: 'GET', @@ -9,12 +9,15 @@ export default async function getUserById (id) { }); if (!res.ok) { + if (res.status === 404) { + return { error: 'not_found' }; + } throw new Error(`Erreur serveur : ${res.status}`); } return await res.json(); } catch (err) { console.error('Erreur :', err); - return null; + return { error: 'server_error' }; } -} \ No newline at end of file +}