• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

kobotoolbox / kpi / 28034696683 / 6
82%
master: 76%

Build:
Build:
LAST BUILD BRANCH: main
DEFAULT BRANCH: master
Ran 23 Jun 2026 02:56PM UTC
Files 885
Run time 52s
Badge
Embed โ–พ
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

23 Jun 2026 02:49PM UTC coverage: 54.802% (+9.9%) from 44.916%
28034696683.6

push

github

web-flow
feat(auth): add failed login attempts DEV-2276 (#7166)

### ๐Ÿ“ฃ Summary
Added application-level logging for failed login attempts and exposed
them in the access logs UI and API

### ๐Ÿ“– Description
Failed authentications are tracker similar to how successful logins are
recorded, using audit logs. It also tracks failed logins for
non-existent accounts to help identify automated attacks (e.g. repeated
attempts across random usernames from a single IP).

* For this it hooks into Django's user_login_failed signal to create
AccessLog entries with a new AUTH_FAILED action. Safely handles
instances without an attached HTTP request or user object
* Updated AccessLogSerializer to expose the new action attribute. For
non-existent accounts where the user relationship is null, it falls back
to exposing the attempted_username stored in the metadata
* Updated OpenAPI outputs and TypeScript models to include action. Added
a "Status" column to the AccessLogsSection component table to clearly
distinguish between Success and Failed logins.

### ๐Ÿ‘€ Preview steps
1. Log into your account and navigate to Account Settings -> Security
2. Open an incognito window and attempt to log in with your valid
username but an incorrect password
3. Attempt to log in again using a non-existent username
4. Refresh the Security page on your active session. In the Recent
account activity table, you should see your failed attempt marked as
"Failed" under the new Status column.
5. Query the /api/v2/access-logs/ endpoint and verify that the failed
login for the non-existent account was also successfully logged and
tracked.

---------

Signed-off-by: Guillermo <lgar89@gmail.com>
Co-authored-by: Olivier Lรฉger <olivierleger@gmail.com>

5188 of 12189 branches covered (42.56%)

19973 of 36446 relevant lines covered (54.8%)

0.55 hits per line

Source Files on job 28034696683.6
  • Tree
  • List 885
  • Changed 170
  • Source Changed 0
  • Coverage Changed 170
Coverage โˆ† File Lines Relevant Covered Missed Hits/Line Branch Hits Branch Misses
  • Back to Build 28034696683
  • 2ec0c76f on github
  • Prev Job for on release/2.026.25 (#27698100389.1)
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE TRIAL · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc