aicctv
Find a file
유창욱 d0ba621b42 fix(cloud): verify login CSRF + zone ownership 400 not 500 (P4-8, P4-6)
P4-8: AuthController::login now verifies the CSRF token the login form
already emits (Csrf::check over session vs posted field), returning 403
before the user lookup. Closes a login-CSRF / session-fixation hole where
a forged cross-site POST could silently log a victim into an attacker's
account. Tests seed the session+body token; adds
testLoginRejectsMissingOrWrongCsrf.

P4-6: ZoneConfigController::save wraps the repository write in
try/catch(\RuntimeException) so an ownership/device mismatch is a 400
(invalid_zone) client error, not an uncaught 500. Adds
testSaveOwnershipMismatchIs400NotError with a throwing repo double.

phpunit: 88 passing (4 skipped: PDO-backed).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019Xmn8KZWqiQUguEMRtn6rW
2026-07-17 10:00:04 +09:00
cloud fix(cloud): verify login CSRF + zone ownership 400 not 500 (P4-8, P4-6) 2026-07-17 10:00:04 +09:00
deploy fix(install): arch guard + CSI device access (P5-2, P5-5) 2026-07-17 09:38:18 +09:00
docs fix(cloud): verify login CSRF + zone ownership 400 not 500 (P4-8, P4-6) 2026-07-17 10:00:04 +09:00
edge feat(delivery-audit): privacy — face-blur sizing + model integrity (P3-1, P3-3) 2026-07-17 09:35:02 +09:00
tests feat(delivery-audit): privacy — face-blur sizing + model integrity (P3-1, P3-3) 2026-07-17 09:35:02 +09:00
.gitattributes feat(delivery): install-path fixes + cafe24 package + delivery-audit hardening 2026-07-17 09:07:33 +09:00
.gitignore feat(delivery): install-path fixes + cafe24 package + delivery-audit hardening 2026-07-17 09:07:33 +09:00
pyproject.toml feat(edge): runnable daemon loop (step + periodic sync/heartbeat/flush) 2026-07-12 11:00:08 +09:00