yet-another-blog/yab.js

71 lines
2.1 KiB
JavaScript

// Multer file handling
// REVIEW: Look for a way to drop this dependency?
const multer = require("multer");
const multer_storage = multer.memoryStorage();
const upload = multer({ storage: multer_storage });
// Express
const express = require("express");
const session = require("express-session");
const app = express();
const path = require("path");
// Security and encryption
const bcrypt = require("bcrypt");
const crypto = require("crypto");
// Local modules
const page_scripts = require("./backend/page_scripts");
// Express settings
app.set("view-engine", "ejs");
app.set("views", path.join(__dirname, "frontend/views"));
app.use(express.static(path.join(__dirname, "frontend/public")));
const bodyParser = require("body-parser");
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: true }));
app.use(upload.array());
app.use(
session({
secret: crypto.randomBytes(128).toString("base64"),
resave: false,
saveUninitialized: false,
})
);
// Account Creation Endpoints
app.get("/login", page_scripts.login);
app.post("/login", checkNotAuthenticated, page_scripts.loginPost);
app.get("/register", checkNotAuthenticated, page_scripts.register);
app.post("/register", checkNotAuthenticated, page_scripts.registerPost);
// Account Required Endpoints
app.post("/setting", checkAuthenticated, page_scripts.settingPost);
// app.get("/blog/new", checkAuthenticated, page_scripts.blogNew);
// app.post("/blog", checkAuthenticated, page_scripts.postBlog);
// app.delete("/logout", page_scripts.logout);
// Image Endpoints
// app.post("/api/image", checkAuthenticated, upload.fields([{ name: "image" }]), page_scripts.uploadImage);
// Endpoints
app.get("/", page_scripts.index);
app.get("/admin", checkAuthenticated, page_scripts.admin);
// app.get("/blog", page_scripts.blogList);
// app.get("/blog/:id", page_scripts.blogSingle);
// app.get("/projects", page_scripts.projectList);
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(8080);