~ubuntu-branches/debian/sid/python-django/sid

« back to all changes in this revision

Viewing changes to django/contrib/auth/views.py

  • Committer: Package Import Robot
  • Author(s): Luke Faraone
  • Date: 2013-11-07 15:33:49 UTC
  • mfrom: (1.3.12)
  • Revision ID: package-import@ubuntu.com-20131107153349-e31sc149l2szs3jb
Tags: 1.6-1
* New upstream version. Closes: #557474, #724637.
* python-django now also suggests the installation of ipython,
  bpython, python-django-doc, and libgdal1.
  Closes: #636511, #686333, #704203
* Set package maintainer to Debian Python Modules Team.
* Bump standards version to 3.9.5, no changes needed.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
try:
2
 
    from urllib.parse import urlparse, urlunparse
3
 
except ImportError:     # Python 2
4
 
    from urlparse import urlparse, urlunparse
5
 
 
6
1
from django.conf import settings
7
2
from django.core.urlresolvers import reverse
8
3
from django.http import HttpResponseRedirect, QueryDict
9
4
from django.template.response import TemplateResponse
10
 
from django.utils.http import base36_to_int, is_safe_url
 
5
from django.utils.http import base36_to_int, is_safe_url, urlsafe_base64_decode, urlsafe_base64_encode
11
6
from django.utils.translation import ugettext as _
 
7
from django.utils.six.moves.urllib.parse import urlparse, urlunparse
12
8
from django.shortcuts import resolve_url
 
9
from django.utils.encoding import force_bytes, force_text
13
10
from django.views.decorators.debug import sensitive_post_parameters
14
11
from django.views.decorators.cache import never_cache
15
12
from django.views.decorators.csrf import csrf_protect
35
32
    redirect_to = request.REQUEST.get(redirect_field_name, '')
36
33
 
37
34
    if request.method == "POST":
38
 
        form = authentication_form(data=request.POST)
 
35
        form = authentication_form(request, data=request.POST)
39
36
        if form.is_valid():
40
37
 
41
38
            # Ensure the user-originating redirection url is safe.
45
42
            # Okay, security check complete. Log the user in.
46
43
            auth_login(request, form.get_user())
47
44
 
48
 
            if request.session.test_cookie_worked():
49
 
                request.session.delete_test_cookie()
50
 
 
51
45
            return HttpResponseRedirect(redirect_to)
52
46
    else:
53
47
        form = authentication_form(request)
54
48
 
55
 
    request.session.set_test_cookie()
56
 
 
57
49
    current_site = get_current_site(request)
58
50
 
59
51
    context = {
77
69
    """
78
70
    auth_logout(request)
79
71
 
 
72
    if next_page is not None:
 
73
        next_page = resolve_url(next_page)
 
74
 
80
75
    if redirect_field_name in request.REQUEST:
81
76
        next_page = request.REQUEST[redirect_field_name]
82
77
        # Security check -- don't allow redirection to a different host.
144
139
                   current_app=None,
145
140
                   extra_context=None):
146
141
    if post_reset_redirect is None:
147
 
        post_reset_redirect = reverse('django.contrib.auth.views.password_reset_done')
 
142
        post_reset_redirect = reverse('password_reset_done')
 
143
    else:
 
144
        post_reset_redirect = resolve_url(post_reset_redirect)
148
145
    if request.method == "POST":
149
146
        form = password_reset_form(request.POST)
150
147
        if form.is_valid():
184
181
# Doesn't need csrf_protect since no-one can guess the URL
185
182
@sensitive_post_parameters()
186
183
@never_cache
187
 
def password_reset_confirm(request, uidb36=None, token=None,
 
184
def password_reset_confirm(request, uidb64=None, token=None,
188
185
                           template_name='registration/password_reset_confirm.html',
189
186
                           token_generator=default_token_generator,
190
187
                           set_password_form=SetPasswordForm,
195
192
    form for entering a new password.
196
193
    """
197
194
    UserModel = get_user_model()
198
 
    assert uidb36 is not None and token is not None  # checked by URLconf
 
195
    assert uidb64 is not None and token is not None  # checked by URLconf
199
196
    if post_reset_redirect is None:
200
 
        post_reset_redirect = reverse('django.contrib.auth.views.password_reset_complete')
 
197
        post_reset_redirect = reverse('password_reset_complete')
 
198
    else:
 
199
        post_reset_redirect = resolve_url(post_reset_redirect)
201
200
    try:
202
 
        uid_int = base36_to_int(uidb36)
203
 
        user = UserModel._default_manager.get(pk=uid_int)
204
 
    except (ValueError, OverflowError, UserModel.DoesNotExist):
 
201
        uid = urlsafe_base64_decode(uidb64)
 
202
        user = UserModel._default_manager.get(pk=uid)
 
203
    except (TypeError, ValueError, OverflowError, UserModel.DoesNotExist):
205
204
        user = None
206
205
 
207
206
    if user is not None and token_generator.check_token(user, token):
225
224
    return TemplateResponse(request, template_name, context,
226
225
                            current_app=current_app)
227
226
 
 
227
def password_reset_confirm_uidb36(request, uidb36=None, **kwargs):
 
228
    # Support old password reset URLs that used base36 encoded user IDs.
 
229
    # Remove in Django 1.7
 
230
    try:
 
231
      uidb64 = force_text(urlsafe_base64_encode(force_bytes(base36_to_int(uidb36))))
 
232
    except ValueError:
 
233
      uidb64 = '1' # dummy invalid ID (incorrect padding for base64)
 
234
    return password_reset_confirm(request, uidb64=uidb64, **kwargs)
228
235
 
229
236
def password_reset_complete(request,
230
237
                            template_name='registration/password_reset_complete.html',
247
254
                    password_change_form=PasswordChangeForm,
248
255
                    current_app=None, extra_context=None):
249
256
    if post_change_redirect is None:
250
 
        post_change_redirect = reverse('django.contrib.auth.views.password_change_done')
 
257
        post_change_redirect = reverse('password_change_done')
 
258
    else:
 
259
        post_change_redirect = resolve_url(post_change_redirect)
251
260
    if request.method == "POST":
252
261
        form = password_change_form(user=request.user, data=request.POST)
253
262
        if form.is_valid():