chore: use monorepo organization
This commit is contained in:
parent
deaf7d6ecc
commit
a687827f7e
1099 changed files with 8184 additions and 11535 deletions
|
|
@ -0,0 +1,21 @@
|
|||
const db = require('../../db')
|
||||
const { USER_SESSIONS_TABLE_NAME } = require('../../constants')
|
||||
const logger = require('../../logger')
|
||||
|
||||
let schemaCache = Date.now()
|
||||
|
||||
const cleanUserSessions = (cleanInterval) => (req, res, next) => {
|
||||
const now = Date.now()
|
||||
|
||||
if (schemaCache + cleanInterval > now) return next()
|
||||
|
||||
logger.debug(`Clearing expired sessions for schema 'public'`)
|
||||
return db.none('DELETE FROM $1^ WHERE expire < to_timestamp($2 / 1000.0)', [USER_SESSIONS_TABLE_NAME, now])
|
||||
.then(() => {
|
||||
schemaCache = now
|
||||
return next()
|
||||
})
|
||||
.catch(next)
|
||||
}
|
||||
|
||||
module.exports = cleanUserSessions
|
||||
28
packages/server/lib/new-admin/middlewares/context.js
Normal file
28
packages/server/lib/new-admin/middlewares/context.js
Normal file
|
|
@ -0,0 +1,28 @@
|
|||
const users = require('../../users')
|
||||
|
||||
const { AuthenticationError } = require('../graphql/errors')
|
||||
|
||||
const buildApolloContext = async ({ req, res }) => {
|
||||
if (!req.session.user) return { req, res }
|
||||
|
||||
const user = await users.verifyAndUpdateUser(
|
||||
req.session.user.id,
|
||||
req.headers['user-agent'] || 'Unknown',
|
||||
req.ip
|
||||
)
|
||||
if (!user || !user.enabled) throw new AuthenticationError('Authentication failed')
|
||||
|
||||
req.session.ua = req.headers['user-agent'] || 'Unknown'
|
||||
req.session.ipAddress = req.ip
|
||||
req.session.lastUsed = new Date(Date.now()).toISOString()
|
||||
req.session.user.id = user.id
|
||||
req.session.user.username = user.username
|
||||
req.session.user.role = user.role
|
||||
|
||||
res.set('lamassu_role', user.role)
|
||||
res.set('Access-Control-Expose-Headers', 'lamassu_role')
|
||||
|
||||
return { req, res }
|
||||
}
|
||||
|
||||
module.exports = buildApolloContext
|
||||
9
packages/server/lib/new-admin/middlewares/index.js
Normal file
9
packages/server/lib/new-admin/middlewares/index.js
Normal file
|
|
@ -0,0 +1,9 @@
|
|||
const cleanUserSessions = require('./cleanUserSessions')
|
||||
const buildApolloContext = require('./context')
|
||||
const session = require('./session')
|
||||
|
||||
module.exports = {
|
||||
cleanUserSessions,
|
||||
buildApolloContext,
|
||||
session
|
||||
}
|
||||
26
packages/server/lib/new-admin/middlewares/session.js
Normal file
26
packages/server/lib/new-admin/middlewares/session.js
Normal file
|
|
@ -0,0 +1,26 @@
|
|||
const express = require('express')
|
||||
const router = express.Router()
|
||||
const session = require('express-session')
|
||||
const PgSession = require('connect-pg-simple')(session)
|
||||
const db = require('../../db')
|
||||
const { USER_SESSIONS_TABLE_NAME } = require('../../constants')
|
||||
const { getOperatorId } = require('../../operator')
|
||||
|
||||
router.use('*', async (req, res, next) => getOperatorId('authentication').then(operatorId => session({
|
||||
store: new PgSession({
|
||||
pgPromise: db,
|
||||
tableName: USER_SESSIONS_TABLE_NAME
|
||||
}),
|
||||
name: 'lamassu_sid',
|
||||
secret: operatorId,
|
||||
resave: false,
|
||||
saveUninitialized: false,
|
||||
cookie: {
|
||||
httpOnly: true,
|
||||
secure: true,
|
||||
sameSite: true
|
||||
}
|
||||
})(req, res, next))
|
||||
)
|
||||
|
||||
module.exports = router
|
||||
Loading…
Add table
Add a link
Reference in a new issue