diff options
| author | Jules Laplace <jules@okfoc.us> | 2014-09-03 18:46:04 -0400 |
|---|---|---|
| committer | Jules Laplace <jules@okfoc.us> | 2014-09-03 18:46:04 -0400 |
| commit | 95f62d72945acbac295f2342fd51cea9337d7cb7 (patch) | |
| tree | 7d2b2a4bacf774e9f673755c088ac76086a106cd /server/lib | |
| parent | 24029c27aca6b39af70d6db88e7505ecc90646d5 (diff) | |
lastlog
Diffstat (limited to 'server/lib')
| -rw-r--r-- | server/lib/auth/index.js | 4 | ||||
| -rw-r--r-- | server/lib/schemas/User.js | 1 | ||||
| -rw-r--r-- | server/lib/views/staff.js | 52 |
3 files changed, 50 insertions, 7 deletions
diff --git a/server/lib/auth/index.js b/server/lib/auth/index.js index 99af9b5..c2275ff 100644 --- a/server/lib/auth/index.js +++ b/server/lib/auth/index.js @@ -111,6 +111,7 @@ var auth = { return info ? res.json(info) : res.redirect("/login"); } + user.last_seen = new Date () user.last_ip = util.ip2num( req.ip ) user.save(function(err, data){ if (err) console.err('error setting ip for user') }) @@ -173,7 +174,8 @@ var auth = { email: email, created_ip: util.ip2num( req.ip ), last_ip: util.ip2num( req.ip ), - created_at: new Date () + created_at: new Date (), + last_seen: new Date (), } new User(data).save(function(err, user){ if (err || ! data) { return res.json({ error: err }) } diff --git a/server/lib/schemas/User.js b/server/lib/schemas/User.js index b64f8fc..180a140 100644 --- a/server/lib/schemas/User.js +++ b/server/lib/schemas/User.js @@ -64,6 +64,7 @@ var UserSchema = new mongoose.Schema({ isStaff: { type: Boolean, default: false }, created_at: { type: Date }, updated_at: { type: Date }, + last_seen: { type: Date }, created_ip: { type: Number }, last_ip: { type: Number }, }); 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 ); |
