From 448fbd3579791e9484fc27a3ee5a91e29b52b30c Mon Sep 17 00:00:00 2001
From: Paul Cancel <paul.cancel.etu@univ-lille.fr>
Date: Tue, 10 Dec 2024 12:01:21 +0100
Subject: [PATCH] ajout pages

---
 .../MeetingPlannr/MeetingController.java      | 30 ++++++-
 .../but/infoetu/MeetingPlannr/pojo/User.java  |  8 ++
 .../repository/MeetingRepository.java         |  3 +-
 .../repository/RequestRepository.java         |  3 +-
 .../repository/UserRepository.java            |  3 +-
 src/main/resources/application.properties     |  7 +-
 src/main/resources/import.sql                 |  7 ++
 src/main/webapp/WEB-INF/jsp/listeAction.jsp   |  5 +-
 src/main/webapp/WEB-INF/jsp/login.jsp         |  4 +
 src/main/webapp/WEB-INF/jsp/register.jsp      | 84 +++++++++++++++++++
 src/main/webapp/WEB-INF/jsp/signup.jsp        |  0
 11 files changed, 148 insertions(+), 6 deletions(-)
 create mode 100644 src/main/resources/import.sql
 create mode 100644 src/main/webapp/WEB-INF/jsp/register.jsp
 delete mode 100644 src/main/webapp/WEB-INF/jsp/signup.jsp

diff --git a/src/main/java/fr/but/infoetu/MeetingPlannr/MeetingController.java b/src/main/java/fr/but/infoetu/MeetingPlannr/MeetingController.java
index 9abb03c..5437580 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 75f17df..9c7a610 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 d4225a7..bc4f7cb 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 6385482..21e8ca7 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 bd3af6d..32e9bdf 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 ac43c8e..553839b 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 0000000..7f7073e
--- /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 ca92f4f..325f434 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 17e4613..bf259c3 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 0000000..9c697cc
--- /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 e69de29..0000000
-- 
GitLab