Refactor logout and lobby management logic
This commit is contained in:
+19
-15
@@ -148,34 +148,30 @@ app.post("/verify", authenticateToken, (request, response) => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
app.delete("/logout", authenticateToken, (request, response) => {
|
app.delete("/logout", authenticateToken, (request, response) => {
|
||||||
/* #swagger.security = [{
|
|
||||||
"bearerAuth": []
|
|
||||||
}] */
|
|
||||||
const username = request.user.username;
|
const username = request.user.username;
|
||||||
const users = get_data();
|
const users = get_data();
|
||||||
const user = users.find(u => u.username === username);
|
const user = users.find(u => u.username === username);
|
||||||
let lobbyId = request.lobbyId;
|
if (!user) return response.status(404).json({ error: "User not found" });
|
||||||
if (playerMap[lobbyId].includes(username)) {
|
const lobbyId = user.lobbyId;
|
||||||
playerMap[lobbyId].splice(username, 1);
|
if (lobbyId && playerMap[lobbyId]) {
|
||||||
|
playerMap[lobbyId] = playerMap[lobbyId].filter(player => player !== username);
|
||||||
|
if (playerMap[lobbyId].length === 0) {
|
||||||
|
delete playerMap[lobbyId];
|
||||||
}
|
}
|
||||||
// 1) Clear the HttpOnly cookie in the browser
|
delete user.lobbyId;
|
||||||
|
}
|
||||||
|
delete user.token;
|
||||||
|
save_data(users);
|
||||||
response.clearCookie("authorization", {
|
response.clearCookie("authorization", {
|
||||||
httpOnly: true,
|
httpOnly: true,
|
||||||
secure: process.env.NODE_ENV === "production",
|
secure: process.env.NODE_ENV === "production",
|
||||||
sameSite: "Strict"
|
sameSite: "Strict"
|
||||||
});
|
});
|
||||||
|
|
||||||
// 2) Delete the token from your JSON store
|
|
||||||
if (user) {
|
|
||||||
delete user.token;
|
|
||||||
save_data(users);
|
|
||||||
}
|
|
||||||
|
|
||||||
// 3) Send final response
|
|
||||||
response.json({ message: "Logged out successfully." });
|
response.json({ message: "Logged out successfully." });
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Here will be the Game logic -----------------------------------------------------------------------------------------------
|
Here will be the Game logic -----------------------------------------------------------------------------------------------
|
||||||
*/
|
*/
|
||||||
@@ -210,6 +206,12 @@ app.get("/lobby/create", authenticateToken, async (req, res) => {
|
|||||||
if (!playerMap[lobbyId].includes(username)) {
|
if (!playerMap[lobbyId].includes(username)) {
|
||||||
playerMap[lobbyId].push(username);
|
playerMap[lobbyId].push(username);
|
||||||
}
|
}
|
||||||
|
const users = get_data();
|
||||||
|
const user = users.find(u => u.username === username);
|
||||||
|
if (user) {
|
||||||
|
user.lobbyId = lobbyId;
|
||||||
|
save_data(users);
|
||||||
|
}
|
||||||
res.redirect(`/lobby/join?lobbyId=${lobbyId}&username=${username}`);
|
res.redirect(`/lobby/join?lobbyId=${lobbyId}&username=${username}`);
|
||||||
})
|
})
|
||||||
|
|
||||||
@@ -228,6 +230,8 @@ app.get("/lobby/join", authenticateToken, async (req, res) => {
|
|||||||
if (!playerMap[lobbyId].includes(username)) {
|
if (!playerMap[lobbyId].includes(username)) {
|
||||||
playerMap[lobbyId].push(username);
|
playerMap[lobbyId].push(username);
|
||||||
}
|
}
|
||||||
|
user.lobbyId = lobbyId;
|
||||||
|
save_data(users);
|
||||||
res.json({ lobbyId, username });
|
res.json({ lobbyId, username });
|
||||||
} else {
|
} else {
|
||||||
console.log("Lobby with " + lobbyId + " not found.");
|
console.log("Lobby with " + lobbyId + " not found.");
|
||||||
|
|||||||
Reference in New Issue
Block a user