Opened 19 years ago
Closed 18 years ago
#3372 closed (fixed)
django.contrib.auth.views.password_change is tied to the URL /accounts/login/
| Reported by: | Owned by: | Adrian Holovaty | |
|---|---|---|---|
| Component: | Contrib apps | Version: | dev |
| Severity: | Keywords: | login | |
| Cc: | treborhudson@…, john@… | Triage Stage: | Design decision needed |
| Has patch: | no | Needs documentation: | no |
| Needs tests: | no | Patch needs improvement: | no |
| Easy pickings: | no | UI/UX: | no |
Description
There's a problem when trying to set up your login/auth URLs different than Django's defaults. The one I've been unable to work around without copying/pasting all of the function is django.contrib.auth.views.password_change.
Here's the gist of the problem...
- password_change is decorated with Django's default login_required decorator.
- The default login_required decorator uses the (un-overridable) LOGIN_URL variable.
- The LOGIN_URL variable is set to "/accounts/login/".
I see 2 fixes...
1) Move LOGIN_URL to global_settings.py
This would allow the default Django login_required decorator to be easily overridden, making things much easier across the board. (Anything decorated with login_required is fixed, the shortcut methods like "redirect_to_login" and "logout_then_login" are fixed.
And there's already variables for the contrib.comments system in global_settings.py so there's already precedent for having contrib apps with stuff in global_settings.py. :)
2) Provide an un-decorated password_change method
Having a password_change method that isn't decorated allows me to decorate it with my own login_required decorator, which redirects to my own login URL if not authenticated.
Either of these should be possible without breaking backwards compatibility.
I have a patch for either. Should I submit both patches? Or should I wait for a design decision and submit the patch for what's decided (if either of the above)?
Change History (5)
comment:1 by , 19 years ago
| Cc: | added |
|---|
comment:2 by , 19 years ago
| Keywords: | login added |
|---|---|
| Triage Stage: | Unreviewed → Design decision needed |
comment:3 by , 19 years ago
| Cc: | added |
|---|---|
| Has patch: | unset |
You can already change LOGIN_URL. Just put this in your project's settings.py file:
import django.contrib.auth django.contrib.auth.LOGIN_URL = '/mynew/loginurl/'
comment:4 by , 18 years ago
| Resolution: | → fixed |
|---|---|
| Status: | new → closed |
LOGIN_URL was put into global_settings a while back
comment:4 by , 18 years ago
| Resolution: | → fixed |
|---|---|
| Status: | new → closed |
LOGIN_URL was put into global_settings in [5072]
(Adding myself to CC list and un-checking "Has Patch")