You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

51 lines
1.1 KiB

const express = require("express");
const jwt = require("jsonwebtoken");
const fs = require("fs");
const app = express();
require("dotenv").config();
app.use("/", express.static(__dirname + "/public"));
app.set("views", __dirname + "/views");
app.set("view engine", "jsx");
app.engine(
"jsx",
require("express-react-views").createEngine({
babel: {
presets: [
"@babel/preset-react",
["@babel/preset-env", { targets: { node: "current" } }],
],
},
plugins: ["@babel/plugin-proposal-object-rest-spread"],
})
);
app.use(require("cookie-parser")());
// Attach user
app.use((req, res, next) => {
const token = req.cookies.token;
req.user = { ...jwt.decode(token), token };
next();
});
app.use("/landing", require("./routes/landing"));
app.use("/auth", require("./routes/auth"));
// Redirect if not authenticated
app.use((req, res, next) => {
if (!req.user.token) return res.redirect("/landing");
next();
});
app.use("/", require("./routes/index"));
app.use("/clients", require("./routes/clients"));
app.get("/*", (req, res) => {
res.render("404");
});
app.listen(process.env.PORT || 80);