made logout and lowercase unsensetive login
This commit is contained in:
@@ -1,3 +1,20 @@
|
||||
[
|
||||
|
||||
{
|
||||
"username": "jerome",
|
||||
"password": "Sigma",
|
||||
"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJsb3dlcl91c2VybmFtZSI6Implcm9tZSIsImlhdCI6MTc0NDg4OTY3MSwiZXhwIjoxNzQ0ODkxNDcxfQ.zYg3uxh_iNZ2xdEma8p3p-URT3Xa7wnYiQyOx0-QTac",
|
||||
"money": 200
|
||||
},
|
||||
{
|
||||
"username": "Gianimon",
|
||||
"password": "gianimon",
|
||||
"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VybmFtZSI6IkdpYW5pbW9uIiwiaWF0IjoxNzQ0ODc0NTczLCJleHAiOjE3NDQ4NzYzNzN9.dGp5WTKIDVhomKZ8J7nevz8O7PqwRhR9wEgeyDtL_XE",
|
||||
"money": 200
|
||||
},
|
||||
{
|
||||
"username": "any",
|
||||
"password": "any",
|
||||
"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VybmFtZSI6ImFueSIsImlhdCI6MTc0NDg4OTk1OSwiZXhwIjoxNzQ0ODkxNzU5fQ.TA6BA09DQlmUqEzQxD_wF0r-VyqCMccoxq8SxPnB9-4",
|
||||
"money": 200
|
||||
}
|
||||
]
|
||||
+20
-4
@@ -62,7 +62,9 @@ function authenticateToken(request, response, next) {
|
||||
}
|
||||
|
||||
app.post("/register", (request, response) => {
|
||||
const { username, password } = request.body;
|
||||
let { username, password } = request.body;
|
||||
username = username.toLowerCase();
|
||||
|
||||
if (!username && !password)
|
||||
return response.status(400).json({ error: "Username and password are required" });
|
||||
|
||||
@@ -71,18 +73,18 @@ app.post("/register", (request, response) => {
|
||||
return response.status(400).json({ error: "Username already exists" });
|
||||
}
|
||||
|
||||
|
||||
const token = generateAccessToken({ username });
|
||||
saveUser({ username, password, token, "money": 200 });
|
||||
|
||||
response.json({ username, token });
|
||||
response.json({ lower_username, token });
|
||||
});
|
||||
|
||||
app.get("/login", (request, response) => {
|
||||
response.sendFile(path.join(__dirname, ".\\public\\login.html"));
|
||||
})
|
||||
app.post("/login", (request, response) => {
|
||||
const { username, password } = request.body;
|
||||
let { username, password } = request.body;
|
||||
username = username.toLowerCase();
|
||||
if (!username && !password)
|
||||
return response.status(400).json({ error: "Username and password are required" });
|
||||
|
||||
@@ -129,13 +131,27 @@ app.post("/verify", authenticateToken, (request, response) => {
|
||||
});
|
||||
|
||||
app.delete("/logout", authenticateToken, (request, response) => {
|
||||
/* #swagger.security = [{
|
||||
"bearerAuth": []
|
||||
}] */
|
||||
const username = request.user.username;
|
||||
const users = get_data();
|
||||
const user = users.find(u => u.username === username);
|
||||
|
||||
// 1) Clear the HttpOnly cookie in the browser
|
||||
response.clearCookie("token", {
|
||||
httpOnly: true,
|
||||
secure: process.env.NODE_ENV === "production",
|
||||
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." });
|
||||
});
|
||||
|
||||
|
||||
Reference in New Issue
Block a user