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() };
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 },
include: [
{
model: PromotionalGiftCharacterTrait,
as: 'characterTraits',
where: { traitId: { [Op.in]: user.character.traits.map(t => t.id) } },
where: traitWhere,
required: false
},
{