summaryrefslogtreecommitdiff
path: root/server/lib
diff options
context:
space:
mode:
authorJules Laplace <jules@okfoc.us>2014-09-03 18:46:04 -0400
committerJules Laplace <jules@okfoc.us>2014-09-03 18:46:04 -0400
commit95f62d72945acbac295f2342fd51cea9337d7cb7 (patch)
tree7d2b2a4bacf774e9f673755c088ac76086a106cd /server/lib
parent24029c27aca6b39af70d6db88e7505ecc90646d5 (diff)
lastlog
Diffstat (limited to 'server/lib')
-rw-r--r--server/lib/auth/index.js4
-rw-r--r--server/lib/schemas/User.js1
-rw-r--r--server/lib/views/staff.js52
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
);