Fix: Karte lädt wieder + safe_media_path + Foto-Löschung (SW by-v932)

- map.js: appState→_appState im Template, addEventListener mit ?. (kein Crash ohne Buttons)
- media_utils.py: safe_media_path lstrip-Bug — 'dogs/' wurde zu 'ogs/' gekürzt;
  jetzt korrekte removeprefix-Logik → Altes Hundeprofil-Foto wird jetzt wirklich gelöscht
This commit is contained in:
rene 2026-05-14 11:58:00 +02:00
parent e7b6cb3c33
commit 781e3383bd
5 changed files with 12 additions and 7 deletions

View file

@ -56,7 +56,12 @@ def safe_media_path(media_dir: str, url: str) -> str | None:
Konstruiert einen sicheren Dateipfad aus einer gespeicherten URL.
Gibt None zurück wenn der Pfad außerhalb von media_dir liegt (Path-Traversal-Schutz).
"""
relative = url.lstrip("/media/").lstrip("/")
if url.startswith("/media/"):
relative = url[len("/media/"):]
elif url.startswith("/"):
relative = url[1:]
else:
relative = url
candidate = os.path.realpath(os.path.join(media_dir, relative))
real_base = os.path.realpath(media_dir)
if not candidate.startswith(real_base + os.sep) and candidate != real_base: