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
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);
|
|
|