draft(DevWeb): Try to fetch the user for each pages

This commit is contained in:
Lucàs
2024-05-01 01:14:21 +02:00
parent 635433f4cb
commit 6ab2fb1a62
3 changed files with 40 additions and 18 deletions
@@ -8,6 +8,7 @@ package uppa.project.database.dao;
import jakarta.persistence.EntityManager;
import jakarta.persistence.EntityManagerFactory;
import jakarta.persistence.FlushModeType;
import jakarta.persistence.Persistence;
import uppa.project.Global;
@@ -25,14 +26,18 @@ public final class EntityManagerProvider {
private static EntityManagerFactory factory;
public static EntityManager getInstance() {
if (instance == null) {
instance = getFactory().createEntityManager();
instance.setFlushMode(FlushModeType.COMMIT);
}
return instance;
}
public static EntityManagerFactory getFactory() {
if (factory == null) {
factory = Persistence.createEntityManagerFactory(PERSISTENCE_UNIT_NAME);
}
if (instance == null) {
instance = factory.createEntityManager();
}
return instance;
return factory;
}
public static void setPersitenceUnitName(String name) {
@@ -1,15 +1,20 @@
package uppa.project.web.filter;
import jakarta.persistence.EntityManager;
import jakarta.servlet.Filter;
import jakarta.servlet.FilterChain;
import jakarta.servlet.ServletException;
import jakarta.servlet.ServletRequest;
import jakarta.servlet.ServletResponse;
import jakarta.servlet.annotation.WebServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import jakarta.servlet.http.HttpSession;
import java.io.IOException;
import uppa.project.database.dao.DAO;
import uppa.project.database.dao.DAOException;
import uppa.project.database.dao.EntityManagerProvider;
import uppa.project.database.dao.jpa.Game_JPA_DAO_Factory;
import uppa.project.database.pojo.User;
public class AuthenticationFilter implements Filter {
@@ -24,7 +29,22 @@ public class AuthenticationFilter implements Filter {
// Si l'utilisateur est connecté, laisser passer la requête
if (isLoggedIn) {
chain.doFilter(request, response);
User currentUser = (User) session.getAttribute("user");
try {
// Met à jour l'utilisateur en session
DAO<User> userDAO = new Game_JPA_DAO_Factory().getDAOUser();
session.removeAttribute("user");
EntityManager em = EntityManagerProvider.getInstance();
em.getTransaction().begin();
session.setAttribute("user", userDAO.findById(currentUser.getId().intValue()));
em.getTransaction().commit();
// Passe la requête au filtre suivant
chain.doFilter(request, response);
} catch (DAOException e) {
throw new RuntimeException(e);
}
} else {
// Sinon, rediriger vers la page de connexion
httpResponse.sendRedirect(httpRequest.getContextPath() + "/login");
@@ -16,6 +16,7 @@ import uppa.project.database.dao.DAO;
import uppa.project.database.dao.DAOException;
import uppa.project.database.dao.EntityManagerProvider;
import uppa.project.database.dao.jpa.DAO_JPA_User;
import uppa.project.database.dao.jpa.Game_JPA_DAO_Factory;
import uppa.project.database.pojo.Card;
import uppa.project.database.pojo.Game;
import uppa.project.database.pojo.Player;
@@ -225,20 +226,16 @@ public class GameWS {
} else {
theoricWinner.setWinner();
// Broadcast the end of the game
broadcast(new Message("end", gson.toJson(new SimpleGame(game, games.get(game)))).toJson());
EntityManager em = EntityManagerProvider.getInstance();
EntityManager em = EntityManagerProvider.getFactory().createEntityManager();
DAO<Player> playerDAO = new Game_JPA_DAO_Factory().getDAOPlayer();
em.getTransaction().begin();
em.persist(game);
for (Player p : games.get(game)){
game.addPlayer(p);
p.getUser().addPlayedGame(p);
}
em.persist(game);
for (Player p : games.get(game)) playerDAO.create(p);
em.getTransaction().commit();
em.close();
// Broadcast the end of the game
broadcast(new Message("end", gson.toJson(new SimpleGame(game, games.get(game)))).toJson());
}
}
}