diff --git a/app.js b/app.js index 2344bd3ed..ee1968a73 100755 --- a/app.js +++ b/app.js @@ -58,7 +58,7 @@ var db = mongoose.connection; var moment = require('moment'); var _ = require('underscore'); -var listDataSessions = require('./libs/modifySessions').listData; +var findSessionData = require('./libs/modifySessions').findSessionData; var dbOptions = {}; if (isPro) { @@ -515,7 +515,7 @@ if (secured) { function ttlSanity() { var options = {}; - listDataSessions(sessionStore, options, function (aErr) { + findSessionData({}, sessionStore, options, function (aErr) { if (aErr) { console.error('some error during ttlSanity', aErr); return; diff --git a/controllers/admin.js b/controllers/admin.js index 27be6d40e..ee309f764 100644 --- a/controllers/admin.js +++ b/controllers/admin.js @@ -39,7 +39,7 @@ var loadPassport = require('../libs/passportLoader').loadPassport; var strategyInstances = require('../libs/passportLoader').strategyInstances; var statusCodePage = require('../libs/templateHelpers').statusCodePage; var updateSessions = require('../libs/modifySessions').update; -var listDataSessions = require('../libs/modifySessions').listData; +var findSessionData = require('../libs/modifySessions').findSessionData; var pageMetadata = require('../libs/templateHelpers').pageMetadata; //--- Configuration inclusions @@ -371,9 +371,9 @@ exports.adminSessionActiveView = function (aReq, aRes, aNext) { var options = {}; var authedUser = aReq.session.user; var tasks = []; + var username = null; var store = aReq.sessionStore; - var sessionColl = store.db.collection('sessions'); // Session options.authedUser = authedUser = modelParser.parseUser(authedUser); @@ -390,13 +390,18 @@ exports.adminSessionActiveView = function (aReq, aRes, aNext) { return; } + username = aReq.query.q; + // Page metadata pageMetadata(options, ['Sessions', 'Admin']); + options.searchBarPlaceholder = 'Search Sessions'; + options.searchBarValue = username; + //--- Tasks tasks.push(function (aCallback) { - listDataSessions(store, options, function (aErr) { + findSessionData({ username: username }, store, options, function (aErr) { if (aErr) { statusCodePage(aReq, aRes, aNext, { statusCode: 500, @@ -429,10 +434,10 @@ exports.adminSessionActiveView = function (aReq, aRes, aNext) { aCallback(); }); - // Sort oldest to newest similar to comments + // Sort newest to oldest tasks.push(function (aCallback) { options.sessionList = _.sortBy(options.sessionList, function (aSession) { - return aSession.passport.oujsOptions.since; + return -aSession.passport.oujsOptions.since; }); aCallback(); diff --git a/libs/modifySessions.js b/libs/modifySessions.js index 6d556ef39..006b77c6a 100644 --- a/libs/modifySessions.js +++ b/libs/modifySessions.js @@ -9,6 +9,7 @@ var isDbg = require('../libs/debug').isDbg; var moment = require('moment'); var settings = require('../models/settings.json'); +var findMeta = require('../controllers/scriptStorage').findMeta; // // This library allows for the modifications of user sessions @@ -212,7 +213,7 @@ exports.destroy = function (aReq, aUser, aCallback) { }, aCallback); }; -exports.listData = function (aStore, aOptions, aCallback) { +exports.findSessionData = function (aQuery, aStore, aOptions, aCallback) { var sessionColl = aStore.db.collection('sessions'); sessionColl.find({ @@ -227,35 +228,53 @@ exports.listData = function (aStore, aOptions, aCallback) { return; } - aUserSessions.toArray(function (aErr, aSessionsData) { - aOptions.sessionList = []; + aOptions.sessionList = []; + + aUserSessions.each(function (aErr, aSessionData) { + var data = null; + var rQuery = null; if (aErr) { aCallback(aErr); return; } - aSessionsData.forEach(function (aElement, aIndex) { - var data = JSON.parse(aElement.session); + if (!aSessionData) { + aCallback(); + return; + } - if (data) { + // + data = JSON.parse(aSessionData.session); - if (!data.passport) { - data.passport = {}; - } + if (data) { - if (!data.passport.oujsOptions) { - data.passport.oujsOptions = {}; - } + if (!data.passport) { + data.passport = {}; + } - data.passport.oujsOptions.username = data.username; - data.passport.oujsOptions.sid = aElement._id; + if (!data.passport.oujsOptions) { + data.passport.oujsOptions = {}; } - aOptions.sessionList.push(data); - }); - aCallback(); + data.passport.oujsOptions.username = data.username || findMeta(data.user, 'name'); + data.passport.oujsOptions.sid = aSessionData._id; + + // Very simple query filter search check to start. + // Currently only looking in `data.passport.oujsOptions.username`. + if (aQuery && aQuery.username) { + rQuery = new RegExp('^' + aQuery.username, 'i'); + + if (rQuery.test(data.passport.oujsOptions.username)) { + aOptions.sessionList.push(data); + } + } else { + aOptions.sessionList.push(data); + } + + } + }); }); } diff --git a/views/includes/session.html b/views/includes/session.html index 2dbeae67e..656dfa51d 100644 --- a/views/includes/session.html +++ b/views/includes/session.html @@ -1,4 +1,4 @@ -
+
@@ -56,3 +56,4 @@
+
diff --git a/views/pages/adminSessionPage.html b/views/pages/adminSessionPage.html index 67e36684c..94ec8436c 100644 --- a/views/pages/adminSessionPage.html +++ b/views/pages/adminSessionPage.html @@ -17,10 +17,17 @@

{{{paginationRendered}}}

{{/paginationRendered}} -
+
{{#sessionList}} {{> includes/session.html }} {{/sessionList}} + {{^sessionList}} +
+
+ This user hasn't added any sessions yet. +
+
+ {{/sessionList}}
{{#paginationRendered}}
@@ -30,11 +37,6 @@

{{> includes/searchBarPanel.html }} - {{#isFlagged}} - {{#isAdmin}} - {{> includes/flagAdminToolFlaggedFilters.html }} - {{/isAdmin}} - {{/isFlagged}}
@@ -42,7 +44,6 @@

{{#paginationRendered}} {{> includes/scripts/showTopPagination.html }} {{/paginationRendered}} - {{> includes/scripts/tableTrLinkScript.html }} {{> includes/scripts/formControlClear.html }}