fix(DevWeb): Login redirection and create session for the logged user

This commit is contained in:
Lucàs
2024-03-21 00:14:57 +01:00
parent 9e5a7f89bd
commit 5f336ff761
2 changed files with 15 additions and 10 deletions
@@ -20,9 +20,10 @@ import java.io.PrintWriter;
import uppa.project.dao.DAO; import uppa.project.dao.DAO;
import uppa.project.dao.DAOException; import uppa.project.dao.DAOException;
import uppa.project.dao.jpa.Game_JPA_DAO_Factory; import uppa.project.dao.jpa.Game_JPA_DAO_Factory;
import uppa.project.servlet.json.ErrorApi; import uppa.project.pojo.json.ErrorResponse;
import uppa.project.pojo.User; import uppa.project.pojo.User;
import uppa.project.servlet.utils.HttpRequestUtils; import uppa.project.pojo.json.LoginResponse;
import uppa.project.utils.HttpRequestUtils;
@WebServlet(name = "loginServlet", value = "/login") @WebServlet(name = "loginServlet", value = "/login")
public class LoginServlet extends HttpServlet { public class LoginServlet extends HttpServlet {
@@ -54,9 +55,9 @@ public class LoginServlet extends HttpServlet {
} catch (Exception e) { } catch (Exception e) {
int STATUS = 400; int STATUS = 400;
ErrorApi error = new ErrorApi(STATUS, "Bad Request", "Invalid JSON"); ErrorResponse error = new ErrorResponse(STATUS, "Bad Request", "Invalid JSON");
response.setStatus(STATUS); response.setStatus(STATUS);
out.println(error.toJson()); out.println(gson.toJson(error));
return; return;
} }
@@ -66,9 +67,9 @@ public class LoginServlet extends HttpServlet {
if (username == null || password == null) { if (username == null || password == null) {
int STATUS = 400; int STATUS = 400;
ErrorApi error = new ErrorApi(STATUS, "Bad Request", "Username and password are required"); ErrorResponse error = new ErrorResponse(STATUS, "Bad Request", "Username and password are required");
response.setStatus(STATUS); response.setStatus(STATUS);
out.println(error.toJson()); out.println(gson.toJson(error));
return; return;
} }
@@ -76,15 +77,19 @@ public class LoginServlet extends HttpServlet {
User user = LoginServlet.loginUser(username.getAsString(), password.getAsString()); User user = LoginServlet.loginUser(username.getAsString(), password.getAsString());
if (user == null) { if (user == null) {
int STATUS = 401; int STATUS = 401;
ErrorApi error = new ErrorApi(STATUS, "Unauthorized", "Invalid username or password"); ErrorResponse error = new ErrorResponse(STATUS, "Unauthorized", "Invalid username or password");
response.setStatus(STATUS); response.setStatus(STATUS);
out.println(error.toJson()); out.println(gson.toJson(error));
return; return;
} }
// Set the user in the session
request.getSession().setAttribute("user", user);
// Return the user as JSON // Return the user as JSON
String json = gson.toJson(user); LoginResponse loginResponse = new LoginResponse(200, user, request.getContextPath() + "/main-menu");
String json = gson.toJson(loginResponse);
out.println(json); out.println(json);
out.flush(); out.flush();
} }
@@ -17,7 +17,7 @@ loginForm.addEventListener("submit", (event) => {
.then(res => res.json()) .then(res => res.json())
.then(data => { .then(data => {
console.log(data); console.log(data);
if (data.status === 200 && data.nextUrl) window.location.href = data.nextUrl; if (data.status === 200) window.location.href = data.redirect;
}) })
.catch(error => console.error("Error:", error)) .catch(error => console.error("Error:", error))
; ;