prevent selling negative items (#10061)

This commit is contained in:
negue
2018-02-27 21:51:10 +01:00
committed by Sabe Jones
parent cedfc005f8
commit 0b4eafeb28
4 changed files with 23 additions and 1 deletions

View File

@@ -75,6 +75,16 @@ describe('shared.ops.sell', () => {
}
});
it('returns an error when the requested amount is negative', (done) => {
try {
sell(user, {params: { type, key }, query: {amount: -42} });
} catch (err) {
expect(err).to.be.an.instanceof(BadRequest);
expect(err.message).to.equal(i18n.t('positiveAmountRequired', {type}));
done();
}
});
it('reduces item count from user', () => {
sell(user, {params: { type, key } });

View File

@@ -26,7 +26,7 @@
b.how-many-to-sell {{ $t('howManyToSell') }}
div
b-input.itemsToSell(type="number", v-model="selectedAmountToSell", :max="itemCount", min="1")
b-input.itemsToSell(type="number", v-model="selectedAmountToSell", :max="itemCount", min="1", @keyup.native="preventNegative($event)")
span.svg-icon.inline.icon-32(aria-hidden="true", v-html="icons.gold")
span.value {{ item.value }}
@@ -141,6 +141,13 @@
this.selectedAmountToSell = 1;
},
preventNegative ($event) {
let value = $event.target.value;
if (isNaN($event.target.valueAsNumber) || Number(value) < 0) {
this.selectedAmountToSell = 0;
}
},
sellItems () {
this.$store.dispatch('shops:sellItems', {
type: this.itemType,

View File

@@ -92,6 +92,7 @@
"invalidTypeEquip": "\"type\" must be one of 'equipped', 'pet', 'mount', 'costume'.",
"mustPurchaseToSet": "Must purchase <%= val %> to set it on <%= key %>.",
"typeRequired": "Type is required",
"positiveAmountRequired": "Positive amount is required",
"keyRequired": "Key is required",
"notAccteptedType": "Type must be in [eggs, hatchingPotions, premiumHatchingPotions, food, quests, gear]",
"contentKeyNotFound": "Key not found for Content <%= type %>",

View File

@@ -17,6 +17,10 @@ module.exports = function sell (user, req = {}) {
let type = get(req.params, 'type');
let amount = get(req.query, 'amount', 1);
if (amount < 0) {
throw new BadRequest(i18n.t('positiveAmountRequired', req.language));
}
if (!type) {
throw new BadRequest(i18n.t('typeRequired', req.language));
}