Verbessere die Sicherheitsüberprüfung der Benutzermerkmale in der Geschenksuche: Füge eine sichere Trait-Filterung hinzu, um Fehler bei undefinierten Eigenschaften zu vermeiden.

This commit is contained in:
Torsten Schulz (local)
2026-02-14 16:44:51 +01:00
parent af4e5de1ad
commit ea7f8d1acc

View File

@@ -3226,13 +3226,17 @@ class FalukantService extends BaseService {
err.meta = { retryAt: retryAt.toISOString() }; err.meta = { retryAt: retryAt.toISOString() };
throw err; throw err;
} }
const gift = await PromotionalGift.findOne({ // prepare a safe trait filter: user.character.traits may be undefined
const userTraitIds = Array.isArray(user.character?.traits) ? user.character.traits.map(t => t.id) : [];
const traitWhere = userTraitIds.length ? { traitId: { [Op.in]: userTraitIds } } : { traitId: { [Op.in]: [-1] } };
const gift = await PromotionalGift.findOne({
where: { id: giftId }, where: { id: giftId },
include: [ include: [
{ {
model: PromotionalGiftCharacterTrait, model: PromotionalGiftCharacterTrait,
as: 'characterTraits', as: 'characterTraits',
where: { traitId: { [Op.in]: user.character.traits.map(t => t.id) } }, where: traitWhere,
required: false required: false
}, },
{ {