mirror of
https://github.com/HabitRPG/habitica.git
synced 2025-12-19 15:48:04 +01:00
v3: do not saved populated user
This commit is contained in:
@@ -400,10 +400,14 @@ api.castSpell = {
|
|||||||
if (!party) {
|
if (!party) {
|
||||||
partyMembers = [user]; // Act as solo party
|
partyMembers = [user]; // Act as solo party
|
||||||
} else {
|
} else {
|
||||||
partyMembers = await User.find({
|
partyMembers = await User
|
||||||
'party._id': party._id,
|
.find({
|
||||||
_id: { $ne: user._id }, // add separately
|
'party._id': party._id,
|
||||||
}).select(partyMembersFields).exec();
|
_id: { $ne: user._id }, // add separately
|
||||||
|
})
|
||||||
|
// .select(partyMembersFields) Selecting the entire user because otherwise when saving it'll save
|
||||||
|
// default values for non-selected fields and pre('save') will mess up thinking some values are missing
|
||||||
|
.exec();
|
||||||
|
|
||||||
partyMembers.unshift(user);
|
partyMembers.unshift(user);
|
||||||
}
|
}
|
||||||
@@ -416,7 +420,11 @@ api.castSpell = {
|
|||||||
} else {
|
} else {
|
||||||
if (!targetId) throw new BadRequest(res.t('targetIdUUID'));
|
if (!targetId) throw new BadRequest(res.t('targetIdUUID'));
|
||||||
if (!party) throw new NotFound(res.t('partyNotFound'));
|
if (!party) throw new NotFound(res.t('partyNotFound'));
|
||||||
partyMembers = await User.findOne({_id: targetId, 'party._id': party._id}).select(partyMembersFields).exec();
|
partyMembers = await User
|
||||||
|
.findOne({_id: targetId, 'party._id': party._id})
|
||||||
|
// .select(partyMembersFields) Selecting the entire user because otherwise when saving it'll save
|
||||||
|
// default values for non-selected fields and pre('save') will mess up thinking some values are missing
|
||||||
|
.exec();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!partyMembers) throw new NotFound(res.t('userWithIDNotFound', {userId: targetId}));
|
if (!partyMembers) throw new NotFound(res.t('userWithIDNotFound', {userId: targetId}));
|
||||||
@@ -433,8 +441,15 @@ api.castSpell = {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
let partyMembersRes = Array.isArray(partyMembers) ? partyMembers : [partyMembers];
|
||||||
|
// Only return some fields.
|
||||||
|
// See comment above on why we can't just select the necessary fields when querying
|
||||||
|
partyMembersRes = partyMembersRes.map(partyMember => {
|
||||||
|
return common.pickDeep(partyMember, common.splitWhitespace(partyMembersFields));
|
||||||
|
});
|
||||||
|
|
||||||
res.respond(200, {
|
res.respond(200, {
|
||||||
partyMembers: Array.isArray(partyMembers) ? partyMembers : [partyMembers],
|
partyMembers: partyMembersRes,
|
||||||
user,
|
user,
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user