AutoCatBackend/index.js

52 lines
1.6 KiB
JavaScript

const express = require('express');
const bodyParser = require('body-parser');
const expressMongoDb = require('./middleware/mongo');
const users = require('./routes/user');
const vehicles = require('./routes/vehicles');
const events = require('./routes/events');
const app = express();
const bearerToken = require('express-bearer-token');
const jwt = require('./middleware/jwt');
const https = require('https');
const fs = require('fs');
const compression = require('compression');
const dotenv = require('dotenv');
const dotenvExpand = require('dotenv-expand');
const responseTime = require('response-time');
let dotenvConf = dotenv.config();
dotenvExpand(dotenvConf);
app.use(responseTime(function (req, res, time) {
var stat = (req.method + req.url).toLowerCase()
.replace(/[:.]/g, '')
.replace(/\//g, '_');
console.log(`${stat} - ${time}`);
}));
app.use(compression());
app.use(bodyParser.json());
app.use(expressMongoDb(process.env.MONGO_CONNECTION_STRING));
app.use(bearerToken());
app.use(jwt({ secret: process.env.JWT_SECRET_AUTH, exclude: ['/user/signup', '/user/login', '/vehicles/shared_report'] }));
app.use('/user', users);
app.use('/vehicles', vehicles);
app.use('/events', events);
// 404 for all unknown routes
app.use((req, res) => {
res.status(404).send({ success: false, error: 'Route not found' });
});
if(process.env.NODE_ENV == 'production') {
const httpsServer = https.createServer({
key: fs.readFileSync(process.env.PRIVATE_KEY_PATH),
cert: fs.readFileSync(process.env.CERT_PATH)
}, app);
httpsServer.listen(8443);
} else {
app.listen(3000);
}