2023-09-13 19:56:58 +00:00
|
|
|
// Express
|
|
|
|
const express = require("express");
|
|
|
|
const session = require("express-session");
|
|
|
|
const app = express();
|
|
|
|
|
|
|
|
const path = require("path");
|
|
|
|
|
|
|
|
// Local modules
|
|
|
|
const page_scripts = require("./backend/page_scripts");
|
2023-11-15 18:49:09 +00:00
|
|
|
const internal = require("./backend/core/internal_api");
|
2023-09-13 19:56:58 +00:00
|
|
|
|
|
|
|
// Express settings
|
|
|
|
app.set("view-engine", "ejs");
|
|
|
|
app.set("views", path.join(__dirname, "frontend/views"));
|
|
|
|
app.use(express.static(path.join(__dirname, "frontend/public")));
|
2023-11-08 10:08:40 +00:00
|
|
|
app.use(express.json({ limit: "500mb" }));
|
|
|
|
app.use(express.urlencoded({ extended: false }));
|
2023-09-13 19:56:58 +00:00
|
|
|
|
|
|
|
app.use(
|
|
|
|
session({
|
2023-11-08 10:08:40 +00:00
|
|
|
secret: require("crypto").randomBytes(128).toString("base64"),
|
2023-09-13 19:56:58 +00:00
|
|
|
resave: false,
|
|
|
|
saveUninitialized: false,
|
|
|
|
})
|
|
|
|
);
|
|
|
|
|
2023-11-15 18:49:09 +00:00
|
|
|
// API
|
|
|
|
app.post("/login", checkNotAuthenticated, internal.postLogin);
|
|
|
|
app.post("/register", checkNotAuthenticated, internal.postRegister);
|
|
|
|
app.post("/setting", checkAuthenticated, internal.postSetting);
|
|
|
|
app.post("/api/web/blog", checkAuthenticated, internal.postBlog);
|
|
|
|
app.delete("/api/web/blog/image", checkAuthenticated, internal.deleteImage);
|
|
|
|
app.delete("/api/web/blog", checkAuthenticated, internal.deleteBlog);
|
|
|
|
app.patch("/api/web/blog", checkAuthenticated, internal.patchBlog);
|
2023-09-13 19:56:58 +00:00
|
|
|
|
|
|
|
// app.delete("/logout", page_scripts.logout);
|
|
|
|
|
|
|
|
// Endpoints
|
|
|
|
app.get("/", page_scripts.index);
|
2023-11-15 18:49:09 +00:00
|
|
|
app.get("/login", page_scripts.login);
|
|
|
|
app.get("/register", checkNotAuthenticated, page_scripts.register);
|
2023-10-25 21:48:36 +00:00
|
|
|
app.get("/author/:author_username", page_scripts.author);
|
2023-09-21 00:41:57 +00:00
|
|
|
app.get("/admin", checkAuthenticated, page_scripts.admin);
|
2023-10-25 21:48:36 +00:00
|
|
|
app.get("/blog", page_scripts.blogList);
|
2023-11-15 18:49:09 +00:00
|
|
|
app.get("/blog/new", checkAuthenticated, page_scripts.blogNew);
|
2023-11-08 10:08:40 +00:00
|
|
|
app.get("/blog/:blog_id", page_scripts.blogSingle);
|
|
|
|
app.get("/blog/:blog_id/edit", checkAuthenticated, page_scripts.blogEdit);
|
|
|
|
app.get("/atom", page_scripts.atom);
|
2023-09-13 19:56:58 +00:00
|
|
|
|
|
|
|
function checkAuthenticated(req, res, next) {
|
|
|
|
if (req.session.user) return next();
|
|
|
|
res.redirect("/login");
|
|
|
|
}
|
|
|
|
|
|
|
|
function checkNotAuthenticated(req, res, next) {
|
|
|
|
if (req.session.user) return res.redirect("/");
|
|
|
|
next();
|
|
|
|
}
|
|
|
|
|
2023-11-15 20:06:35 +00:00
|
|
|
app.listen(5004);
|