56 lines
1.8 KiB
JavaScript
56 lines
1.8 KiB
JavaScript
var _ = require('lodash');
|
|
var nconf = require('nconf');
|
|
var async = require('async');
|
|
var shared = require('habitrpg-shared');
|
|
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 purchased')
|
|
.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"});
|
|
member.balance = req.body.balance || 0;
|
|
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
|
|
}
|
|
member.contributor = req.body.contributor;
|
|
member.purchased.ads = req.body.purchased.ads;
|
|
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);
|
|
})
|
|
} |