const express = require('express'); const fs = require('fs'); const session = require('express-session'); const bodyParser = require('body-parser'); const mongoose = require('mongoose'); const morgan = require('morgan'); const mongoDBStore = require('connect-mongodb-session')(session); // Config const config = require('js-yaml').safeLoad(fs.readFileSync('./config.yml', 'utf8')); // Middlewares const userLoader = require('./middlewares/userLoader'); const loginChecker = require('./middlewares/loginChecker'); // Utils const render = require('./utils/render'); const { warn, error } = require('./utils/notifications'); // Routes const authRouter = require('./routes/auth'); const charactersRouter = require('./routes/characters'); // Crons require('./utils/crons'); // Configuration const app = express(); const store = new mongoDBStore({ uri: 'mongodb://localhost/rolegame', collection: 'sessions' }); store.on('error', function(error) { console.error(error); }); app.set('view engine', 'pug'); // Middlewares app.use(morgan('tiny')); app.use(session({ secret: config.secret, resave: false, saveUninitialized: false, store })); app.use(bodyParser.urlencoded({ extended: false })); app.use('/media', express.static('media')); app.use(userLoader); app.use(loginChecker); // Routes app.get('/', async (req, res) => { return render(req, res, 'home'); }); app.use('/auth', authRouter); app.use('/characters', charactersRouter); mongoose.connect('mongodb://localhost/rolegame', err => { if (err) { console.error('ERROR Unable to connect to Mongo database') } else { console.log('Server connected to Mongo database'); } app.listen(config.port, () => { console.log(`Server listening on http://localhost:${config.port}`); }); });