diff --git a/Back-end/src/main/java/com/example/starter/MainVerticle.java b/Back-end/src/main/java/com/example/starter/MainVerticle.java index 4d33ccf..d4ed9d5 100644 --- a/Back-end/src/main/java/com/example/starter/MainVerticle.java +++ b/Back-end/src/main/java/com/example/starter/MainVerticle.java @@ -40,6 +40,7 @@ public class MainVerticle extends AbstractVerticle { router.get("/objets").handler(this::getObjects); router.get("/objet").handler(this::getParticularObject); router.post("/signup").handler(this::handleSignup); // Route pour l'inscription + router.post("/signup").handler(this::get) // Création du serveur HTTP vertx.createHttpServer() @@ -156,6 +157,12 @@ public class MainVerticle extends AbstractVerticle { context.response() .setStatusCode(201) .end(new JsonObject().put("message", "Utilisateur inscrit avec succès").encode()); + vertx.setTimer(2000, id -> { + context.response() + .putHeader("Location", "/") // Redirection vers la page d'accueil + .setStatusCode(303) + .end(); + }); }) .onFailure(err -> { // Log pour afficher l'erreur d'insertion diff --git a/Front-end/public/images/snow.jpg b/Front-end/public/images/snow.jpg new file mode 100644 index 0000000..a9e9abd Binary files /dev/null and b/Front-end/public/images/snow.jpg differ diff --git a/Front-end/src/App.jsx b/Front-end/src/App.jsx index 49c675c..ed03803 100644 --- a/Front-end/src/App.jsx +++ b/Front-end/src/App.jsx @@ -6,6 +6,7 @@ import Header from "./components/Header.jsx"; import ObjectManagement from "./pages/Gestion/ObjectManagement.jsx"; import Objet from "./pages/Gestion/Objet.jsx"; import Signup from './pages/Signup.jsx'; +import Login from './pages/Login.jsx'; function App() { return ( @@ -19,6 +20,7 @@ function App() { } /> } /> } /> + }/> diff --git a/Front-end/src/components/Header.jsx b/Front-end/src/components/Header.jsx index b187e46..c50e3b4 100644 --- a/Front-end/src/components/Header.jsx +++ b/Front-end/src/components/Header.jsx @@ -22,10 +22,10 @@ function Header() {
- + Inscription diff --git a/Front-end/src/pages/Home.jsx b/Front-end/src/pages/Home.jsx index fbef07b..057a81d 100644 --- a/Front-end/src/pages/Home.jsx +++ b/Front-end/src/pages/Home.jsx @@ -7,7 +7,9 @@ function Home() { return ( -
Home +
Home + +
) } diff --git a/Front-end/src/pages/Login.jsx b/Front-end/src/pages/Login.jsx new file mode 100644 index 0000000..5c2d30b --- /dev/null +++ b/Front-end/src/pages/Login.jsx @@ -0,0 +1,116 @@ +import React, { useState } from 'react'; +import { Mail, Lock } from 'lucide-react'; +import { useNavigate, Link } from 'react-router-dom'; // Importation du hook useNavigate + +function Login() { + const [formData, setFormData] = useState({ + email: '', + password: '' + }); + const navigate = useNavigate(); // Initialisation de useNavigate + + const handleChange = (e) => { + const { name, value } = e.target; + setFormData(prev => ({ + ...prev, + [name]: value + })); + }; + + const handleSubmit = async (e) => { + e.preventDefault(); + + try { + const response = await fetch("http://localhost:8888/login", { + method: "POST", + headers: { + "Content-Type": "application/json", + }, + body: JSON.stringify(formData), + }); + + const data = await response.json(); + + if (!response.ok) { + throw new Error(data.error || "Erreur lors de la connexion"); + } + + alert("Connexion réussie !"); + + // Redirection vers la page d'accueil après une connexion réussie + navigate("/home"); // Remplace "/home" par l'URL de ta page d'accueil + } catch (error) { + alert(error.message); + } + }; + + return ( +
+
+

Connexion

+
+ {/* Email */} +
+ +
+
+ +
+ +
+
+ + {/* Mot de passe */} +
+ +
+
+ +
+ +
+
+ + {/* Bouton de connexion */} +
+ +
+ + {/* Lien vers la page d'inscription */} +
+

+ Vous n'avez pas de compte ? + Inscrivez-vous ici +

+
+
+
+
+ ); +} + +export default Login; diff --git a/Front-end/src/pages/Signup.jsx b/Front-end/src/pages/Signup.jsx index 415634e..0e1a2c8 100644 --- a/Front-end/src/pages/Signup.jsx +++ b/Front-end/src/pages/Signup.jsx @@ -1,5 +1,6 @@ import React, { useState } from 'react'; -import { Mail, User, Lock, Calendar } from 'lucide-react'; +import { Mail, User, Lock } from 'lucide-react'; +import { useNavigate, Link} from 'react-router-dom'; // Importation du hook useNavigate function Signup() { const [formData, setFormData] = useState({ @@ -10,6 +11,7 @@ function Signup() { password: '', confirmPassword: '' }); + const navigate = useNavigate(); // Initialisation de useNavigate const handleChange = (e) => { const { name, value } = e.target; @@ -43,17 +45,20 @@ function Signup() { } alert("Inscription réussie !"); + + // Redirection vers la page d'accueil après une inscription réussie + navigate("/home"); // Remplace "/home" par l'URL de ta page d'accueil } catch (error) { alert(error.message); } }; - return (

Inscription

+ {/* Formulaire (Nom, Prénom, Sexe, Email, Mot de passe) */}
+ + {/* Sexe */}
- + + {/* Email */}
-
+ {/* Mot de passe */}
+ {/* Confirmer mot de passe */}
- - + {/* Bouton d'inscription */}
+
+

+ Vous avez déjà un compte ? + Connectez-vous ici +

+
+ ); } -export default Signup; \ No newline at end of file +export default Signup;