solve conflict

This commit is contained in:
Matteo Pagliazzi
2013-11-08 17:05:03 +01:00
22 changed files with 266 additions and 83 deletions
+29 -4
View File
@@ -17,7 +17,7 @@ var api = module.exports;
*/
var itemFields = 'items.armor items.head items.shield items.weapon items.currentPet items.pets'; // TODO just send down count(items.pets) for better performance
var partyFields = 'profile preferences stats achievements party backer flags.rest auth.timestamps ' + itemFields;
var partyFields = 'profile preferences stats achievements party backer contributor balance flags.rest auth.timestamps ' + itemFields;
var nameFields = 'profile.name';
var challengeFields = '_id name';
var guildPopulate = {path: 'members', select: nameFields, options: {limit: 15} };
@@ -46,6 +46,28 @@ api.getMember = function(req, res) {
})
}
api.updateMember = function(req, res) {
var user = res.locals.user;
if (!(user.contributor && user.contributor.admin)) return res.json(401, {err:"You don't have access to save this user"});
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;
_.merge(member, _.pick(req.body, ['contributor', 'balance']));
if (!member.items.pets) member.items.pets = [];
var i = member.items.pets.indexOf('Dragon-Hydra');
if (!~i && member.contributor.level >= 6) member.items.pets.push('Dragon-Hydra');
member.save(cb);
}
], function(err, saved){
if (err) return res.json(500,{err:err});
res.json(204);
})
}
/**
* Fetch groups list. This no longer returns party or tavern, as those can be requested indivdually
* as /groups/party or /groups/tavern
@@ -199,8 +221,8 @@ api.postChat = function(req, res, next) {
var message = {
id: helpers.uuid(),
uuid: user._id,
contributor: user.backer && user.backer.contributor,
npc: user.backer && user.backer.npc,
contributor: user.contributor && user.contributor.toObject(),
backer: user.backer && user.backer.toObject(),
text: req.query.message, // FIXME this should be body, but ngResource is funky
user: user.profile.name,
timestamp: +(new Date)
@@ -219,9 +241,12 @@ api.postChat = function(req, res, next) {
group.save(function(err, saved){
if (err) return res.json(500, {err:err});
<<<<<<< HEAD
if(!chatUpdated) return res.json({message: saved.chat[0]});
=======
>>>>>>> 06d1f77ce584840f8a0c3b9222709d8ca467af64
res.json({chat: saved.chat});
});
}
@@ -233,7 +258,7 @@ api.deleteChatMessage = function(req, res){
if(!message) return res.json(404, {err: "Message not found!"});
if(user._id !== message.uuid && !(user.backer && user.backer.admin))
if(user._id !== message.uuid && !(user.backer && user.contributor.admin))
return res.json(401, {err: "Not authorized to delete this message!"})
var lastClientMsg = req.query.previousMsg;
+10 -3
View File
@@ -54,12 +54,18 @@ var UserSchema = new Schema({
backer: {
tier: Number,
admin: Boolean,
//admin: Boolean, // FIXME migrate to contributor.admin
npc: String,
contributor: String,
//contributor: String, // FIXME migrate to contributor.text
tokensApplied: Boolean
},
contributor: {
level: Number, // 1-7, see https://trello.com/c/wkFzONhE/277-contributor-gear
admin: Boolean,
text: String, // Artisan, Friend, Blacksmith, etc
},
balance: Number,
filters: {type: Schema.Types.Mixed, 'default': {}},
@@ -78,7 +84,8 @@ var UserSchema = new Schema({
rewrite: {type: Boolean, 'default': true},
partyEnabled: Boolean, // FIXME do we need this?
petsEnabled: {type: Boolean, 'default': false},
rest: {type: Boolean, 'default': false} // fixme - change to preferences.resting once we're off derby
rest: {type: Boolean, 'default': false}, // fixme - change to preferences.resting once we're off derby
contributor: Boolean
},
history: {
exp: Array, // [{date: Date, value: Number}], // big peformance issues if these are defined
+1
View File
@@ -80,6 +80,7 @@ router["delete"]('/groups/:gid/chat/:messageId', auth.auth, groups.attachGroup,
/* Members */
router.get('/members/:uid', groups.getMember);
router.post('/members/:uid', auth.auth, groups.updateMember); // only for admins
// Market
router.post('/market/buy', auth.auth, user.marketBuy);