cnc-speed-calculator/app.js

100 lines
3.3 KiB
JavaScript
Raw Normal View History

2021-01-27 23:36:51 +01:00
const createError = require('http-errors');
const express = require('express');
const path = require('path');
const cookieParser = require('cookie-parser');
2021-01-28 01:30:55 +01:00
const bodyParser = require('body-parser')
2021-01-27 23:36:51 +01:00
const logger = require('./config/winston');
const sassMiddleware = require('node-sass-middleware');
const expressWinston = require('express-winston');
2021-01-30 20:33:06 +01:00
const flash = require('connect-flash');
2021-01-27 23:36:51 +01:00
const i18n = require('i18n');
2021-01-30 20:33:06 +01:00
const session = require('express-session');
2021-01-27 23:36:51 +01:00
const indexRouter = require('./routes/index');
2021-01-28 01:30:55 +01:00
const loginRouter = require('./routes/login');
2021-01-30 20:33:06 +01:00
const presetManagerRouter = require('./routes/preset-manager');
2021-01-28 01:30:55 +01:00
const passport = require('./config/passport');
2021-01-27 23:36:51 +01:00
const app = express();
// view engine setup
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'ejs');
i18n.configure({
// setup some locales - other locales default to en silently
locales: ['en', 'fr'],
// where to store json files - defaults to './locales'
directory: __dirname + '/locales'
});
// Logger
app.use(expressWinston.logger({
winstonInstance: logger,
meta: true, // optional: control whether you want to log the meta data about the request (default to true)
expressFormat: true, // Use the default Express/morgan request formatting. Enabling this will override any msg if true. Will only output colors with colorize set to true
colorize: true, // Color the text and status code, using the Express/morgan color palette (text: gray, status: default green, 3XX cyan, 4XX yellow, 5XX red).
level: function (req, res) {
if (res.statusCode < 500)
return "debug";
return "warn";
}
}));
app.use(express.json());
app.use(express.urlencoded({ extended: false }));
2021-01-30 20:33:06 +01:00
app.use(session({ secret: 'keyboard cat', resave: false, saveUninitialized: false }));
2021-01-27 23:36:51 +01:00
app.use(cookieParser());
2021-01-28 01:30:55 +01:00
app.use(bodyParser.urlencoded({ extended: true }));
// app.use(sassMiddleware({
// src: path.join(__dirname, 'public'),
// dest: path.join(__dirname, 'public'),
// indentedSyntax: false, // true = .sass and false = .scss
// sourceMap: true,
// debug: false,
// response: false,
// log: function (severity, key, value) { logger.log(severity, `node-sass-middleware ${key} : ${value}`); }
//
// }));
2021-01-27 23:36:51 +01:00
app.use(express.static(path.join(__dirname, 'public')));
app.use(i18n.init)
2021-01-28 01:30:55 +01:00
app.use(passport.initialize());
app.use(passport.session());
2021-01-30 20:33:06 +01:00
app.use(flash());
2021-01-28 01:30:55 +01:00
2021-01-27 23:36:51 +01:00
app.use('/', indexRouter);
2021-01-28 01:30:55 +01:00
app.use('/', loginRouter);
2021-01-30 20:33:06 +01:00
app.use('/', presetManagerRouter);
2021-01-27 23:36:51 +01:00
// Boootstrap JS Files
app.use('/js/bootstrap.min.js', express.static(path.join(__dirname, '/node_modules/bootstrap/dist/js/bootstrap.min.js')))
2021-01-30 20:33:06 +01:00
// Fontawesome Files
app.use('/css/fa-all.min.css', express.static(path.join(__dirname, '/node_modules/@fortawesome/fontawesome-free/css/all.min.css')))
app.use('/webfonts/', express.static(path.join(__dirname, '/node_modules/@fortawesome/fontawesome-free/webfonts')))
2021-01-27 23:36:51 +01:00
// catch 404 and forward to error handler
app.use(function (req, res, next) {
next(createError(404));
});
// error handler
app.use(function (err, req, res, next) {
// set locals, only providing error in development
res.locals.message = err.message;
res.locals.error = req.app.get('env') === 'development' ? err : {};
// render the error page
res.status(err.status || 500);
res.render('error');
});
module.exports = app;