yet-another-blog/yab.js

68 lines
2.4 KiB
JavaScript
Raw Permalink Normal View History

// 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");
const internal = require("./backend/core/internal_api");
// Express settings
app.set("view-engine", "ejs");
app.set("views", path.join(__dirname, "frontend/views"));
app.use(express.json({ limit: "500mb" }));
app.use(express.urlencoded({ extended: false }));
Generic Theme (#1) * Theme work Signed-off-by: Armored Dragon <publicmail@armoreddragon.com> * User registration. Cleanup CSS. Signed-off-by: Armored Dragon <publicmail@armoreddragon.com> * Post Creation and Manipulation Uploading images now easier. Just drag and drop onto the text area. Signed-off-by: Armored Dragon <publicmail@armoreddragon.com> * Author Page. Edit author page. Author display name. Generic media uploads. Core refactoring. Signed-off-by: Armored Dragon <publicmail@armoreddragon.com> * Texteditor bugfix. PGAdmin docker container for management of database. Signed-off-by: Armored Dragon <publicmail@armoreddragon.com> * Tags. Search by tags. Return tags used by posts. Signed-off-by: Armored Dragon <publicmail@armoreddragon.com> * New post button. Fix index "page" param not being honored. Signed-off-by: Armored Dragon <publicmail@armoreddragon.com> * Post drafts Users can now only have one "unpublished" draft. Improved password handling. Minor cleanup. Admin panel navigation link. Signed-off-by: Armored Dragon <publicmail@armoreddragon.com> * Post visibility flairs Signed-off-by: Armored Dragon <publicmail@armoreddragon.com> * Publish date autofill to now. Fix deleteBlog. Signed-off-by: Armored Dragon <publicmail@armoreddragon.com> * Removed unused function Signed-off-by: Armored Dragon <publicmail@armoreddragon.com> * Media upload pruning. Uploaded media is now pruned automatically every time a post is updated. Minor cleanup. Groundwork for media types other than images. Signed-off-by: Armored Dragon <publicmail@armoreddragon.com> * Updated name. Use the manifest data. Signed-off-by: Armored Dragon <publicmail@armoreddragon.com> --------- Signed-off-by: Armored Dragon <publicmail@armoreddragon.com>
2024-04-30 15:26:35 +00:00
// TODO: Does this persist previous themes? May cause security issues!
const refreshTheme = (theme_name) => app.use(express.static(path.join(__dirname, `frontend/views/themes/${theme_name}`)));
refreshTheme("default");
app.use(
session({
secret: require("crypto").randomBytes(128).toString("base64"),
resave: false,
saveUninitialized: false,
})
);
// API
app.post("/login", checkNotAuthenticated, internal.postLogin);
app.post("/register", checkNotAuthenticated, internal.postRegister);
app.post("/setting", checkAuthenticated, internal.postSetting);
Generic Theme (#1) * Theme work Signed-off-by: Armored Dragon <publicmail@armoreddragon.com> * User registration. Cleanup CSS. Signed-off-by: Armored Dragon <publicmail@armoreddragon.com> * Post Creation and Manipulation Uploading images now easier. Just drag and drop onto the text area. Signed-off-by: Armored Dragon <publicmail@armoreddragon.com> * Author Page. Edit author page. Author display name. Generic media uploads. Core refactoring. Signed-off-by: Armored Dragon <publicmail@armoreddragon.com> * Texteditor bugfix. PGAdmin docker container for management of database. Signed-off-by: Armored Dragon <publicmail@armoreddragon.com> * Tags. Search by tags. Return tags used by posts. Signed-off-by: Armored Dragon <publicmail@armoreddragon.com> * New post button. Fix index "page" param not being honored. Signed-off-by: Armored Dragon <publicmail@armoreddragon.com> * Post drafts Users can now only have one "unpublished" draft. Improved password handling. Minor cleanup. Admin panel navigation link. Signed-off-by: Armored Dragon <publicmail@armoreddragon.com> * Post visibility flairs Signed-off-by: Armored Dragon <publicmail@armoreddragon.com> * Publish date autofill to now. Fix deleteBlog. Signed-off-by: Armored Dragon <publicmail@armoreddragon.com> * Removed unused function Signed-off-by: Armored Dragon <publicmail@armoreddragon.com> * Media upload pruning. Uploaded media is now pruned automatically every time a post is updated. Minor cleanup. Groundwork for media types other than images. Signed-off-by: Armored Dragon <publicmail@armoreddragon.com> * Updated name. Use the manifest data. Signed-off-by: Armored Dragon <publicmail@armoreddragon.com> --------- Signed-off-by: Armored Dragon <publicmail@armoreddragon.com>
2024-04-30 15:26:35 +00:00
app.post("/api/web/image", checkAuthenticated, internal.postImage);
app.delete("/api/web/post/image", checkAuthenticated, internal.deleteImage);
app.delete("/api/web/post", checkAuthenticated, internal.deleteBlog);
app.patch("/api/web/post", checkAuthenticated, internal.patchBlog);
app.patch("/api/web/biography", checkAuthenticated, internal.patchBiography);
app.patch("/api/web/user", checkAuthenticated, internal.patchUser);
// app.delete("/logout", page_scripts.logout);
// Endpoints
app.get("/", page_scripts.index);
app.get("/login", page_scripts.login);
app.get("/register", checkNotAuthenticated, page_scripts.register);
app.get("/author/:author_id", page_scripts.author);
Generic Theme (#1) * Theme work Signed-off-by: Armored Dragon <publicmail@armoreddragon.com> * User registration. Cleanup CSS. Signed-off-by: Armored Dragon <publicmail@armoreddragon.com> * Post Creation and Manipulation Uploading images now easier. Just drag and drop onto the text area. Signed-off-by: Armored Dragon <publicmail@armoreddragon.com> * Author Page. Edit author page. Author display name. Generic media uploads. Core refactoring. Signed-off-by: Armored Dragon <publicmail@armoreddragon.com> * Texteditor bugfix. PGAdmin docker container for management of database. Signed-off-by: Armored Dragon <publicmail@armoreddragon.com> * Tags. Search by tags. Return tags used by posts. Signed-off-by: Armored Dragon <publicmail@armoreddragon.com> * New post button. Fix index "page" param not being honored. Signed-off-by: Armored Dragon <publicmail@armoreddragon.com> * Post drafts Users can now only have one "unpublished" draft. Improved password handling. Minor cleanup. Admin panel navigation link. Signed-off-by: Armored Dragon <publicmail@armoreddragon.com> * Post visibility flairs Signed-off-by: Armored Dragon <publicmail@armoreddragon.com> * Publish date autofill to now. Fix deleteBlog. Signed-off-by: Armored Dragon <publicmail@armoreddragon.com> * Removed unused function Signed-off-by: Armored Dragon <publicmail@armoreddragon.com> * Media upload pruning. Uploaded media is now pruned automatically every time a post is updated. Minor cleanup. Groundwork for media types other than images. Signed-off-by: Armored Dragon <publicmail@armoreddragon.com> * Updated name. Use the manifest data. Signed-off-by: Armored Dragon <publicmail@armoreddragon.com> --------- Signed-off-by: Armored Dragon <publicmail@armoreddragon.com>
2024-04-30 15:26:35 +00:00
app.get("/author/:author_id/edit", checkAuthenticated, page_scripts.authorEdit);
2023-09-21 00:41:57 +00:00
app.get("/admin", checkAuthenticated, page_scripts.admin);
Generic Theme (#1) * Theme work Signed-off-by: Armored Dragon <publicmail@armoreddragon.com> * User registration. Cleanup CSS. Signed-off-by: Armored Dragon <publicmail@armoreddragon.com> * Post Creation and Manipulation Uploading images now easier. Just drag and drop onto the text area. Signed-off-by: Armored Dragon <publicmail@armoreddragon.com> * Author Page. Edit author page. Author display name. Generic media uploads. Core refactoring. Signed-off-by: Armored Dragon <publicmail@armoreddragon.com> * Texteditor bugfix. PGAdmin docker container for management of database. Signed-off-by: Armored Dragon <publicmail@armoreddragon.com> * Tags. Search by tags. Return tags used by posts. Signed-off-by: Armored Dragon <publicmail@armoreddragon.com> * New post button. Fix index "page" param not being honored. Signed-off-by: Armored Dragon <publicmail@armoreddragon.com> * Post drafts Users can now only have one "unpublished" draft. Improved password handling. Minor cleanup. Admin panel navigation link. Signed-off-by: Armored Dragon <publicmail@armoreddragon.com> * Post visibility flairs Signed-off-by: Armored Dragon <publicmail@armoreddragon.com> * Publish date autofill to now. Fix deleteBlog. Signed-off-by: Armored Dragon <publicmail@armoreddragon.com> * Removed unused function Signed-off-by: Armored Dragon <publicmail@armoreddragon.com> * Media upload pruning. Uploaded media is now pruned automatically every time a post is updated. Minor cleanup. Groundwork for media types other than images. Signed-off-by: Armored Dragon <publicmail@armoreddragon.com> * Updated name. Use the manifest data. Signed-off-by: Armored Dragon <publicmail@armoreddragon.com> --------- Signed-off-by: Armored Dragon <publicmail@armoreddragon.com>
2024-04-30 15:26:35 +00:00
app.get("/posts", page_scripts.blogList);
app.get("/post/new", checkAuthenticated, page_scripts.blogNew);
app.get("/post/:blog_id", page_scripts.blogSingle);
app.get("/post/:blog_id/edit", checkAuthenticated, page_scripts.blogEdit);
app.get("/atom", page_scripts.atom);
app.get("/json", page_scripts.jsonFeed);
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();
}
app.listen(5004);