diff options
Diffstat (limited to 'server/lib/views/staff.js')
| -rw-r--r-- | server/lib/views/staff.js | 52 |
1 files changed, 46 insertions, 6 deletions
diff --git a/server/lib/views/staff.js b/server/lib/views/staff.js index 5dde58d..9643626 100644 --- a/server/lib/views/staff.js +++ b/server/lib/views/staff.js @@ -14,7 +14,7 @@ var User = require('../schemas/User'), var staff = module.exports = { fields: { - user: "_id username displayName created_at updated_at created_ip last_ip", + user: "_id username displayName created_at updated_at last_seen created_ip last_ip", project: "_id name slug created_at updated_at", }, @@ -28,11 +28,15 @@ var staff = module.exports = { middleware: { ensureUsers: function(req, res, next){ + var limit = Math.max( Number(req.params.limit) || 50, 200 ) var offset = Number(req.params.offset) || 0 var sort switch (req.params.sort) { case 'date': - sort = {'date': -1} + sort = {'created_at': -1} + break + case 'lastseen': + sort = {'last_seen': -1} break default: sort = {'username': 1} @@ -42,13 +46,44 @@ var staff = module.exports = { .select(staff.fields.user) .sort(sort) .skip(offset) - .limit(50) + .limit(limit) .exec(function (err, users) { res.locals.users = users.map(staff.helpers.user) next() }) }, + ensureRecentUsers: function(req, res, next){ + var dreq = { params: { sort: 'last_seen', limit: 20, offset: 0 } } + staff.middleware.ensureUsers(dreq, res, next) + }, + + ensureProjects: function(req, res, next){ + var offset = Number(req.params.offset) || 0 + var sort + switch (req.params.sort) { + case 'date': + sort = {'date': -1} + break + default: + sort = {'slug': 1} + break + } + Project.find({}) + .select(staff.fields.project) + .sort(sort) + .skip(offset) + .limit(50) + .exec(function (err, projects) { + res.locals.projects = projects.map(staff.helpers.projects) + next() + }) + }, + + ensureProjectsUsers: function(req, res, next){ + + }, + ensureProfile: function(req, res, next){ var username = req.params.username if (username) { @@ -69,7 +104,6 @@ var staff = module.exports = { }, ensureUsersCount: function(req, res, next){ - if (! res.locals.profile) { return next() } User.count({}, function(err, count){ res.locals.userCount = count || 0 next() @@ -77,7 +111,6 @@ var staff = module.exports = { }, ensureProjectsCount: function(req, res, next){ - if (! res.locals.profile) { return next() } Project.count({}, function(err, count){ res.locals.projectCount = count || 0 next() @@ -136,6 +169,7 @@ var staff = module.exports = { helpers: { user: function(user){ user = user.toObject() + user.last_seen = moment( user.last_seen || user.updated_at || user.created_at ).fromNow() user.created_ip = util.num2ip( user.created_ip ) user.last_ip = util.num2ip( user.last_ip ) return user @@ -151,7 +185,8 @@ var staff = module.exports = { app.get('/staff', middleware.ensureAuthenticated, middleware.ensureIsStaff, - + + staff.middleware.ensureRecentUsers, staff.middleware.ensureUsersCount, staff.middleware.ensureProjectsCount, @@ -180,6 +215,11 @@ var staff = module.exports = { app.get('/staff/projects', middleware.ensureAuthenticated, middleware.ensureIsStaff, + + staff.middleware.ensureProjectsCount, + + staff.middleware.ensureProjects, + staff.middleware.ensureProjectsUsers, staff.projects.index ); |
