add sessions, add session example
This commit is contained in:
@@ -79,6 +79,85 @@ httpServer.get("/site", (_req, rep) => {
|
||||
rep.html(htmlTest);
|
||||
});
|
||||
|
||||
httpServer.delete("/session", (req, _rep) => {
|
||||
const username = req.session.user as string ?? "";
|
||||
if (username.length > 0) {
|
||||
delete req.session.user;
|
||||
return {
|
||||
code: 200,
|
||||
message: "Logged out!",
|
||||
};
|
||||
} else {
|
||||
return {
|
||||
code: 403,
|
||||
message: "Not logged in!",
|
||||
};
|
||||
}
|
||||
});
|
||||
|
||||
httpServer.post("/session", (req, _rep) => {
|
||||
const username = req.queryParam("username") ?? "";
|
||||
if (username.length > 0) {
|
||||
req.session.user = username;
|
||||
return {
|
||||
code: 200,
|
||||
message: "Logged in!",
|
||||
};
|
||||
} else {
|
||||
return {
|
||||
code: 403,
|
||||
message: "Please enter a Username",
|
||||
};
|
||||
}
|
||||
});
|
||||
|
||||
httpServer.get("/session", (req, rep) => {
|
||||
const headerText = req.session.user
|
||||
? `Hello, ${req.session.user}!`
|
||||
: `Please login!`;
|
||||
const htmlTest = `
|
||||
<html>
|
||||
<head>
|
||||
<title>Session Example</title>
|
||||
</head>
|
||||
<body>
|
||||
<h1>${headerText}</h1>
|
||||
<input type="text" placeholder="Username" id="username" style="margin-bottom: 15px;" ${req.session.user ? "value='" + req.session.user + "' disabled" : ""}/>
|
||||
<br>
|
||||
<button onclick="${req.session.user ? "doLogout" : "doLogin"}()">${
|
||||
req.session.user ? "Logout" : "Login"
|
||||
}</button>
|
||||
</body>
|
||||
<script type="">
|
||||
async function doLogout() {
|
||||
const fetchResult = await fetch("/session", { method: 'DELETE'});
|
||||
const jsonResult = await fetchResult.json();
|
||||
if("code" in jsonResult){
|
||||
if(jsonResult.code == 200){
|
||||
document.location.reload(true)
|
||||
}else{
|
||||
alert(jsonResult.message);
|
||||
}
|
||||
}
|
||||
}
|
||||
async function doLogin() {
|
||||
const username = document.getElementById('username').value;
|
||||
const fetchResult = await fetch("/session?username=" + username, { method: 'POST'});
|
||||
const jsonResult = await fetchResult.json();
|
||||
if("code" in jsonResult){
|
||||
if(jsonResult.code == 200){
|
||||
document.location.reload(true)
|
||||
}else{
|
||||
alert(jsonResult.message);
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
</html>
|
||||
`;
|
||||
rep.html(htmlTest);
|
||||
});
|
||||
|
||||
httpServer.get("/", (req, rep) => {
|
||||
rep.status(Status.Teapot)
|
||||
.header("working", "true")
|
||||
@@ -114,4 +193,5 @@ httpServer.listen({
|
||||
port: 8080,
|
||||
staticLocalDir: "/static",
|
||||
staticServePath: "/assets",
|
||||
sessionSecret: "SuperDuperSecret",
|
||||
});
|
||||
|
Reference in New Issue
Block a user