Giftcard/Reusable Media API: fix expand permission check (Z#23230608) (#6091)

* add failing tests

* add permission checks in to_representation

* only overwrite final representation not the serializer

* styling

* include review
This commit is contained in:
Lukas Bockstaller
2026-04-15 15:59:08 +02:00
committed by GitHub
parent 0f2ebb8687
commit e3ffd66691
4 changed files with 137 additions and 3 deletions

View File

@@ -286,6 +286,19 @@ class GiftCardSerializer(I18nAwareModelSerializer):
)
return data
def to_representation(self, instance):
r = super().to_representation(instance)
request = self.context.get('request')
# late permission evaluations for checks that depend on the actual linked events
if 'owner_ticket' in self.context['request'].query_params.getlist('expand'):
owner_ticket = instance.owner_ticket
if owner_ticket:
event = owner_ticket.order.event
perm_holder = request.auth if isinstance(request.auth, (Device, TeamAPIToken)) else request.user
if not perm_holder.has_event_permission(event.organizer, event, 'event.orders:read', request):
r['owner_ticket'] = {'id': instance.owner_ticket.id}
return r
class Meta:
model = GiftCard
fields = ('id', 'secret', 'issuance', 'value', 'currency', 'testmode', 'expires', 'conditions', 'owner_ticket',