2023-03-04
This commit is contained in:
111
src/app.js
111
src/app.js
@@ -1,32 +1,64 @@
|
||||
require("dotenv").config();
|
||||
|
||||
var createError = require("http-errors");
|
||||
var express = require("express");
|
||||
var path = require("path");
|
||||
var cookieParser = require("cookie-parser");
|
||||
var session = require("express-session");
|
||||
var csrf = require("csurf");
|
||||
var passport = require("passport");
|
||||
var logger = require("morgan");
|
||||
var bodyParser = require("body-parser");
|
||||
const createError = require("http-errors");
|
||||
const express = require("express");
|
||||
const path = require("path");
|
||||
const cookieParser = require("cookie-parser");
|
||||
const session = require("express-session");
|
||||
const SqliteStore = require("better-sqlite3-session-store")(session)
|
||||
var sqlite = require("better-sqlite3");
|
||||
const { generateToken } = require('./middlewares/csrf');
|
||||
const passport = require("passport");
|
||||
const logger = require("morgan");
|
||||
const bodyParser = require("body-parser");
|
||||
global.XMLHttpRequest = require("xhr2");
|
||||
var teamsnap = require("teamsnap.js");
|
||||
var indexRouter = require("./routes/index");
|
||||
var authRouter = require("./routes/auth");
|
||||
// const teamsnap = require("./public/js/teamsnap");
|
||||
const teamsnap = require("teamsnap.js/lib/teamsnap")
|
||||
// import {teamsnap} from "teamsnap.js"
|
||||
const indexRouter = require("./routes/index").router;
|
||||
const authRouter = require("./routes/auth").router;
|
||||
var hbs = require('hbs');
|
||||
const { embeddedSvgFromPath } = require("./lib/utils");
|
||||
const cors = require('cors');
|
||||
const corsOptions = {
|
||||
origin: false
|
||||
}
|
||||
|
||||
|
||||
// teamsnap.init(process.env["TEAMSNAP_CLIENT_ID"])
|
||||
// console.log(teamsnap)
|
||||
// teamsnap.teamsnap.init
|
||||
var app = express();
|
||||
|
||||
// view engine setup
|
||||
app.set("views", path.join(__dirname, "views"));
|
||||
app.set("view engine", "pug");
|
||||
hbs.registerPartials(require("./routes/index").partials)
|
||||
hbs.registerPartials(require("./controllers/event").partials)
|
||||
hbs.registerPartials(require("./controllers/eventlineup").partials)
|
||||
|
||||
hbs.registerHelper('dateFormat', require('handlebars-dateformat'));
|
||||
hbs.registerHelper('section', (name, options) => {
|
||||
if(!this._sections) this._sections = {};
|
||||
this._sections[name] = options.fn(this);
|
||||
return null;
|
||||
})
|
||||
hbs.registerHelper("embeddedSvgFromPath", require('./lib/utils').embeddedSvgFromPath)
|
||||
hbs.registerHelper(require("./controllers/event").helpers)
|
||||
hbs.registerHelper(require("./controllers/eventlineup").helpers)
|
||||
hbs.registerHelper(require("./helpers/eventsheet"))
|
||||
|
||||
app.set("view engine", "hbs");
|
||||
app.locals.pluralize = require("pluralize");
|
||||
|
||||
app.use(bodyParser.urlencoded({ extended: true }));
|
||||
if (process.env.NODE_ENV === "development") {
|
||||
var connectLiveReload = require("connect-livereload");
|
||||
app.use(connectLiveReload());
|
||||
}
|
||||
|
||||
app.use(bodyParser.json());
|
||||
app.use(bodyParser.urlencoded());
|
||||
app.use(logger("dev"));
|
||||
app.use(express.json());
|
||||
app.use(express.urlencoded({ extended: false }));
|
||||
app.use(cors(corsOptions))
|
||||
app.use(cookieParser());
|
||||
app.use(express.static(path.join(__dirname, "public")));
|
||||
app.use(
|
||||
@@ -39,25 +71,50 @@ app.use(
|
||||
path.join(__dirname, "../node_modules/@teamsnap/teamsnap-ui/dist/css")
|
||||
)
|
||||
);
|
||||
app.use(
|
||||
"/teamsnap-ui/assets",
|
||||
express.static(
|
||||
path.join(__dirname, "../node_modules/@teamsnap/teamsnap-ui/src/assets")
|
||||
)
|
||||
);
|
||||
app.use(
|
||||
"/font",
|
||||
express.static(path.join(__dirname, "../node_modules/bootstrap-icons/font"))
|
||||
);
|
||||
app.use(
|
||||
"/bootstrap-icons",
|
||||
express.static(path.join(__dirname, "../node_modules/bootstrap-icons/icons"))
|
||||
);
|
||||
app.use(
|
||||
"/js",
|
||||
express.static(path.join(__dirname, "../node_modules/sortablejs"))
|
||||
);
|
||||
app.use(
|
||||
"/js",
|
||||
express.static(path.join(__dirname, "../node_modules/teamsnap.js/lib/"))
|
||||
);
|
||||
const db = new sqlite("./var/db/sessions.db");
|
||||
app.use(
|
||||
session({
|
||||
store: new SqliteStore({
|
||||
client: db,
|
||||
expired: {
|
||||
clear: true,
|
||||
intervalMs: 900000 //ms = 15min
|
||||
}
|
||||
}),
|
||||
teamsnap_token: "",
|
||||
current_team: "",
|
||||
secret: "keyboard cat",
|
||||
secret: process.env['SECRET'],
|
||||
resave: false, // don't save session if unmodified
|
||||
saveUninitialized: false, // don't create session until something stored
|
||||
})
|
||||
);
|
||||
app.use(csrf());
|
||||
app.use(passport.authenticate("session"));
|
||||
app.use(function (req, res, next) {
|
||||
res.locals.csrfToken = generateToken;
|
||||
next();
|
||||
});
|
||||
app.use(passport.authenticate("session", { failureRedirect: '/login', failureMessage: true }));
|
||||
app.use(function (req, res, next) {
|
||||
var msgs = req.session.messages || [];
|
||||
res.locals.messages = msgs;
|
||||
@@ -65,14 +122,17 @@ app.use(function (req, res, next) {
|
||||
req.session.messages = [];
|
||||
next();
|
||||
});
|
||||
app.use(function (req, res, next) {
|
||||
res.locals.csrfToken = req.csrfToken();
|
||||
next();
|
||||
});
|
||||
|
||||
app.use("/", authRouter);
|
||||
app.use("/", indexRouter);
|
||||
|
||||
app.use(require("./routes/team").router)
|
||||
app.use(require("./routes/opponent").router)
|
||||
app.use(require("./routes/event").router)
|
||||
app.use(require("./routes/eventlineup").router)
|
||||
app.use(require("./routes/eventsheet").router)
|
||||
// app.use("/", indexRouter.team_router);
|
||||
|
||||
// catch 404 and forward to error handler
|
||||
app.use(function (req, res, next) {
|
||||
next(createError(404));
|
||||
@@ -85,8 +145,7 @@ app.use(function (err, req, res, next) {
|
||||
res.locals.error = req.app.get("env") === "development" ? err : {};
|
||||
console.log("error:", err);
|
||||
// render the error page
|
||||
res.status(err.status || 500);
|
||||
res.render("error", { message: err.message });
|
||||
res.status(err.status || 500).render("error", { title:"Error", layout: req.layout, message: err.message });
|
||||
});
|
||||
|
||||
module.exports = app;
|
||||
module.exports = {app};
|
||||
Reference in New Issue
Block a user