Untitled
unknown
plain_text
3 years ago
2.8 kB
5
Indexable
if (process.env.NODE_ENV !== "production") { require("dotenv").config(); } const express = require("express"); const path = require("path"); const ejsMate = require("ejs-mate"); const ExpressError = require("./utils/ExpressError"); const methodOverride = require("method-override"); const session = require("express-session"); const mongoose = require("mongoose"); const axios = require("axios"); const db_url = `mongodb://${process.env.MONGO_HOST}/${process.env.MONGO_DATABASE}`; const MongoDBStore = require("connect-mongo"); mongoose .connect(db_url) .then((response) => { console.log( `Connected to MongoDB. Database name: "${response.connections[0].name}"` ); }) .catch((error) => console.error("Error connecting to MongoDB", error)); const store = MongoDBStore.create({ mongoUrl: db_url, touchAfter: 24 * 3600, crypto: { secret: process.env.SECRET, }, }); store.on("error", (e) => { console.log("Session store error!", e); }); const hotelRoutes = require("./routes/hotels"); const reviewRoutes = require("./routes/reviews"); const app = express(); app.engine("ejs", ejsMate); app.set("view engine", "ejs"); app.set("views", path.join(__dirname, "views")); app.use(express.urlencoded({ extended: true })); app.use(methodOverride("_method")); app.use(express.static(path.join(__dirname, "public"))); const sessionConfig = { store, name: "session", secret: process.env.SECRET, resave: false, saveUninitialized: true, cookie: { httpOnly: true, expires: Date.now() + 1000 * 60 * 60 * 24 * 7, maxAge: 1000 * 60 * 60 * 24 * 7, }, }; app.use(session(sessionConfig)); const { generateAuthRequest, isAuthenticated } = require("./middleware"); app.use("/hotels", isAuthenticated, hotelRoutes); app.use("/hotels/:id/reviews", reviewRoutes); app.get("/", generateAuthRequest, (req, res) => { res.render("home"); }); app.get("/logout", async (req, res, next) => { try { const params = new URLSearchParams(); params.append("client_id", process.env.CLIENT_ID); params.append("client_secret", process.env.CLIENT_SECRET); params.append("refresh_token", req.session.refreshToken); await axios.post(process.env.LOGOUT_URL, params); req.session.destroy(); res.redirect("/"); } catch (err) { next(new ExpressError("Error while logging out")); } }); app.all("*", (req, res, next) => { next(new ExpressError("Page Not Found", 404)); }); app.use((err, req, res, next) => { const { statusCode = 500 } = err; if (!err.message) { err.message = "Oh No, Something Went Wrong!"; } res.status(statusCode).render("error", { err }); }); const port = process.env.PORT || 3000; app.listen(port, () => { console.log(`Serving on port ${port}`); });
Editor is loading...