Merge branch 'ticketoutputpdf-security' into 'master'

[SECURITY] Fix missing permission check for ticket layout API (CVE-2026-125744)

See merge request pretix/pretix!60
This commit is contained in:
Raphael Michel committed 2026-11-10 13:54:25 +01:00
commit ae95df7ea2
2 files changed
+20

No files matched your search

@@ -123,6 +123,7 @@ class TicketLayoutViewSet(viewsets.ModelViewSet):
serializer_class = TicketLayoutSerializer
queryset = TicketLayout.objects.none()
lookup_field = 'id'
write_permission = 'event.settings.general:write'
def get_queryset(self):
return self.request.event.ticket_layouts.all()
@@ -356,3 +356,22 @@ def test_renderer_batch_invalid(env, token_client, position):
)
assert resp.status_code == 400
assert resp.data == {"parts": ["Please do not submit more than 1000 parts."]}
@pytest.mark.django_db
def test_api_permission(env, token_client):
t = env[0].organizer.teams.get()
t.limit_event_permissions = {"event.orders:read": True}
t.all_event_permissions = False
t.save()
resp = token_client.patch(
'/api/v1/organizers/{}/events/{}/ticketlayouts/{}/'.format(env[0].slug, env[0].slug, env[1].pk),
{
"name": "Bar",
"layout": [
{"type": "barcodearea", "left": "7.00", "bottom": "11.15", "size": "45.00", "content": "secret"}
]
},
format='json'
)
assert resp.status_code == 403