- application.properties: multipart max-file/request-size auf 10MB
(nginx client_max_body_size muss serverseitig passend gesetzt sein)
- ProfileController: hochgeladene Profilbilder werden serverseitig auf
max. 400px herunterskaliert und als JPEG normalisiert gespeichert
(statt der Originaldatei roh); nicht lesbare Bilder werden ignoriert
- SecurityConfig: CSRF aktiviert; Spiele-JSON-APIs (/api/games,
/api/techtacular, /api/mindmatch) ausgenommen; GET-Logout erlaubt,
da die Logout-Links in den Templates GET sind
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
ProfileController.changePassword gab "profile" zurück, ohne das von
profile.html benötigte Model-Attribut `user` zu setzen -> Template-Rendering
schlug fehl (500/Whitelabel). Zudem lag das Formular auf der settings-Seite.
- changePassword nutzt jetzt PRG: Redirect auf /profile/settings mit
Flash-Attributen (message/error) statt direktem View-Return.
- settings.html zeigt die Flash-Meldungen (Erfolg/Fehler) an.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>