mirror of
https://github.com/sudoxnym/habitica.git
synced 2026-07-16 17:02:18 +00:00
prevent buying market gear if class doesn't match (#10818)
* prevent buying market gear if class doesn't match * add test
This commit is contained in:
parent
be95cd967a
commit
eca7382545
2 changed files with 20 additions and 0 deletions
|
|
@ -53,4 +53,15 @@ describe('POST /user/buy-gear/:key', () => {
|
|||
message: 'You need to purchase a lower level gear before this one.',
|
||||
});
|
||||
});
|
||||
|
||||
it('returns an error if tries to buy gear from a different class', async () => {
|
||||
let key = 'armor_rogue_1';
|
||||
|
||||
return expect(user.post(`/user/buy-gear/${key}`))
|
||||
.to.eventually.be.rejected.and.eql({
|
||||
code: 401,
|
||||
error: 'NotAuthorized',
|
||||
message: 'You can\'t buy this item.',
|
||||
});
|
||||
});
|
||||
});
|
||||
|
|
|
|||
|
|
@ -24,6 +24,15 @@ export class BuyMarketGearOperation extends AbstractGoldItemOperation {
|
|||
return false;
|
||||
}
|
||||
|
||||
canUserPurchase (user, item) {
|
||||
super.canUserPurchase(user, item);
|
||||
|
||||
// check for different class gear
|
||||
if (item.klass !== 'special' && item.klass !== user.stats.class) {
|
||||
throw new NotAuthorized(this.i18n('cannotBuyItem'));
|
||||
}
|
||||
}
|
||||
|
||||
extractAndValidateParams (user, req) {
|
||||
let key = this.key = get(req, 'params.key');
|
||||
if (!key) throw new BadRequest(errorMessage('missingKeyParam'));
|
||||
|
|
|
|||
Loading…
Reference in a new issue