Skip to content
Snippets Groups Projects
Select Git revision
  • 95000ed8a866495f59f35311d2e895e85970086d
  • master default protected
2 results

README.md

Blame
  • Forked from Jean-Marie Place / SCODOC_R6A06
    Source project has a limited visibility.
    Authent.java 2.89 KiB
    package controleur;
    
    import java.io.IOException;
    import java.security.MessageDigest;
    import java.security.NoSuchAlgorithmException;
    
    import jakarta.servlet.ServletException;
    import jakarta.servlet.annotation.WebServlet;
    import jakarta.servlet.http.HttpServlet;
    import jakarta.servlet.http.HttpServletRequest;
    import jakarta.servlet.http.HttpServletResponse;
    import modele.dao.DaoUser;
    import modele.dto.User;
    
    @WebServlet("/authent")
    public class Authent extends HttpServlet {
        @Override
        protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
            DaoUser daoUser = new DaoUser();
            String action = req.getParameter("action");
            String username = req.getParameter("username").toLowerCase();
            String password = req.getParameter("password");
            String hashedPassword;
            
            MessageDigest md;
            this.getServletContext();
            try {
                md = MessageDigest.getInstance("MD5");
                md.update(password.getBytes());
                byte[] byteOfPasswordMD = md.digest();
                StringBuilder sb = new StringBuilder();
                for (byte b : byteOfPasswordMD) {
                    sb.append(String.format("%02x", b));
                }
                hashedPassword = sb.toString();
            } catch (NoSuchAlgorithmException e) {
                req.setAttribute("error", "Problème lors du hashage du mot de passe");
                req.getRequestDispatcher("/WEB-INF/vue/error.jsp").forward(req, resp);
                return;
            }
    
            String vue = "WEB-INF/vue/login.jsp";
    
            switch (action) {
                case "login":
                    if (daoUser.checkUser(username, hashedPassword)) {
                        req.getSession().setAttribute("username", username);
                        resp.sendRedirect("navigation?page=accueil");
                        return;
                    } else {
                        req.setAttribute("error", "Identifiant ou mot de passe incorrect");
                    }
                    break;
                    
                case "signin":
                    String firstname = req.getParameter("firstname");
                    String lastname = req.getParameter("lastname");
                    
                    try {
                        daoUser.create(new User(username, hashedPassword, firstname, lastname));
                        req.getSession().setAttribute("username", username);
                        resp.sendRedirect("navigation?page=accueil");
                        return;
                    } catch (Exception e) {
                        req.setAttribute("error", "Nom d'utilisateur déjà pris");
                        vue = "WEB-INF/vue/signin.jsp";
                    }
                    break;
                default:
                    req.setAttribute("error", "Ne changez pas l'url vous même!");
                    req.getRequestDispatcher("/WEB-INF/vue/error.jsp");
            }
            req.getRequestDispatcher(vue).forward(req, resp);
        }
    }