mirror of
https://github.com/kaythomas0/noisedash.git
synced 2025-11-11 10:56:20 +00:00
59 lines
1.8 KiB
JavaScript
59 lines
1.8 KiB
JavaScript
const express = require('express')
|
|
const session = require('express-session')
|
|
const FileStore = require('session-file-store')(session)
|
|
const passport = require('passport')
|
|
const path = require('path')
|
|
const cookieParser = require('cookie-parser')
|
|
const config = require('config')
|
|
const history = require('connect-history-api-fallback')
|
|
const crypto = require('crypto')
|
|
const authRouter = require('./routes/auth')
|
|
const usersRouter = require('./routes/users')
|
|
const profilesRouter = require('./routes/profiles')
|
|
const samplesRouter = require('./routes/samples')
|
|
const app = express()
|
|
const fileStoreOptions = {
|
|
path: config.get('Server.sessionFileStorePath')
|
|
}
|
|
|
|
require('./boot/db')()
|
|
require('./boot/auth')()
|
|
|
|
app.use(express.json())
|
|
app.use(express.urlencoded({ extended: false }))
|
|
app.use(cookieParser())
|
|
if (process.env.NODE_ENV === 'production') {
|
|
app.use(express.static(path.join(__dirname, '../dist')))
|
|
}
|
|
|
|
// Workaround for allowing static files to be served while using connect-history-api-fallback
|
|
app.use('/samples', express.static(path.join(__dirname, '../', config.get('Server.sampleUploadPath'))))
|
|
app.use(history())
|
|
app.use('/samples', express.static(path.join(__dirname, '../', config.get('Server.sampleUploadPath'))))
|
|
|
|
const sessionSecret = crypto.randomBytes(64).toString('hex')
|
|
app.use(session({
|
|
store: new FileStore(fileStoreOptions),
|
|
secret: sessionSecret,
|
|
resave: true,
|
|
saveUninitialized: true,
|
|
cookie: { sameSite: 'strict' }
|
|
}))
|
|
app.use((req, res, next) => {
|
|
const msgs = req.session.messages || []
|
|
res.locals.messages = msgs
|
|
res.locals.hasMessages = !!msgs.length
|
|
req.session.messages = []
|
|
next()
|
|
})
|
|
app.use(passport.initialize())
|
|
app.use(passport.authenticate('session'))
|
|
|
|
// Define routes
|
|
app.use('/', authRouter)
|
|
app.use('/', usersRouter)
|
|
app.use('/', profilesRouter)
|
|
app.use('/', samplesRouter)
|
|
|
|
module.exports = app
|