Commit graph

696 commits

Author SHA1 Message Date
Aleksi Häkli
bdd0c9546a Fix prospector errors 2026-02-11 22:14:31 +02:00
Aleksi Häkli
4b77eb69ee Run black autoformatting 2026-02-11 22:14:31 +02:00
Aleksi Häkli
d59a289407 Suppress mypy type errors
Update Mypy Python version to 3.14
2026-02-11 22:14:31 +02:00
Aleksi Häkli
4ea615811b Implement custom lazy object to avoid JSON errors with Celery
Fixes jazzband/django-axes#1391
2026-02-11 22:14:31 +02:00
rodrigo.nogueira
6703b66f17 Fix circular import with custom user models
Fixes #1280

- Use SimpleLazyObject to defer get_user_model() evaluation
- Prevents circular import when custom user models import from axes
- Add test coverage for lazy evaluation in test_conf.py
2026-02-06 20:19:42 +02:00
rodrigo.nogueira
95a8043341 Fix AttributeError when optional settings are undefined
Fixes #1328
- Add None as default value in axes_conf_check
- Add test coverage for missing settings scenario
2026-02-06 20:19:42 +02:00
Mounir Messelmeni
955f39da73 Update docs 2025-12-19 21:19:03 +02:00
Mounir Messelmeni
04fd39fa57 Enhance get_lockout_response to support original_response parameter 2025-12-19 21:19:03 +02:00
shayan taki
3f6e773f7d Add security check (W006) for missing ip_address in lockout params 2025-12-19 21:13:43 +02:00
kuldeepkhatke
2a8c42c3eb Added cleanup_expired_attempts action 2025-07-08 21:09:10 +03:00
kuldeepkhatke
29fd4bd4fe Added IsLockedOutFilter to AccessAttemptAdmin 2025-07-06 23:06:41 +03:00
kuldeepkhatke
af65488dc6 Added status column to list display 2025-07-06 23:06:41 +03:00
kuldeepkhatke
e4e0299252 AccessAttemptAdmin.list_display datatype change tuple->list for customization 2025-07-06 23:06:41 +03:00
kuldeepkhatke
392dfa0e44 Reverted , remove change from AxesDatabaseHandler.user_login_failed 2025-07-05 16:19:19 +03:00
kuldeepkhatke
ba7b72f9d9 Updated expires_at for null, blank False, lte query update, admin expiration logic simplify 2025-07-05 16:19:19 +03:00
kuldeepkhatke
01ccf5b213 Updated get_individual_attempt_expiry() func placement & renamed to get_attempt_expiration() 2025-07-05 16:19:19 +03:00
kuldeepkhatke
d8e6c939fe Modified expiration create queryset logic 2025-07-05 16:19:19 +03:00
kuldeepkhatke
f5951e966c Modified access_attempt as pk 2025-07-05 16:19:19 +03:00
kuldeepkhatke
f583e93718 Modified verbiage changes & removed comment 2025-07-05 16:19:19 +03:00
kuldeepkhatke
df8fb35e18 Shifted epired_at filed to new model 2025-07-05 16:19:19 +03:00
kuldeepkhatke
a1e9eff875 Renamed AXES_INDIVIDUAL_ATTEMPT_EXPIRY flag to AXES_USE_ATTEMPT_EXPIRATION 2025-07-05 16:19:19 +03:00
kuldeepkhatke
0fd9ccd1d4 Added individual attempt expiry feature 2025-07-05 16:19:19 +03:00
AmirAli-BahramJerdi
eea9939a45 Add Persian translation for django-axes 2025-05-16 23:49:58 +03:30
nefrob
bd3b56237d refactor: move db accessing attempt fns to handler methods 2025-05-10 13:46:09 +03:00
nefrob
8356498a44 chore: clean attempt logic as db handler method 2025-04-29 10:10:25 +03:00
Aleksi Häkli
5e7fbca52c fix: resolve credentials for clean_expired_user_attempts 2025-04-23 17:02:37 +03:00
parul-aro
0115648a1d feat(cleanup): allow credentials in cleanup method 2025-04-23 11:54:17 +03:00
Andrew Neher
129e93cc0e savepoint 2025-02-19 18:09:40 +02:00
Bruno Alla
b54019fa0f Change AXES_COOLOFF_TIME callable to take exactly 1 argument 2024-10-02 20:15:31 +03:00
Bruno Alla
8ed0d82384 refactor: remove attempt_time parameter
As we pass down the whole request, we no longer need to extract the axes_attempt_time anymore.

This is a potential breaking change, but the impacted functions are not part of the documented API.
2024-10-02 20:15:31 +03:00
Bruno Alla
a304380853 feat: pass down the request in a few more places 2024-10-02 20:15:31 +03:00
Bruno Alla
510c8d18f5 feat: pass the request to get dynamic cool off period 2024-10-02 20:15:31 +03:00
Bruno Alla
3f4526e8f5 chore: revert unrelated stylistic change 2024-10-02 20:15:31 +03:00
Bruno Alla
2fb4c81243 feat: pass username to AXES_COOLOFF_TIME callback
If the AXES_COOLOFF_TIME is a callable or path to a callable taking
an argument, pass the username to it.

This should enable users to customize the cool off to be user dependant,
and possibly implement a growing cool-off time:

- First lockout cools off after 5 mins
- Second one after 10 mins
- etc...
2024-10-02 20:15:31 +03:00
Maksim Zayakin
6202062f91
fix: make 007 migration backwards compatible 2024-06-29 21:21:15 +05:00
Davide
014483c65d
Add session hash to access log 2024-04-30 16:22:50 +02:00
Aleksi Häkli
dbd16dd5b0 Update syntax to be compliant with new black version 2024-03-04 20:07:47 +02:00
Aleksi Häkli
92f038e4af
Merge pull request #1169 from Viicos/remove-pkg-resources
Remove compatibility with `pkg_resources`
2024-03-04 19:52:32 +02:00
Viicos
ab54d68ee1 Remove compatibility with pkg_resources 2024-02-15 21:39:35 +01:00
Christian Clauss
493789640b chore(deps): bump black from 23.12.1 to 24.1.0 AGAIN 2024-01-26 21:37:26 +01:00
Aleksi Häkli
38e316ca87
Fix code formatting 2023-12-27 12:40:23 +02:00
Taikono-Himazin
6f2584b440 Add async support to middleware 2023-12-13 13:35:22 +09:00
Aleksi Häkli
2a0fd0cfad
Merge pull request #1138 from p-l-/command-reset-ip-username
Add new management command `axes_reset_ip_username`
2023-12-08 19:39:40 +02:00
Pierre Lalet
6e64c62fbf Add new management command axes_reset_ip_username 2023-11-28 20:37:39 +01:00
Laurent Lasudry
f64c1526d7 Add French translations 2023-11-06 12:35:54 +01:00
Christian Bundy
eb7b703a70 Avoid running data migration on incorrect databases 2023-10-08 22:33:21 +03:00
Maksim Zayakin
4861f3c988 fix: fix TransactionManagementError 2023-09-01 10:50:57 +03:00
Ronny Vedrilla
e9db2d9631 #1093: "AXES_SENSITIVE_PARAMETERS" now have sensible defaults to follow "privacy-by-design" 2023-07-30 18:59:48 +03:00
Maksim Zayakin
9a54187a65 chore: update docstrings about settings.AXES_COOLOFF_TIME 2023-07-25 19:57:20 +03:00
Kira
370fadad36 add indonesian translation 2023-07-01 00:05:22 +03:00