mirror of
https://github.com/overleaf/overleaf.git
synced 2025-04-14 14:43:34 +00:00
saml session/error logging
GitOrigin-RevId: bc5e5cafbd4c5da7ba33891fa738efa9a95c5332
This commit is contained in:
parent
c6e5f3dda6
commit
7ea1a03c6b
3 changed files with 62 additions and 0 deletions
services/web/app/src
|
@ -2,6 +2,8 @@ let ErrorController
|
|||
const Errors = require('./Errors')
|
||||
const logger = require('logger-sharelatex')
|
||||
const AuthenticationController = require('../Authentication/AuthenticationController')
|
||||
const SamlLogHandler = require('../SamlLog/SamlLogHandler')
|
||||
const _ = require('lodash')
|
||||
|
||||
module.exports = ErrorController = {
|
||||
notFound(req, res) {
|
||||
|
@ -21,6 +23,20 @@ module.exports = ErrorController = {
|
|||
|
||||
handleError(error, req, res, next) {
|
||||
const user = AuthenticationController.getSessionUser(req)
|
||||
// log errors related to SAML flow
|
||||
if (req.session.saml) {
|
||||
const providerId = _.get(req.session.saml, 'universityId', '').toString()
|
||||
SamlLogHandler.log(providerId, req.sessionID, {
|
||||
error: {
|
||||
message: error && error.message,
|
||||
stack: error && error.stack
|
||||
},
|
||||
path: req.path,
|
||||
query: req.query,
|
||||
saml: req.session.saml,
|
||||
user_id: user && user._id
|
||||
})
|
||||
}
|
||||
if (error.code === 'EBADCSRFTOKEN') {
|
||||
logger.warn(
|
||||
{ err: error, url: req.url, method: req.method, user },
|
||||
|
|
20
services/web/app/src/Features/SamlLog/SamlLogHandler.js
Normal file
20
services/web/app/src/Features/SamlLog/SamlLogHandler.js
Normal file
|
@ -0,0 +1,20 @@
|
|||
const { SamlLog } = require('../../models/SamlLog')
|
||||
const logger = require('logger-sharelatex')
|
||||
|
||||
function log(providerId, sessionId, data) {
|
||||
const samlLog = new SamlLog()
|
||||
samlLog.providerId = providerId
|
||||
samlLog.sessionId = sessionId
|
||||
samlLog.data = data
|
||||
samlLog.save(err => {
|
||||
if (err) {
|
||||
logger.error({ err }, 'SamlLog Error')
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
const SamlLogHandler = {
|
||||
log
|
||||
}
|
||||
|
||||
module.exports = SamlLogHandler
|
26
services/web/app/src/models/SamlLog.js
Normal file
26
services/web/app/src/models/SamlLog.js
Normal file
|
@ -0,0 +1,26 @@
|
|||
const Settings = require('settings-sharelatex')
|
||||
const mongoose = require('mongoose')
|
||||
const { Schema } = mongoose
|
||||
|
||||
const SamlLogSchema = new Schema(
|
||||
{
|
||||
createdAt: { type: Date, default: () => new Date() },
|
||||
data: { type: Object, default: {} },
|
||||
providerId: { type: String, default: '' },
|
||||
sessionId: { type: String, default: '' }
|
||||
},
|
||||
{
|
||||
collection: 'samlLogs'
|
||||
}
|
||||
)
|
||||
|
||||
const conn = mongoose.createConnection(Settings.mongo.url, {
|
||||
server: { poolSize: Settings.mongo.poolSize || 10 },
|
||||
config: { autoIndex: false }
|
||||
})
|
||||
|
||||
const SamlLog = conn.model('SamlLog', SamlLogSchema)
|
||||
|
||||
mongoose.model('SamlLog', SamlLogSchema)
|
||||
exports.SamlLog = SamlLog
|
||||
exports.SamlLogSchema = SamlLogSchema
|
Loading…
Add table
Reference in a new issue