| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495 |
- const express = require('express');
- require('express-async-errors');
- const bodyParser = require('body-parser');
- const basicAuth = require('express-basic-auth');
- const webpack = require('webpack');
- const path = require('path');
- const getConfig = require('server/config');
- const { getLogger } = require('server/modules/logger');
- const { getDBConnection } = require('server/modules/db');
- const { apiRoutes } = require('server/routes');
- const webpackConfig = require('../../webpack.config');
- function setupDevServer(config, db, logger, app) {
- if (!config.__DEV__ || process.env.SKIP_APP === 'true') {
- return;
- }
- const compiler = webpack(webpackConfig);
- const serverOptions = {
- quiet: true,
- publicPath: webpackConfig.output.publicPath,
- hot: true
- };
- // eslint-disable-next-line global-require
- app.use(require('webpack-dev-middleware')(compiler, serverOptions));
- // eslint-disable-next-line global-require
- app.use(require('webpack-hot-middleware')(compiler));
- }
- function clientRoute(config, db, logger, app) {
- app.use(express.static(path.resolve(__dirname, '../../static')));
- }
- function getUnauthorisedResponse(req) {
- let message = 'No credentials provided';
- if (req.auth) {
- message = `Credentials ${req.auth.user}:${req.auth.password} rejected`;
- }
- return `<h1>401 - ${message}</h1>`;
- }
- function setupMiddleware(config, app) {
- app.use(bodyParser.json());
- app.use(basicAuth({
- users: {
- admin: config.password
- },
- challenge: true,
- unauthorizedResponse: getUnauthorisedResponse,
- realm: 'gurubota0e7b34ca'
- }));
- }
- async function run() {
- const config = getConfig();
- const logger = getLogger(config);
- try {
- const db = await getDBConnection(config, logger);
- const app = express();
- setupMiddleware(config, app);
- app.use('/api1', apiRoutes(config, db, logger));
- setupDevServer(config, db, logger, app);
- clientRoute(config, db, logger, app);
- const port = process.env.PORT || 3000;
- app.listen(port, () => {
- logger.info('Listening on port', port);
- });
- } catch (err) {
- logger.error('Error setting up app');
- logger.error(err.stack);
- }
- }
- module.exports = {
- run
- };
|