Now putting SSO user login events in event log.

Ylian Saint-Hilaire committed Mar 15, 2022 at 15:03 UTC f9c6d8194cec0d1fcd068588bd01653d28e5f81f
2 files changed +16 -1
views/default.handlebars
+1
@@ -15871,6 +15871,7 @@
15871 if (v == 'cookie') { return "Remember Device"; }
15872 if (v == 'tokenlogin') { return "Login Token"; }
15873 if (v == 'ipaddr') { return "IP Address"; }
15874 + if (v == 'sso') { return "Single Sign-on"; }
15875 }
15876 return EscapeHtml(v);
15877 }
webserver.js
+15 -1
@@ -2473,6 +2473,13 @@ module.exports.CreateWebServer = function (parent, db, args, certificates, doneF
2473
2474 req.session.userid = userid;
2475 setSessionRandom(req);
2476 +
2477 + // Notify account login using SSO
2478 + var targets = ['*', 'server-users', user._id];
2479 + if (user.groups) { for (var i in user.groups) { targets.push('server-users:' + i); } }
2480 + const ua = getUserAgentInfo(req);
2481 + const loginEvent = { etype: 'user', userid: user._id, username: user.name, account: obj.CloneSafeUser(user), action: 'login', msgid: 107, msgArgs: [req.clientIp, ua.browserStr, ua.osStr], msg: 'Account login', domain: domain.id, ip: req.clientIp, userAgent: req.headers['user-agent'], twoFactorType: 'sso' };
2482 + obj.parent.DispatchEvent(targets, obj, loginEvent);
2483 } else {
2484 // New users not allowed
2485 parent.debug('web', 'handleStrategyLogin: Can\'t create new accounts');
@@ -2489,7 +2496,7 @@ module.exports.CreateWebServer = function (parent, db, args, certificates, doneF
2496 if (userChange) {
2497 obj.db.SetUser(user);
2498
2492 - // Event user creation
2499 + // Event user change
2500 var targets = ['*', 'server-users'];
2501 var event = { etype: 'user', userid: user._id, username: user.name, account: obj.CloneSafeUser(user), action: 'accountchange', msg: 'Account changed', domain: domain.id };
2502 if (db.changeStream) { event.noact = 1; } // If DB change stream is active, don't use this event to create the user. Another event will come.
@@ -2498,6 +2505,13 @@ module.exports.CreateWebServer = function (parent, db, args, certificates, doneF
2505 parent.debug('web', 'handleStrategyLogin: succesful login: ' + userid);
2506 req.session.userid = userid;
2507 setSessionRandom(req);
2508 +
2509 + // Notify account login using SSO
2510 + var targets = ['*', 'server-users', user._id];
2511 + if (user.groups) { for (var i in user.groups) { targets.push('server-users:' + i); } }
2512 + const ua = getUserAgentInfo(req);
2513 + const loginEvent = { etype: 'user', userid: user._id, username: user.name, account: obj.CloneSafeUser(user), action: 'login', msgid: 107, msgArgs: [req.clientIp, ua.browserStr, ua.osStr], msg: 'Account login', domain: domain.id, ip: req.clientIp, userAgent: req.headers['user-agent'], twoFactorType: 'sso' };
2514 + obj.parent.DispatchEvent(targets, obj, loginEvent);
2515 }
2516 }
2517 //res.redirect(domain.url); // This does not handle cookie correctly.