39491-vm/RJLResaka/src/com/rjlresaka/servlet/RegisterServlet.java
Flatlogic Bot db8313c88e V2
2026-04-05 20:23:53 +00:00

95 lines
4.0 KiB
Java

package com.rjlresaka.servlet;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import com.rjlresaka.dao.UserDAO;
import com.rjlresaka.model.User;
import com.rjlresaka.util.PasswordUtil;
@WebServlet("/register")
public class RegisterServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
private final UserDAO userDAO = new UserDAO();
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
request.getRequestDispatcher("/WEB-INF/views/auth/register.jsp").forward(request, response);
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String fullName = trim(request.getParameter("fullName"));
String username = trim(request.getParameter("username"));
String email = trim(request.getParameter("email"));
String password = request.getParameter("password");
String confirmPassword = request.getParameter("confirmPassword");
if (fullName.isEmpty() || username.isEmpty() || email.isEmpty() || password == null || password.isEmpty()) {
request.setAttribute("error", "Tous les champs sont obligatoires.");
request.getRequestDispatcher("/WEB-INF/views/auth/register.jsp").forward(request, response);
return;
}
if (password.length() < 6) {
request.setAttribute("error", "Le mot de passe doit contenir au moins 6 caractères.");
request.getRequestDispatcher("/WEB-INF/views/auth/register.jsp").forward(request, response);
return;
}
if (!password.equals(confirmPassword)) {
request.setAttribute("error", "La confirmation du mot de passe ne correspond pas.");
request.getRequestDispatcher("/WEB-INF/views/auth/register.jsp").forward(request, response);
return;
}
try {
if (userDAO.emailExists(email, getServletContext())) {
request.setAttribute("error", "Cet email existe déjà.");
request.getRequestDispatcher("/WEB-INF/views/auth/register.jsp").forward(request, response);
return;
}
if (userDAO.usernameExists(username, getServletContext())) {
request.setAttribute("error", "Ce nom d'utilisateur existe déjà.");
request.getRequestDispatcher("/WEB-INF/views/auth/register.jsp").forward(request, response);
return;
}
User user = new User();
user.setFullName(fullName);
user.setUsername(username);
user.setEmail(email.toLowerCase());
user.setPasswordHash(PasswordUtil.hash(password));
user.setAvatarColor(pickColor(fullName));
user.setBio("Nouveau membre RJLResaka");
userDAO.create(user, getServletContext());
HttpSession session = request.getSession();
session.setAttribute("authUser", user);
response.sendRedirect(request.getContextPath() + "/app/dashboard");
} catch (Exception exception) {
request.setAttribute("error", "Inscription impossible pour le moment.");
request.setAttribute("debugMessage", exception.getMessage());
request.getRequestDispatcher("/WEB-INF/views/auth/register.jsp").forward(request, response);
}
}
private String trim(String value) {
return value == null ? "" : value.trim();
}
private String pickColor(String seed) {
String[] colors = { "#0ea5e9", "#2563eb", "#06b6d4", "#14b8a6", "#f97316", "#ec4899" };
int index = Math.abs(seed.hashCode()) % colors.length;
return colors[index];
}
}