From 181ea2d35e592ac1000e39e0c93c030ce5d4f6c7 Mon Sep 17 00:00:00 2001
From: Charlie Darques <charlie.darques.etu@univ-lille.fr>
Date: Thu, 6 Mar 2025 16:18:52 +0100
Subject: [PATCH] =?UTF-8?q?d=C3=A9but=20d'impl=C3=A9mentation=20de=20page?=
 =?UTF-8?q?=20d'accueil=20avec=20ajouts=20de=20m=C3=A9thodes=20pour=20r?=
 =?UTF-8?q?=C3=A9cup=C3=A9rer=20les=20threads=20suivis=20d'un=20user=20et?=
 =?UTF-8?q?=20un=20thread=20par=20son=20id?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 WEB-INF/src/controleurs/Feed.java   | 56 +++++++++++++++++++++++++++++
 WEB-INF/src/controleurs/LogIn.java  |  2 ++
 WEB-INF/src/controleurs/SignUp.java | 21 +++++++----
 WEB-INF/src/dao/BDConnection.java   |  2 +-
 WEB-INF/src/dao/ThreadDAO.java      | 17 +++++++++
 WEB-INF/src/dao/UserDAO.java        | 13 +++++++
 create.html                         |  2 +-
 index.html                          |  2 +-
 8 files changed, 105 insertions(+), 10 deletions(-)
 create mode 100644 WEB-INF/src/controleurs/Feed.java

