digital-store/server/server.js
2020-05-04 16:32:09 +03:00

78 lines
2.5 KiB
JavaScript
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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...'))
)