Andrey Antukh 04d7b623aa Add account lockout after failed login attempts
Implement per-account brute-force protection using a Redis-backed
failed-login counter. After 5 failed attempts within 15 minutes, the
account is temporarily locked out and all login attempts (including
with the correct password) are rejected with a 429 response.

Closes #11397

AI-assisted-by: longcat-2.0
2026-08-28 11:30:00 +02:00
..
2026-06-22 09:33:10 +02:00
2026-07-31 18:57:18 +02:00
2026-06-22 09:33:10 +02:00
2026-07-31 18:57:18 +02:00
2026-07-31 18:57:18 +02:00
2026-06-22 09:33:10 +02:00
2026-07-31 19:02:38 +02:00
2026-06-22 09:33:10 +02:00
2026-07-31 18:57:18 +02:00
2026-07-31 19:02:44 +02:00
2026-06-22 09:33:10 +02:00
2026-06-22 09:33:10 +02:00
2026-07-31 19:03:01 +02:00
2026-07-31 19:02:28 +02:00
2026-07-24 10:36:32 +02:00
2026-07-31 18:57:18 +02:00
2026-07-31 19:02:42 +02:00
2026-07-31 19:02:58 +02:00
2026-07-31 18:57:18 +02:00
2026-07-31 18:57:18 +02:00
2026-07-31 18:57:18 +02:00
2026-07-31 19:02:46 +02:00
2026-06-22 09:33:10 +02:00
2026-07-31 19:02:49 +02:00
2026-07-31 19:02:51 +02:00
2026-07-31 18:57:18 +02:00
2023-10-04 13:49:57 +02:00
2026-06-22 09:33:10 +02:00
2026-07-31 19:02:53 +02:00
2026-07-31 18:57:18 +02:00
2026-07-31 19:02:36 +02:00
2026-07-31 18:57:18 +02:00
2026-06-22 09:33:10 +02:00
2026-07-31 19:02:40 +02:00
2026-07-31 19:02:30 +02:00
2026-07-31 18:57:18 +02:00
2026-07-31 19:02:56 +02:00
2026-06-22 09:33:10 +02:00
2026-06-22 09:33:10 +02:00
2026-07-31 19:02:33 +02:00
2026-07-31 19:02:48 +02:00
2026-07-31 18:57:18 +02:00
2026-07-31 18:57:18 +02:00