Files
overleaf-cep/services/web/app/src/Features/SamlLog/SamlLogHandler.js
T
Jessica Lawshe 0412f56333 Merge pull request #9486 from overleaf/jel-saml-log
[web] Only log email and/or SAML response from body

GitOrigin-RevId: 6942b87a3e9164e7f330955e3929c05865ce56fe
2022-09-02 08:05:22 +00:00

74 lines
2.0 KiB
JavaScript

const { SamlLog } = require('../../models/SamlLog')
const SessionManager = require('../Authentication/SessionManager')
const logger = require('@overleaf/logger')
const { err: errSerializer } = require('@overleaf/logger/serializers')
function log(req, data, samlAssertion) {
let providerId, sessionId
data = data || {}
try {
const samlLog = new SamlLog()
const { path, query } = req
const { saml } = req.session
const userId = SessionManager.getLoggedInUserId(req.session)
providerId = (req.session.saml?.universityId || '').toString()
sessionId = (req.sessionID || '').toString().substr(0, 8)
samlLog.providerId = providerId
samlLog.sessionId = sessionId
samlLog.path = path
samlLog.userId = userId
data.query = query
data.samlSession = saml
if (data.error instanceof Error) {
const errSerialized = errSerializer(data.error)
if (data.error.tryAgain) {
errSerialized.tryAgain = data.error.tryAgain
}
data.error = errSerialized
}
if (samlAssertion) {
const samlAssertionForLog = {
assertionXml: samlAssertion.getAssertionXml(),
responseXml: samlAssertion.getSamlResponseXml(),
assertionJsonExtended: req.user_info,
}
samlLog.samlAssertion = JSON.stringify(samlAssertionForLog)
}
if (data.error || samlAssertion) {
data.body = {}
if (req.body.email) data.body.email = req.body.email
if (req.body.SAMLResponse) data.body.SAMLResponse = req.body.SAMLResponse
}
try {
samlLog.jsonData = JSON.stringify(data)
} catch (err) {
// log but continue on data errors
logger.error(
{ err, sessionId, providerId },
'SamlLog JSON.stringify Error'
)
}
samlLog.save(err => {
if (err) {
logger.error({ err, sessionId, providerId }, 'SamlLog Error')
}
})
} catch (err) {
logger.error({ err, sessionId, providerId }, 'SamlLog Error')
}
}
const SamlLogHandler = {
log,
}
module.exports = SamlLogHandler