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:
@@ -3226,13 +3226,17 @@ class FalukantService extends BaseService {
|
|||||||
err.meta = { retryAt: retryAt.toISOString() };
|
err.meta = { retryAt: retryAt.toISOString() };
|
||||||
throw err;
|
throw err;
|
||||||
}
|
}
|
||||||
|
// 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({
|
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
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user