diff --git a/WEB-INF/src/controleurs/Feed.java b/WEB-INF/src/controleurs/Feed.java
new file mode 100644
index 0000000..185c66c
--- /dev/null
+++ b/WEB-INF/src/controleurs/Feed.java
@@ -0,0 +1,56 @@
+package controleurs;
+
+import dao.ThreadDAO;
+import dao.UserDAO;
+import dto.User;
+import jakarta.servlet.annotation.WebServlet;
+import jakarta.servlet.http.HttpServlet;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
+
+import java.io.PrintWriter;
+import java.io.IOException;
+import java.sql.SQLException;
+import java.util.List;
+
+@WebServlet("/Welcome")
+public class Feed extends HttpServlet {
+    public void service(HttpServletRequest req, HttpServletResponse res)
+            throws IOException {
+        if (req.getSession().getAttribute("user") != null) {
+            UserDAO userDao = new UserDAO();
+            ThreadDAO threadDao = new ThreadDAO();
+            PrintWriter out = res.getWriter();
+            String login = req.getParameter("login");
+
+            User user = userDao.getUserByLogs(login, req.getParameter("password"));
+            if (user != null) {
+                List<Thread> threadsFollowed = null;
+                try {
+                    threadsFollowed = userDao.getThreadsByUser(user);
+                } catch (SQLException e) {
+                    throw new RuntimeException(e);
+                }
+
+                out.println("<html><body><meta charset=\"utf-8\">");
+                out.println("<title>Welcome</title>");
+                out.println("<h1>Welcome " + login + "</h1>");
+                out.println("");
+
+
+                out.println("</body>");
+                out.println("<footer>");
+                out.println("Connecté en tant que " + login);
+                out.println("</footer>");
+                out.println("</html>");
+
+            }
+
+
+        } else {
+            res.sendRedirect("http://localhost:8080/s4a021-web-backend/index.html");
+        }
+
+    }
+
+}
diff --git a/WEB-INF/src/controleurs/LogIn.java b/WEB-INF/src/controleurs/LogIn.java
index 852e2dc..f54b9e3 100644
--- a/WEB-INF/src/controleurs/LogIn.java
+++ b/WEB-INF/src/controleurs/LogIn.java
@@ -21,6 +21,8 @@ public class LogIn extends HttpServlet {
 
         if (userdao.isDatabased(user)){
             out.println("<h1>Bienvenue " + user.getUserName() + " !</h1>");
+            req.getSession().setAttribute("user", user);
+            res.sendRedirect("http://localhost:8080/s4a021-web-backend/Welcome");
         }else{
             out.println("<h1>Partez de chez moi ?!</h1>");
         }
diff --git a/WEB-INF/src/controleurs/SignUp.java b/WEB-INF/src/controleurs/SignUp.java
index 1d73ac1..45c3c05 100644
--- a/WEB-INF/src/controleurs/SignUp.java
+++ b/WEB-INF/src/controleurs/SignUp.java
@@ -19,15 +19,22 @@ public class SignUp extends HttpServlet {
 
         String login = req.getParameter("login");
         String pwd = req.getParameter("pwd");
-        userdao.createUser(login, pwd);
 
-        User user = userdao.getUserByLogs(login, pwd);
+        if (login == null || pwd == null) {
+            out.println("<h1>Erreur</h1>");
+        }
+        else {
+            userdao.createUser(login, pwd);
+            User user = userdao.getUserByLogs(login, pwd);
 
-        if (user != null && userdao.isDatabased(user)){
-            out.println("<h1>Bienvenue " + user.getUserName() + " !</h1>");
-        }else{
-            out.println("<h1>Partez de chez moi ?!</h1>");
-            userdao.removeUser(user);
+            if (user != null && userdao.isDatabased(user)){
+                out.println("<h1>Bienvenue " + user.getUserName() + " !</h1>");
+                req.getSession().setAttribute("user", user);
+                res.sendRedirect("http://localhost:8080/s4a021-web-backend/Welcome");
+            }else{
+                out.println("<h1>Partez de chez moi ?!</h1>");
+                userdao.removeUser(user);
+            }
         }
     }
 }
diff --git a/WEB-INF/src/dao/BDConnection.java b/WEB-INF/src/dao/BDConnection.java
index 3a191cd..0bcea7a 100644
--- a/WEB-INF/src/dao/BDConnection.java
+++ b/WEB-INF/src/dao/BDConnection.java
@@ -9,7 +9,7 @@ public class BDConnection {
     public BDConnection(){
         try{
             Class.forName("org.postgresql.Driver");
-            this.connection = DriverManager.getConnection("jdbc:postgresql://psqlserv/but2", "yannisdevosetu", "moi");
+            this.connection = DriverManager.getConnection("jdbc:postgresql://psqlserv/but2", "yannis.devos.etu", "moi");
         } catch (Exception e) {
             e.getStackTrace();
         }
diff --git a/WEB-INF/src/dao/ThreadDAO.java b/WEB-INF/src/dao/ThreadDAO.java
index eed9043..8ff8ab9 100644
--- a/WEB-INF/src/dao/ThreadDAO.java
+++ b/WEB-INF/src/dao/ThreadDAO.java
@@ -35,6 +35,23 @@ public class ThreadDAO {
         return messages;
     }
 
+    public Thread getThreadById(int threadID) throws SQLException {
+        Thread thread = new Thread();
+        PreparedStatement ps = this.con.prepareStatement("SELECT threadID, threadName FROM thread WHERE threadID = ?");
+        try {
+            ps.setInt(1, threadID);
+            ResultSet rs = ps.executeQuery();
+            if(rs.next()){
+                thread.setThreadID(rs.getInt(1));
+                thread.setName(rs.getString(2));
+            }
+        }
+        catch (SQLException sqle) {
+            sqle.getStackTrace();
+        }
+        return thread;
+    }
+
     public List<Message> getAllMessagesFromThread(int threadId){
         ArrayList<Message> messages = new ArrayList<>();
         try{
diff --git a/WEB-INF/src/dao/UserDAO.java b/WEB-INF/src/dao/UserDAO.java
index b03177e..31683b7 100644
--- a/WEB-INF/src/dao/UserDAO.java
+++ b/WEB-INF/src/dao/UserDAO.java
@@ -180,4 +180,17 @@ public class UserDAO extends HttpServlet{
             sqle.getStackTrace();
         }
     }
+
+    // Récupérer les thread auxquels un utilisateur est abonné
+    public List<Thread> getThreadsByUser(User user) throws SQLException {
+        List<Thread> threads = new ArrayList<>();
+        PreparedStatement ps = this.con.prepareStatement("SELECT threadID_follow FROM follow WHERE userID_follow = ?");
+        try {
+            ps.setInt(1, user.getId());
+            ResultSet rs = ps.executeQuery();
+            while(rs.next()){
+
+            }
+        }
+    }
 }
\ No newline at end of file
diff --git a/create.html b/create.html
index 10b5cb6..ca54611 100644
--- a/create.html
+++ b/create.html
@@ -1,5 +1,5 @@
 <!DOCTYPE html>
-<html lang="fr">
+<html lang="en">
 <head>
     <meta charset="UTF-8">
     <title>Create Account</title>
diff --git a/index.html b/index.html
index 113a345..2ca066a 100644
--- a/index.html
+++ b/index.html
@@ -1,5 +1,5 @@
 <!doctype html>
-<html lang="fr">
+<html lang="en">
 <head>
     <meta charset="UTF-8">
     <meta name="viewport"
-- 
GitLab