mirror of
https://github.com/pretix/pretix.git
synced 2026-08-25 13:12:00 +00:00
Widget: serve vite by default, origin-whitelist for vue2
This commit is contained in:
File diff suppressed because one or more lines are too long
@@ -105,12 +105,12 @@ class GlobalSettingsForm(SettingsForm):
|
|||||||
domain=settings.SITE_URL
|
domain=settings.SITE_URL
|
||||||
)
|
)
|
||||||
)),
|
)),
|
||||||
('widget_vite_origins', forms.CharField(
|
('widget_vue2_origins', forms.CharField(
|
||||||
widget=forms.Textarea(attrs={'rows': '3'}),
|
widget=forms.Textarea(attrs={'rows': '3'}),
|
||||||
required=False,
|
required=False,
|
||||||
# Not translated on purpose, this is a temporary feature and contains too many special case words
|
# Not translated on purpose, this is a temporary feature and contains too many special case words
|
||||||
label="Vite widget origins",
|
label="Vue2 widget origins",
|
||||||
help_text="One origin per line (e.g. https://example.com). Requests from these origins will be served the new vite-based widget.",
|
help_text="One origin per line (e.g. https://example.com). Requests from these origins will be served the old vue2-based widget.",
|
||||||
))
|
))
|
||||||
])
|
])
|
||||||
responses = register_global_settings.send(self)
|
responses = register_global_settings.send(self)
|
||||||
|
|||||||
@@ -122,19 +122,20 @@ def widget_css_etag(request, version, **kwargs):
|
|||||||
return f'{_get_source_cache_key(version)}-{request.organizer.cache.get_or_set("css_version", default=lambda: int(time.time()))}'
|
return f'{_get_source_cache_key(version)}-{request.organizer.cache.get_or_set("css_version", default=lambda: int(time.time()))}'
|
||||||
|
|
||||||
|
|
||||||
|
# use vite by default, serve old vue2-based widget only for widget_vue2_origins
|
||||||
def _use_vite(request):
|
def _use_vite(request):
|
||||||
if getattr(settings, 'PRETIX_WIDGET_VITE', False) or "beta" in request.GET:
|
if getattr(settings, 'PRETIX_WIDGET_VUE', False) or "legacy" in request.GET:
|
||||||
return True
|
return False
|
||||||
origin = request.META.get('HTTP_ORIGIN', '')
|
origin = request.META.get('HTTP_ORIGIN', '')
|
||||||
gs = GlobalSettingsObject()
|
gs = GlobalSettingsObject()
|
||||||
vite_origins = gs.settings.get('widget_vite_origins', as_type=str, default='')
|
vue_origins = gs.settings.get('widget_vue2_origins', as_type=str, default='')
|
||||||
if vite_origins and not origin:
|
if vue_origins and not origin:
|
||||||
referer = request.META.get('HTTP_REFERER', '')
|
referer = request.META.get('HTTP_REFERER', '')
|
||||||
origin = '/'.join(referer.split('/', 3)[:3])
|
origin = '/'.join(referer.split('/', 3)[:3])
|
||||||
if origin and vite_origins:
|
if origin and vue_origins:
|
||||||
origins_list = [o.strip() for o in vite_origins.strip().splitlines() if o.strip()]
|
origins_list = [o.strip() for o in vue_origins.strip().splitlines() if o.strip()]
|
||||||
return origin in origins_list
|
return not origin in origins_list
|
||||||
return False
|
return True
|
||||||
|
|
||||||
|
|
||||||
def widget_js_etag(request, version, lang, **kwargs):
|
def widget_js_etag(request, version, lang, **kwargs):
|
||||||
|
|||||||
Reference in New Issue
Block a user