Security review: admin login brute-force protection Changed branch/field: - apps/backend/src/routes/admin/auth.ts, POST /auth/login middleware chain - Added admin:login:ip (20 requests / 60 seconds per client IP) - Kept admin:login:account (10 requests / 60 seconds per client IP + username) Artifacts: - MODIFIED_FILE: /Users/yml/codes/order_site/security-artifacts/MODIFIED_FILE.ts - DIFF_FILE: /Users/yml/codes/order_site/security-artifacts/DIFF_FILE.patch - VERIFICATION.txt: /Users/yml/codes/order_site/security-artifacts/VERIFICATION.txt - ROLLBACK.sh: /Users/yml/codes/order_site/security-artifacts/ROLLBACK.sh BASELINE Command: npm test -- --test-name-pattern='createRateLimitMiddleware' Input: repository HEAD sources before the route/test edits Literal result: tests 371; pass 369; fail 0; skipped 2; exit status 0 MODIFIED Command: node --import tsx --test src/middleware/rate-limit.test.ts Input: modified rate-limit middleware test source Literal result: tests 4; pass 4; fail 0; skipped 0; exit status 0 Command: npm run check Input: modified backend source tree Literal result: format check passed; SQL guard passed; ESLint passed; TypeScript passed; tests 373; pass 371; fail 0; skipped 2; build completed; exit status 0 ROLLBACK Command: security-artifacts/ROLLBACK.sh security-artifacts/rollback-copy Input: independent copy containing MODIFIED_FILE.ts and BASELINE_rate-limit.test.ts Literal result: restored admin auth route and rate-limit test in security-artifacts/rollback-copy; baseline admin auth SHA-256 d1afed851de0dce8704f4233e1b9339a33a88d1ae9c89d6639aa104be7ff8aff; exit status 0 Restored behavior/status: rollback-copy/apps/backend/src/routes/admin/auth.ts matches the baseline hash; the working source remains modified. Original source hash before modification: d1afed851de0dce8704f4233e1b9339a33a88d1ae9c89d6639aa104be7ff8aff Modified copy hash: c70ca222c13245a6e1714f1c90f3592f5c4fd3713a1ef3af5fb4073eb9b9db95