diff --git a/pom.xml b/pom.xml index 39fff25f0769e449ac776a1e0e2ce078eb4d20b6..17b76ca6305e77c3c5b1f2781d78e72b0a1653da 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 0000000000000000000000000000000000000000..9abb03c8afda2c8bf9b943c1a314cc6965d72f8b --- /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 724a4f728abf803e4c184e74a620905a31d14e09..4c391ddbc1dc3aa63671fd5f1ca8539517fb5ee1 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 4ae05b33a3bf8c83b2a06289fb81a4062d237443..75f17df8701118a7843ba9f3a6356501b8e7f031 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 3905be5a4e747829a4161735f2e74a11f1caa7ef..bd3af6d32cd4c41bd9fb412aedb68650194ec5a9 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 0000000000000000000000000000000000000000..ca92f4f1fdc605385c12db9ce0a4b7d17bf8f60d --- /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 0000000000000000000000000000000000000000..17e461351693bbc6d36070a37073fa9ff8ec531d --- /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 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391