mirror of
https://github.com/NodeBB/NodeBB.git
synced 2025-11-10 16:05:49 +01:00
feat: track login sessions for admin dashboard reporting
This commit is contained in:
@@ -2,6 +2,7 @@
|
||||
"forum-traffic": "Forum Traffic",
|
||||
"page-views": "Page Views",
|
||||
"unique-visitors": "Unique Visitors",
|
||||
"logins": "Logins",
|
||||
"new-users": "New Users",
|
||||
"posts": "Posts",
|
||||
"topics": "Topics",
|
||||
|
||||
@@ -117,14 +117,16 @@ async function getStats() {
|
||||
|
||||
const results = await Promise.all([
|
||||
getStatsForSet('ip:recent', 'uniqueIPCount'),
|
||||
getStatsForSet('sessions:recent', 'loginCount'),
|
||||
getStatsForSet('users:joindate', 'userCount'),
|
||||
getStatsForSet('posts:pid', 'postCount'),
|
||||
getStatsForSet('topics:tid', 'topicCount'),
|
||||
]);
|
||||
results[0].name = '[[admin/dashboard:unique-visitors]]';
|
||||
results[1].name = '[[admin/dashboard:new-users]]';
|
||||
results[2].name = '[[admin/dashboard:posts]]';
|
||||
results[3].name = '[[admin/dashboard:topics]]';
|
||||
results[1].name = '[[admin/dashboard:logins]]';
|
||||
results[2].name = '[[admin/dashboard:new-users]]';
|
||||
results[3].name = '[[admin/dashboard:posts]]';
|
||||
results[4].name = '[[admin/dashboard:topics]]';
|
||||
cache.set('admin:stats', results, 600000);
|
||||
return results;
|
||||
}
|
||||
|
||||
@@ -357,6 +357,7 @@ authenticationController.onSuccessfulLogin = async function (req, uid) {
|
||||
user.updateLastOnlineTime(uid),
|
||||
user.updateOnlineUsers(uid),
|
||||
analytics.increment('logins'),
|
||||
db.incrObjectFieldBy('global', 'loginCount', 1),
|
||||
]);
|
||||
if (uid > 0) {
|
||||
await db.setObjectField(`uid:${uid}:sessionUUID:sessionId`, uuid, req.sessionID);
|
||||
|
||||
@@ -111,7 +111,7 @@ module.exports = function (User) {
|
||||
return;
|
||||
}
|
||||
await cleanExpiredSessions(uid);
|
||||
await db.sortedSetAdd(`uid:${uid}:sessions`, Date.now(), sessionId);
|
||||
await db.sortedSetsAdd([`uid:${uid}:sessions`, 'sessions:recent'], Date.now(), sessionId);
|
||||
await revokeSessionsAboveThreshold(uid, meta.config.maxUserSessions);
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user