refactor(DevWeb): Edit Bean file to handle errors

This commit is contained in:
Lucàs
2024-04-20 21:20:24 +02:00
parent 8e954a0656
commit 8d6c0999c9
4 changed files with 35 additions and 20 deletions
@@ -5,6 +5,8 @@ import uppa.project.database.dao.DAO;
import uppa.project.database.dao.DAOException; import uppa.project.database.dao.DAOException;
import uppa.project.database.dao.jpa.Game_JPA_DAO_Factory; import uppa.project.database.dao.jpa.Game_JPA_DAO_Factory;
import uppa.project.database.pojo.User; import uppa.project.database.pojo.User;
import uppa.project.json.HttpResponse;
import uppa.project.json.HttpResponseCode;
public class LoginBean implements Serializable { public class LoginBean implements Serializable {
@@ -14,6 +16,8 @@ public class LoginBean implements Serializable {
private String password; private String password;
private User user; private User user;
private HttpResponse error;
public LoginBean() { public LoginBean() {
} }
@@ -23,27 +27,28 @@ public class LoginBean implements Serializable {
} }
public boolean validate() { public boolean validate() {
Game_JPA_DAO_Factory factory = new Game_JPA_DAO_Factory(); Game_JPA_DAO_Factory factory = new Game_JPA_DAO_Factory();
try { try {
DAO<User> userDao = factory.getDAOUser(); DAO<User> userDao = factory.getDAOUser();
User[] user = userDao.findByField("username", username); User[] user = userDao.findByField("username", username);
System.out.println(user.length);
for (User u : user) { for (User u : user) {
if (u.getUsername().equals(username)) { if (u.getUsername().equals(username) && u.verifyPassword(password)) {
this.user = u; this.user = u;
return true; return true;
} }
} }
} catch (DAOException e) { } catch (DAOException e) {
throw new RuntimeException(e); error = new HttpResponse(HttpResponseCode.INTERNAL_SERVER_ERROR,"Une erreur est survenue (DB_CONNECTION_ERROR:001)");
return false;
} }
return false;
}
public User getUser() { error = new HttpResponse(HttpResponseCode.NOT_FOUND,"Le nom d'utilisateur ou le mot de passe est incorrect.");
return user; return false;
} }
public LoginBean setUsername(String username) { public LoginBean setUsername(String username) {
@@ -55,4 +60,12 @@ public class LoginBean implements Serializable {
this.password = password; this.password = password;
return this; return this;
} }
public User getUser() {
return user;
}
public HttpResponse getError() {
return error;
}
} }
@@ -10,6 +10,8 @@ import uppa.project.database.dao.DAOException;
import uppa.project.database.dao.EntityManagerProvider; import uppa.project.database.dao.EntityManagerProvider;
import uppa.project.database.dao.jpa.Game_JPA_DAO_Factory; import uppa.project.database.dao.jpa.Game_JPA_DAO_Factory;
import uppa.project.database.pojo.User; import uppa.project.database.pojo.User;
import uppa.project.json.HttpResponse;
import uppa.project.json.HttpResponseCode;
public class RegisterBean implements Serializable { public class RegisterBean implements Serializable {
@@ -20,7 +22,8 @@ public class RegisterBean implements Serializable {
private String password; private String password;
private String birth; private String birth;
private String gender; private String gender;
private String errorMessage;
private HttpResponse error;
public RegisterBean() { public RegisterBean() {
} }
@@ -44,18 +47,18 @@ public class RegisterBean implements Serializable {
// Check if the username is already taken // Check if the username is already taken
User[] users = userDAO.findByField("username", username); User[] users = userDAO.findByField("username", username);
if (users.length > 0) { if (users.length > 0) {
errorMessage = "Ce nom d'utilisateur est déjà pris"; error = new HttpResponse(HttpResponseCode.UNAUTHORIZED, "Ce nom d'utilisateur est déjà pris");
return false; return false;
} }
// Check if the email is already taken // Check if the email is already taken
users = userDAO.findByField("email", email); users = userDAO.findByField("email", email);
if (users.length > 0) { if (users.length > 0) {
errorMessage = "Cet email est déjà utilisé"; error = new HttpResponse(HttpResponseCode.UNAUTHORIZED, "Cet email est déjà utilisé");
return false; return false;
} }
} catch(DAOException e) { } catch (DAOException e) {
errorMessage = "Une erreur est survenue (DB_CONNECTION_ERROR)"; error = new HttpResponse(HttpResponseCode.INTERNAL_SERVER_ERROR, "Une erreur est survenue (DB_CONNECTION_ERROR:001)");
return false; return false;
} }
@@ -67,7 +70,7 @@ public class RegisterBean implements Serializable {
try { try {
user.setGender(User.Gender.valueOf(gender)); user.setGender(User.Gender.valueOf(gender));
} catch (IllegalArgumentException e) { } catch (IllegalArgumentException e) {
errorMessage = "Le genre n'est pas valide"; error = new HttpResponse(HttpResponseCode.UNAUTHORIZED, "Le genre n'est pas valide");
return false; return false;
} }
@@ -78,7 +81,7 @@ public class RegisterBean implements Serializable {
Date date = Date.from(localDate.atStartOfDay(defaultZoneId).toInstant()); Date date = Date.from(localDate.atStartOfDay(defaultZoneId).toInstant());
user.setBirth(date); user.setBirth(date);
} catch (Exception e) { } catch (Exception e) {
errorMessage = "La date de naissance n'est pas valide"; error = new HttpResponse(HttpResponseCode.UNAUTHORIZED, "La date de naissance n'est pas valide");
return false; return false;
} }
@@ -90,7 +93,8 @@ public class RegisterBean implements Serializable {
userDAO.create(user); userDAO.create(user);
entityManager.getTransaction().commit(); entityManager.getTransaction().commit();
return true; return true;
} catch(DAOException e) { } catch (DAOException e) {
error = new HttpResponse(HttpResponseCode.INTERNAL_SERVER_ERROR, "Une erreur est survenue (DB_CONNECTION_ERROR:002)");
entityManager.getTransaction().rollback(); entityManager.getTransaction().rollback();
} }
return false; return false;
@@ -121,7 +125,7 @@ public class RegisterBean implements Serializable {
return this; return this;
} }
public String getErrorMessage() { public HttpResponse getError() {
return errorMessage; return error;
} }
} }
@@ -46,10 +46,8 @@ public class LoginServlet extends HttpServlet {
httpResponse = new HttpResponse(HttpResponseCode.OK, "Login success"); httpResponse = new HttpResponse(HttpResponseCode.OK, "Login success");
} else { } else {
httpResponse = new HttpResponse(HttpResponseCode.UNAUTHORIZED, "<strong>Erreur de connexion:</strong> Le nom d'utilisateur ou le " + httpResponse = loginBean.getError();
"mot de passe est incorrect.");
} }
out.println(gson.toJson(httpResponse)); out.println(gson.toJson(httpResponse));
out.flush(); out.flush();
} }
@@ -51,7 +51,7 @@ public class RegisterServlet extends HttpServlet {
"Register success" "Register success"
); );
} else { } else {
httpResponse = new HttpResponse(HttpResponseCode.UNAUTHORIZED, registerBean.getErrorMessage()); httpResponse = registerBean.getError();
} }
out.println(gson.toJson(httpResponse)); out.println(gson.toJson(httpResponse));