From e0d43215413d156cd210b04fa6eff4058eb4408d Mon Sep 17 00:00:00 2001 From: Sergio-Bianchi Date: Fri, 24 Oct 2025 19:51:59 +0200 Subject: [PATCH] Aggiungendo funzioni per gestire il login. Da riformattare il codice --- backend/api/cors.php | 20 +++++++++++++ backend/api/login.php | 49 +++++++++++++++++++++++++++++++ backend/api/search.php | 13 ++++++-- backend/services/Access.php | 2 +- frontend/src/components/Login.tsx | 45 +++++++++++++++++++++++++--- frontend/src/main.tsx | 4 +-- 6 files changed, 122 insertions(+), 11 deletions(-) create mode 100644 backend/api/cors.php create mode 100644 backend/api/login.php diff --git a/backend/api/cors.php b/backend/api/cors.php new file mode 100644 index 0000000..6434d81 --- /dev/null +++ b/backend/api/cors.php @@ -0,0 +1,20 @@ + "fail", + 'data' => [ + + ], +]; + +if ($username && $password) { + $result = Access::login($username, $password); + if ($result && $result->num_rows > 0) { + $answer['status'] = "success"; + $answer['data'] = [ + 'username' => $username, + ]; + http_response_code(200); + echo json_encode($answer); + } else { + http_response_code(401); + $answer['data']['title'] = 'Wrong username or password'; + } +} else { + $answer['data']['title'] = 'Please insert username and password'; + http_response_code(400); + echo json_encode($answer); +} +exit; + + + diff --git a/backend/api/search.php b/backend/api/search.php index db602b5..539664c 100644 --- a/backend/api/search.php +++ b/backend/api/search.php @@ -2,21 +2,28 @@ use services\Search; -header("Access-Control-Allow-Origin: http://localhost:3000"); +session_start(); + +header("Access-Control-Allow-Origin: http://localhost:5173"); header("Access-Control-Allow-Methods: GET"); header("Access-Control-Allow-Headers: Content-Type"); header("Content-Type: application/json"); require_once __DIR__ . '/../services/Search.php'; + + // Get the search query parameter $username = isset($_GET['username']) ? $_GET['username'] : ''; +$_SESSION['username'] = $username; + + + $result = Search::searchByUsername($username); if ($result->num_rows == 0) { echo "Utente " . $username . " non trovato"; - return; + exit; } else { echo json_encode(array_values($result->fetch_assoc())); - } ?> \ No newline at end of file diff --git a/backend/services/Access.php b/backend/services/Access.php index 2fd8774..4cfedbd 100644 --- a/backend/services/Access.php +++ b/backend/services/Access.php @@ -1,7 +1,7 @@ (null) + + const handleSubmit = async (e: React.FormEvent) => { + e.preventDefault() + setLoading(true); + setError(null); + try { + const requestOptions = { + method: 'POST', + headers: {'Content-Type': 'application/json'}, + body: JSON.stringify({username, password}), + credentials: 'include', + }; + const response = await fetch('http://localhost:8000/api/login.php', requestOptions) + const data = await response.json(); + console.log(data) + + if (!response.ok || data.status === 'fail') { + throw new Error(data.data?.message || "Login failed"); + } + console.log("Logged in") + } catch (err: any) { + setError(err.message) + } finally { + setLoading(false) + } + + + } + + return ( <>

Accedi

-
+
- - + setUsername(e.target.value)}/> + setPassword(e.target.value)}/>
diff --git a/frontend/src/main.tsx b/frontend/src/main.tsx index 0bfd0f6..f181a2a 100644 --- a/frontend/src/main.tsx +++ b/frontend/src/main.tsx @@ -7,7 +7,5 @@ import App from './App.tsx' import Topbar from "./components/Topbar.tsx"; createRoot(document.getElementById('root')!).render( - - - + )