admin: add list of contributors. Add contributor.contributions, textarea for links of contributions for tracking. move all admin stuff to dedicated controller & routes

This commit is contained in:
Tyler Renelle
2013-11-15 19:25:16 -08:00
parent 460afb7763
commit b762ecba81
6 changed files with 98 additions and 30 deletions
+56
View File
@@ -0,0 +1,56 @@
var _ = require('lodash');
var nconf = require('nconf');
var async = require('async');
var algos = require('habitrpg-shared/script/algos');
var helpers = require('habitrpg-shared/script/helpers');
var items = require('habitrpg-shared/script/items');
var User = require('./../models/user').model;
var Group = require('./../models/group').model;
var api = module.exports;
api.ensureAdmin = function(req, res, next) {
var user = res.locals.user;
if (!(user.contributor && user.contributor.admin)) return res.json(401, {err:"You don't have admin access"});
next();
}
api.getMember = function(req, res) {
User.findById(req.params.uid)
.select('contributor balance profile.name')
.exec(function(err, user){
if (err) return res.json(500,{err:err});
if (!user) return res.json(400,{err:'User not found'});
res.json(user);
});
}
api.listMembers = function(req, res) {
User.find({'contributor.level':{$exists:true}})
.select('contributor balance profile.name')
.sort('contributor.text')
.exec(function(err, users){
if (err) return res.json(500,{err:err});
res.json(users);
});
}
api.updateMember = function(req, res) {
async.waterfall([
function(cb){
User.findById(req.params.uid, cb);
},
function(member, cb){
if (!member) return res.json(404, {err: "User not found"});
if (req.body.contributor.level > (member.contributor && member.contributor.level || 0)) {
member.flags.contributor = true;
member.balance += (req.body.contributor.level - (member.contributor.level || 0))*.5 // +2 gems per tier
}
_.merge(member, _.pick(req.body, 'contributor'));
if (member.contributor.level >= 6) member.items.pets['Dragon-Hydra'] = 5;
member.save(cb);
}
], function(err, saved){
if (err) return res.json(500,{err:err});
res.json(204);
})
}