if (process.env.NODE_ENV !== 'production') { require('dotenv').config() } const MongoClient = require('mongodb').MongoClient const db_config = require('./database') const express = require('express') const server = express() const cors = require('cors') const path = require('path') const passport = require('passport') const flash = require('express-flash') const session = require('express-session') const methodOverride = require('method-override') const multer = require('multer') const QiwiBillPaymentsAPI = require('@qiwi/bill-payments-node-js-sdk') const qiwiApi = new QiwiBillPaymentsAPI(process.env.QIWI_SECRET_KEY) MongoClient.connect(db_config.url, { useNewUrlParser: true, useUnifiedTopology: true, }) .then((client) => { const db = client.db(db_config.name) const storage = multer.diskStorage({ destination: 'dist/public/img/service-icons', filename: function (req, file, cb) { cb( null, `${file.fieldname}-${Date.now()}${path.extname(file.originalname)}` ) }, }) // Config server.use(cors()) server.use(express.static(`${__dirname}/../dist/public`)) server.use(multer({ storage: storage }).single('img')) server.use(express.urlencoded({ extended: false })) server.use(express.json()) server.use(flash()) server.use( session({ secret: require('crypto-random-string')({ length: 64, type: 'base64' }), resave: true, saveUninitialized: false, }) ) server.use(passport.initialize()) server.use(passport.session()) server.use(methodOverride('_method')) server.set('view engine', 'pug') server.set('views', `${__dirname}/../dist/views`) // Routes require('./routes/main')(server, db) // маршруты сайта require('./routes/admin')(server, db) // маршрут с формой авторизации админа require('./routes/control-panel')(server, db) // маршруты с панелью управления require('./routes/api')(server, db) // отдача данных клиенту // Payments require('./routes/success')(server, db, qiwiApi) require('./routes/payments/qiwi.payment')(server, db, qiwiApi) // 404 Redirect server.use((req, res) => res.status(404).render('main/404')) }) .catch((error) => { server.get('*', (req, res) => { res.send('Произошла ошибка.') console.log(error) }) }) .finally( server.listen(process.env.PORT || 3000, console.log('App is running...')) )