Website/index.js
TudbuT 84d073976b
All checks were successful
/ Push website to server (push) Successful in 8s
improve style
2024-06-25 01:25:09 +02:00

65 lines
1.9 KiB
JavaScript

import express from "express";
import cookieParser from "cookie-parser";
import bodyParser from "body-parser";
import {getUser, loginUser} from "./login.js";
const server = express();
server.set('view engine', 'ejs')
server.use(express.static("static"))
server.use(cookieParser())
server.use(bodyParser.urlencoded({ extended: true }))
server.use(handle)
const sbstart = '<div style="position: fixed; top: 0; left: 0; padding: 5px; width: calc(100vw - 10px); display: block; background-color: #402060; text-align: center;">'
const sbbasic = '<a class=btn href="/"> Home </a><a class=btn href="/dashboard"> Dashboard </a>'
const sblogout = '<a class=btn href="/logout"> Log&nbsp;out </a>'
const sbend = "</div>"
const indexSidebar = sbstart + sbbasic + sbend
async function handle_other(req, res) {
if(req.method === "POST" && req.path === "/login" && req.body.username && req.body.password) {
let user = await loginUser(req.body.username, req.body.password)
if(user) {
res.cookie("token", user.token).redirect("/dashboard")
}
else {
res.status(403).render("login", {sidebar: indexSidebar, error: "Wrong username or password!"})
}
return
}
res.sendStatus(400)
}
async function handle(req, res) {
if(req.method !== "GET")
return handle_other(req, res);
console.log(`received request of ${req.path}`)
if(req.path == "/") {
res.render("index", {sidebar: indexSidebar})
return
}
if(req.path == "/dashboard") {
let user = await getUser(req.cookies.token)
if(user) {
res.render("dashboard", {sidebar: sbstart + sbbasic + sblogout + sbend, user})
}
else {
res.status(401).redirect("/login")
}
return;
}
if(req.path === "/login") {
res.render("login", {sidebar: indexSidebar, error: null})
return
}
if(req.path === "/logout") {
res.clearCookie("token").redirect("/")
return
}
res.status(404).render("404")
}
server.listen(40080)