diff --git a/src/main/java/fr/but/infoetu/MeetingPlannr/MeetingController.java b/src/main/java/fr/but/infoetu/MeetingPlannr/MeetingController.java index 9abb03c8afda2c8bf9b943c1a314cc6965d72f8b..5437580d9de2ad0576015e2b1f5cd8cf3a9e6b30 100644 --- a/src/main/java/fr/but/infoetu/MeetingPlannr/MeetingController.java +++ b/src/main/java/fr/but/infoetu/MeetingPlannr/MeetingController.java @@ -4,6 +4,8 @@ import java.util.Optional; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; +import org.springframework.ui.Model; +import org.springframework.validation.BindingResult; import org.springframework.web.bind.annotation.ModelAttribute; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; @@ -37,10 +39,36 @@ public class MeetingController { User user = userOpt.get(); if(user.getPassword().equals(password)){ session.setAttribute("currentUser", user); - + System.out.println("Bienvenue " + user.getSurname()); return "listeAction"; } } return "login"; } + + @RequestMapping(value = "register", method = RequestMethod.GET) + private String registerForm(){ + return "register"; + } + + @RequestMapping(value = "register", method = RequestMethod.POST) + private String registerFormPost(@Valid User user, BindingResult res, Model model, HttpSession session){ + System.out.println(user); + if(res.hasErrors()){ + return "register"; + } + Optional<User> userOpt = ur.findByEmail(user.getEmail()); + if(userOpt.isPresent()){ + return "login"; + } + ur.save(user); + session.setAttribute("currentUser", user); + + return "listeAction"; + } + + @RequestMapping(value = "listeAction", method = RequestMethod.GET) + private String listeAction(){ + return "listeAction"; + } } 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 75f17df8701118a7843ba9f3a6356501b8e7f031..9c7a610df35fe0ca73461eaf87a6ff73561ebdc2 100644 --- a/src/main/java/fr/but/infoetu/MeetingPlannr/pojo/User.java +++ b/src/main/java/fr/but/infoetu/MeetingPlannr/pojo/User.java @@ -2,6 +2,9 @@ package fr.but.infoetu.MeetingPlannr.pojo; import java.time.LocalDate; +import org.springframework.boot.context.properties.bind.DefaultValue; + +import jakarta.persistence.Column; import jakarta.persistence.Entity; import jakarta.persistence.GeneratedValue; import jakarta.persistence.GenerationType; @@ -15,6 +18,7 @@ import jakarta.validation.constraints.Size; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; +import lombok.Builder.Default; @Entity @AllArgsConstructor @@ -52,4 +56,8 @@ public class User { @NotNull(message = REQUIRED) @Size(min = 8, message = "password too short") private String password; + + @Column(columnDefinition = "BOOLEAN DEFAULT FALSE") + private boolean isAdmin = false; + } diff --git a/src/main/java/fr/but/infoetu/MeetingPlannr/repository/MeetingRepository.java b/src/main/java/fr/but/infoetu/MeetingPlannr/repository/MeetingRepository.java index d4225a7c86c62281e156772b65319f2cd6a5cef8..bc4f7cb94f283340724b002762220725f6063161 100644 --- a/src/main/java/fr/but/infoetu/MeetingPlannr/repository/MeetingRepository.java +++ b/src/main/java/fr/but/infoetu/MeetingPlannr/repository/MeetingRepository.java @@ -1,9 +1,10 @@ package fr.but.infoetu.MeetingPlannr.repository; +import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.repository.CrudRepository; import fr.but.infoetu.MeetingPlannr.pojo.Meeting; -public interface MeetingRepository extends CrudRepository<Meeting, Integer>{ +public interface MeetingRepository extends JpaRepository<Meeting, Integer>{ } diff --git a/src/main/java/fr/but/infoetu/MeetingPlannr/repository/RequestRepository.java b/src/main/java/fr/but/infoetu/MeetingPlannr/repository/RequestRepository.java index 6385482b73888c11a57d80678e7b7ac2103eb131..21e8ca7debb7cf679a1743eb8e19d990d4410784 100644 --- a/src/main/java/fr/but/infoetu/MeetingPlannr/repository/RequestRepository.java +++ b/src/main/java/fr/but/infoetu/MeetingPlannr/repository/RequestRepository.java @@ -1,9 +1,10 @@ package fr.but.infoetu.MeetingPlannr.repository; +import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.repository.CrudRepository; import fr.but.infoetu.MeetingPlannr.pojo.Request; -public interface RequestRepository extends CrudRepository<Request, Integer>{ +public interface RequestRepository extends JpaRepository<Request, Integer>{ } 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 bd3af6d32cd4c41bd9fb412aedb68650194ec5a9..32e9bdf06fba183c479ce3209033ab05b47541b2 100644 --- a/src/main/java/fr/but/infoetu/MeetingPlannr/repository/UserRepository.java +++ b/src/main/java/fr/but/infoetu/MeetingPlannr/repository/UserRepository.java @@ -2,10 +2,11 @@ package fr.but.infoetu.MeetingPlannr.repository; import java.util.Optional; +import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.repository.CrudRepository; import fr.but.infoetu.MeetingPlannr.pojo.User; -public interface UserRepository extends CrudRepository<User, Integer>{ +public interface UserRepository extends JpaRepository<User, Integer>{ Optional<User> findByEmail(String email); } diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties index ac43c8e2f6a863f31eea5aea61960fe306dca831..553839bc9bf1785d3529f1c43a837bf0bf99216a 100644 --- a/src/main/resources/application.properties +++ b/src/main/resources/application.properties @@ -7,4 +7,9 @@ spring.datasource.url=jdbc:postgresql://psqlserv/but3 spring.datasource.username=paulcanceletu spring.datasource.password=moi -spring.jpa.hibernate.ddl-auto=create-drop \ No newline at end of file +spring.jpa.hibernate.ddl-auto=create-drop + +spring.jpa.show-sql=true +spring.jpa.properties.hibernate.format_sql=true + +server.servlet.contextPath=/meetingplannr \ No newline at end of file diff --git a/src/main/resources/import.sql b/src/main/resources/import.sql new file mode 100644 index 0000000000000000000000000000000000000000..7f7073eb00d6a928682c3db7d49eff6e9e63e2c2 --- /dev/null +++ b/src/main/resources/import.sql @@ -0,0 +1,7 @@ +INSERT INTO users (email, name, surname, phone_number, birthdate, password) VALUES ('john.doe@example.com', 'John', 'Doe', '0612345678', '1990-05-15', 'password123'); +INSERT INTO users (email, name, surname, phone_number, birthdate, password) VALUES ('jane.smith@example.com', 'Jane', 'Smith', '0698765432', '1985-08-22', 'securepwd'); +INSERT INTO users (email, name, surname, phone_number, birthdate, password) VALUES ('robert.brown@example.com', 'Robert', 'Brown', '0711121314', '1992-03-12', 'robert2024'); +INSERT INTO users (email, name, surname, phone_number, birthdate, password) VALUES ('emily.jones@example.com', 'Emily', 'Jones', '0645678901', '2000-11-09', 'emily!secure'); +INSERT INTO users (email, name, surname, phone_number, birthdate, password) VALUES ('william.davis@example.com', 'William', 'Davis', '0623456789', '1988-07-30', 'password789'); +INSERT INTO users (email, name, surname, phone_number, birthdate, password, is_admin) VALUES ('paul.cancel@net.fr', 'Paul', 'Cancel', '0682015653', '2004-12-26', 'maywennjuliagoat', true); +INSERT INTO users (email, name, surname, phone_number, birthdate, password, is_admin) VALUES ('theo.vienne@net.fr', 'Theo', 'Vienne', '0619515793', '2000-08-31', 'noemiegoat', true); diff --git a/src/main/webapp/WEB-INF/jsp/listeAction.jsp b/src/main/webapp/WEB-INF/jsp/listeAction.jsp index ca92f4f1fdc605385c12db9ce0a4b7d17bf8f60d..325f4348c1c0b7acda3623bf65a607ea750ab223 100644 --- a/src/main/webapp/WEB-INF/jsp/listeAction.jsp +++ b/src/main/webapp/WEB-INF/jsp/listeAction.jsp @@ -1,5 +1,5 @@ <%@ page contentType="text/html;charset=UTF-8" language="java" %> -<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> +<%@ page import="fr.but.infoetu.MeetingPlannr.pojo.User" %> <!DOCTYPE html> <html> <head> @@ -50,6 +50,9 @@ </style> </head> <body> + <% + User currentUser = (User) request.getSession().getAttribute("currentUser") + %> <div class="container"> <h1>Actions Disponibles</h1> <div class="actions"> diff --git a/src/main/webapp/WEB-INF/jsp/login.jsp b/src/main/webapp/WEB-INF/jsp/login.jsp index 17e461351693bbc6d36070a37073fa9ff8ec531d..bf259c31ca40b62bb325c306de471e896d894245 100644 --- a/src/main/webapp/WEB-INF/jsp/login.jsp +++ b/src/main/webapp/WEB-INF/jsp/login.jsp @@ -47,6 +47,7 @@ font-size: 16px; border-radius: 5px; cursor: pointer; + margin: 10px; } button:hover { background: #0056b3; @@ -70,6 +71,9 @@ <input type="password" id="password" name="password" placeholder="Entrez votre mot de passe"> </div> <button type="submit">Se connecter</button> + <a href="/register"> + Créer un nouveau compte + </a> </form> <% String errorMessage = (String) request.getAttribute("errorMessage"); diff --git a/src/main/webapp/WEB-INF/jsp/register.jsp b/src/main/webapp/WEB-INF/jsp/register.jsp new file mode 100644 index 0000000000000000000000000000000000000000..9c697cc9a5b897bbc6f11b8e5daaf5fcac819eb3 --- /dev/null +++ b/src/main/webapp/WEB-INF/jsp/register.jsp @@ -0,0 +1,84 @@ +<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> +<!DOCTYPE html> +<html> +<head> + <title>Register</title> + <style> + body { + font-family: Arial, sans-serif; + } + .form-container { + max-width: 500px; + margin: 50px auto; + padding: 20px; + border: 1px solid #ccc; + border-radius: 5px; + } + .form-container h1 { + text-align: center; + } + .form-group { + margin-bottom: 15px; + } + .form-group label { + display: block; + font-weight: bold; + } + .form-group input { + width: 100%; + padding: 8px; + box-sizing: border-box; + } + .error { + color: red; + font-size: 0.9em; + } + .form-group button { + width: 100%; + padding: 10px; + background-color: #28a745; + color: white; + border: none; + border-radius: 5px; + font-size: 1em; + } + .form-group button:hover { + background-color: #218838; + } + </style> +</head> +<body> + <div class="form-container"> + <h1>Register</h1> + <form action="register" method="post"> + <div class="form-group"> + <label for="email">Email:</label> + <input type="email" id="email" name="email"> + </div> + <div class="form-group"> + <label for="name">Name:</label> + <input type="text" id="name" name="name"> + </div> + <div class="form-group"> + <label for="surname">Surname:</label> + <input type="text" id="surname" name="surname"> + </div> + <div class="form-group"> + <label for="phoneNumber">Phone Number:</label> + <input type="tel" id="phoneNumber" name="phoneNumber"> + </div> + <div class="form-group"> + <label for="birthdate">Birthdate:</label> + <input type="date" id="birthdate" name="birthdate"> + </div> + <div class="form-group"> + <label for="password">Password:</label> + <input type="password" id="password" name="password"> + </div> + <div class="form-group"> + <button type="submit">Register</button> + </div> + </form> + </div> +</body> +</html> diff --git a/src/main/webapp/WEB-INF/jsp/signup.jsp b/src/main/webapp/WEB-INF/jsp/signup.jsp deleted file mode 100644 index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000