mirror of
https://github.com/sergeyyarkov/digital-store.git
synced 2026-10-11 02:09:05 +03:00
78 lines
2.5 KiB
JavaScript
78 lines
2.5 KiB
JavaScript
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...'))
|
||
)
|