Files
noisedash/server/app.js
2022-09-06 02:36:19 -07:00

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