3 Commits

Author SHA1 Message Date
Whykioh 42a388cbe1 Harden for public launch: rate limiting, CORS, error display, Gitea webhook sig
- User::login() locks an account for 15 min after 5 failed attempts
- CORS now restricted to an explicit origin whitelist instead of *
- display_errors disabled in production (errors still logged server-side)
- webhook.php now checks Gitea's actual signature header (X-Gitea-Signature,
  raw hex) instead of GitHub's format, which never matched on this Gitea instance

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-07-12 17:53:28 +02:00
Whykioh 4c61b7f276 Fix crash bugs and secure webhook/TMDB key
- Add missing MovieController::remove/markWatched (routes called undefined methods)
- Fix linkPartner(): commit() was unreachable after an early return, so partner
  linking was never actually persisted in the DB
- Add missing removeMovie/markWatched functions in app.js
- webhook.php now verifies a GitHub HMAC signature before running git reset --hard
- Move TMDB API key server-side via a new TmdbController proxy (tmdb-search/tmdb-details)
  instead of exposing it in client-side JS

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-07-12 16:54:40 +02:00
Noah ed04d467f7 Webhook autopush 2026-07-11 06:59:46 +00:00