From 6b84a06b41eca109c6b6c7e6a969c66bcbc55e62 Mon Sep 17 00:00:00 2001
From: Maxime Gosselin~ <maxime.gosselin.etu@univ-lille.fr>
Date: Tue, 4 Mar 2025 16:49:04 +0100
Subject: [PATCH] On ne peut plus rejoindre un thread si on ne le follow pas

---
 WEB-INF/src/controleur/ThreadController.java |  6 +++++-
 WEB-INF/src/modele/dao/DaoFollower.java      | 14 ++++++++++++++
 2 files changed, 19 insertions(+), 1 deletion(-)

diff --git a/WEB-INF/src/controleur/ThreadController.java b/WEB-INF/src/controleur/ThreadController.java
index 44a1c7a..ccb0f86 100644
--- a/WEB-INF/src/controleur/ThreadController.java
+++ b/WEB-INF/src/controleur/ThreadController.java
@@ -52,7 +52,11 @@ public class ThreadController extends HttpServlet {
                 vue = "WEB-INF/vue/accueil.jsp";
                 break;
             case "open":
-                vue = "WEB-INF/vue/chat.jsp?id=" + idThread;
+                if(daoFollower.userIsInThread(username, idThread)){
+                    vue = "WEB-INF/vue/chat.jsp?id=" + idThread;
+                    break;
+                }
+                vue = "WEB-INF/vue/fils.jsp";
                 break;
             case "create":
                 String name = req.getParameter("name");
diff --git a/WEB-INF/src/modele/dao/DaoFollower.java b/WEB-INF/src/modele/dao/DaoFollower.java
index 2870eeb..67b147a 100644
--- a/WEB-INF/src/modele/dao/DaoFollower.java
+++ b/WEB-INF/src/modele/dao/DaoFollower.java
@@ -99,4 +99,18 @@ public class DaoFollower {
         }
         return res;
     }
+
+
+    public boolean userIsInThread(String username, int idThread){
+        DS bdd = DS.getInstance();
+        try(Connection con = bdd.getConnection()) {
+            PreparedStatement ps = con.prepareStatement("SELECT * FROM followers WHERE id_thread = ? AND username = ?");
+            ps.setInt(1, idThread);
+            ps.setString(2, username);
+            ResultSet rs = ps.executeQuery();
+            return rs.next();
+        } catch (SQLException e) {
+            throw new RuntimeException(e);
+        }
+    }
 }
-- 
GitLab