From b62115f70d8077207fd5bae263e4aadcc69fade6 Mon Sep 17 00:00:00 2001 From: Paul Cancel <paul.cancel.etu@univ-lille.fr> Date: Wed, 27 Nov 2024 15:47:42 +0100 Subject: [PATCH] Avancement spring --- pom.xml | 5 ++ .../MeetingPlannr/MeetingController.java | 46 ++++++++++ .../infoetu/MeetingPlannr/pojo/Meeting.java | 6 +- .../but/infoetu/MeetingPlannr/pojo/User.java | 6 +- .../repository/UserRepository.java | 4 +- src/main/webapp/WEB-INF/jsp/listeAction.jsp | 78 +++++++++++++++++ src/main/webapp/WEB-INF/jsp/login.jsp | 84 +++++++++++++++++++ src/main/webapp/WEB-INF/jsp/signup.jsp | 0 8 files changed, 223 insertions(+), 6 deletions(-) create mode 100644 src/main/java/fr/but/infoetu/MeetingPlannr/MeetingController.java create mode 100644 src/main/webapp/WEB-INF/jsp/listeAction.jsp create mode 100644 src/main/webapp/WEB-INF/jsp/login.jsp create mode 100644 src/main/webapp/WEB-INF/jsp/signup.jsp diff --git a/pom.xml b/pom.xml index 39fff25..17b76ca 100644 --- a/pom.xml +++ b/pom.xml @@ -64,6 +64,11 @@ <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-validation</artifactId> </dependency> + <dependency> + <groupId>org.apache.tomcat.embed</groupId> + <artifactId>tomcat-embed-jasper</artifactId> + <scope>compile</scope> + </dependency> </dependencies> <build> diff --git a/src/main/java/fr/but/infoetu/MeetingPlannr/MeetingController.java b/src/main/java/fr/but/infoetu/MeetingPlannr/MeetingController.java new file mode 100644 index 0000000..9abb03c --- /dev/null +++ b/src/main/java/fr/but/infoetu/MeetingPlannr/MeetingController.java @@ -0,0 +1,46 @@ +package fr.but.infoetu.MeetingPlannr; + +import java.util.Optional; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.ModelAttribute; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; + +import fr.but.infoetu.MeetingPlannr.pojo.User; +import fr.but.infoetu.MeetingPlannr.repository.MeetingRepository; +import fr.but.infoetu.MeetingPlannr.repository.RequestRepository; +import fr.but.infoetu.MeetingPlannr.repository.UserRepository; +import jakarta.servlet.http.HttpSession; +import jakarta.validation.Valid; + +@Controller +public class MeetingController { + @Autowired + MeetingRepository mr; + + @Autowired UserRepository ur; + + @Autowired + RequestRepository rr; + + @RequestMapping(value = "login", method = RequestMethod.GET) + private String loginForm(){ + return "login"; + } + + @RequestMapping(value = "login", method = RequestMethod.POST) + private String loginFormPost(String email, String password, HttpSession session){ + Optional<User> userOpt = ur.findByEmail(email); + if(userOpt.isPresent()){ + User user = userOpt.get(); + if(user.getPassword().equals(password)){ + session.setAttribute("currentUser", user); + + return "listeAction"; + } + } + return "login"; + } +} diff --git a/src/main/java/fr/but/infoetu/MeetingPlannr/pojo/Meeting.java b/src/main/java/fr/but/infoetu/MeetingPlannr/pojo/Meeting.java index 724a4f7..4c391dd 100644 --- a/src/main/java/fr/but/infoetu/MeetingPlannr/pojo/Meeting.java +++ b/src/main/java/fr/but/infoetu/MeetingPlannr/pojo/Meeting.java @@ -1,6 +1,6 @@ package fr.but.infoetu.MeetingPlannr.pojo; -import java.sql.Date; +import java.time.LocalDate; import jakarta.persistence.Entity; import jakarta.persistence.GeneratedValue; @@ -29,9 +29,9 @@ public class Meeting { private Request request; @ManyToOne - @JoinColumn(name = "rno") + @JoinColumn(name = "uno") private User user; @NotNull(message = REQUIRED) - private Date date; + private LocalDate date; } diff --git a/src/main/java/fr/but/infoetu/MeetingPlannr/pojo/User.java b/src/main/java/fr/but/infoetu/MeetingPlannr/pojo/User.java index 4ae05b3..75f17df 100644 --- a/src/main/java/fr/but/infoetu/MeetingPlannr/pojo/User.java +++ b/src/main/java/fr/but/infoetu/MeetingPlannr/pojo/User.java @@ -1,11 +1,12 @@ package fr.but.infoetu.MeetingPlannr.pojo; -import java.sql.Date; +import java.time.LocalDate; import jakarta.persistence.Entity; import jakarta.persistence.GeneratedValue; import jakarta.persistence.GenerationType; import jakarta.persistence.Id; +import jakarta.persistence.Table; import jakarta.validation.constraints.Email; import jakarta.validation.constraints.NotNull; import jakarta.validation.constraints.PastOrPresent; @@ -19,6 +20,7 @@ import lombok.NoArgsConstructor; @AllArgsConstructor @Data @NoArgsConstructor +@Table(name = "users") public class User { private static final String REQUIRED = "is required"; @@ -45,7 +47,7 @@ public class User { @NotNull(message = REQUIRED) @PastOrPresent(message = "date must be within the past") - private Date birthdate; + private LocalDate birthdate; @NotNull(message = REQUIRED) @Size(min = 8, message = "password too short") diff --git a/src/main/java/fr/but/infoetu/MeetingPlannr/repository/UserRepository.java b/src/main/java/fr/but/infoetu/MeetingPlannr/repository/UserRepository.java index 3905be5..bd3af6d 100644 --- a/src/main/java/fr/but/infoetu/MeetingPlannr/repository/UserRepository.java +++ b/src/main/java/fr/but/infoetu/MeetingPlannr/repository/UserRepository.java @@ -1,9 +1,11 @@ package fr.but.infoetu.MeetingPlannr.repository; +import java.util.Optional; + import org.springframework.data.repository.CrudRepository; import fr.but.infoetu.MeetingPlannr.pojo.User; public interface UserRepository extends CrudRepository<User, Integer>{ - + Optional<User> findByEmail(String email); } diff --git a/src/main/webapp/WEB-INF/jsp/listeAction.jsp b/src/main/webapp/WEB-INF/jsp/listeAction.jsp new file mode 100644 index 0000000..ca92f4f --- /dev/null +++ b/src/main/webapp/WEB-INF/jsp/listeAction.jsp @@ -0,0 +1,78 @@ +<%@ page contentType="text/html;charset=UTF-8" language="java" %> +<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> +<!DOCTYPE html> +<html> +<head> + <title>Liste des Actions</title> + <style> + body { + font-family: Arial, sans-serif; + margin: 0; + padding: 0; + background-color: #f4f4f9; + } + .container { + max-width: 800px; + margin: 50px auto; + padding: 20px; + background-color: #fff; + border-radius: 8px; + box-shadow: 0 0 10px rgba(0, 0, 0, 0.1); + } + h1 { + text-align: center; + color: #333; + } + .actions { + display: flex; + flex-direction: column; + gap: 15px; + } + .actions button { + padding: 10px 20px; + font-size: 16px; + color: #fff; + background-color: #007bff; + border: none; + border-radius: 4px; + cursor: pointer; + transition: background-color 0.3s; + } + .actions button:hover { + background-color: #0056b3; + } + .actions button.logout { + background-color: #dc3545; + } + .actions button.logout:hover { + background-color: #c82333; + } + </style> +</head> +<body> + <div class="container"> + <h1>Actions Disponibles</h1> + <div class="actions"> + <!-- Bouton pour voir le calendrier et poser des requêtes --> + <form action="/calendar" method="get"> + <button type="submit">Voir le Calendrier</button> + </form> + + <!-- Bouton pour accéder à ses rendez-vous --> + <form action="/appointments" method="get"> + <button type="submit">Mes Rendez-Vous</button> + </form> + + <!-- Bouton pour voir les détails de son profil --> + <form action="/profile" method="get"> + <button type="submit">Mon Profil</button> + </form> + + <!-- Bouton pour se déconnecter --> + <form action="/logout" method="post"> + <button type="submit" class="logout">Se Déconnecter</button> + </form> + </div> + </div> +</body> +</html> diff --git a/src/main/webapp/WEB-INF/jsp/login.jsp b/src/main/webapp/WEB-INF/jsp/login.jsp new file mode 100644 index 0000000..17e4613 --- /dev/null +++ b/src/main/webapp/WEB-INF/jsp/login.jsp @@ -0,0 +1,84 @@ +<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> +<!DOCTYPE html> +<html> +<head> + <title>Login</title> + <style> + body { + font-family: Arial, sans-serif; + margin: 0; + padding: 0; + background-color: #f4f4f9; + } + .container { + max-width: 400px; + margin: 100px auto; + padding: 20px; + background: #ffffff; + border: 1px solid #ddd; + box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1); + } + h2 { + text-align: center; + color: #333; + } + .form-group { + margin-bottom: 15px; + } + label { + display: block; + margin-bottom: 5px; + color: #555; + } + input[type="email"], + input[type="password"] { + width: 100%; + padding: 10px; + border: 1px solid #ccc; + border-radius: 5px; + font-size: 14px; + } + button { + width: 100%; + padding: 10px; + background: #007bff; + border: none; + color: white; + font-size: 16px; + border-radius: 5px; + cursor: pointer; + } + button:hover { + background: #0056b3; + } + .error { + color: red; + font-size: 14px; + } + </style> +</head> +<body> + <div class="container"> + <h2>Login</h2> + <form action="login" method="POST"> + <div class="form-group"> + <label for="email">Email :</label> + <input type="email" id="email" name="email" placeholder="Entrez votre email"> + </div> + <div class="form-group"> + <label for="password">Mot de passe :</label> + <input type="password" id="password" name="password" placeholder="Entrez votre mot de passe"> + </div> + <button type="submit">Se connecter</button> + </form> + <% + String errorMessage = (String) request.getAttribute("errorMessage"); + if (errorMessage != null) { + %> + <div class="error"><%= errorMessage %></div> + <% + } + %> + </div> +</body> +</html> diff --git a/src/main/webapp/WEB-INF/jsp/signup.jsp b/src/main/webapp/WEB-INF/jsp/signup.jsp new file mode 100644 index 0000000..e69de29 -- GitLab