urls.py 6.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155
  1. from django.contrib import admin
  2. from django.contrib.auth import views
  3. from django.contrib.auth.decorators import login_required, permission_required
  4. from django.contrib.auth.forms import AuthenticationForm
  5. from django.contrib.auth.urls import urlpatterns as auth_urlpatterns
  6. from django.contrib.messages.api import info
  7. from django.http import HttpRequest, HttpResponse
  8. from django.shortcuts import render
  9. from django.template import RequestContext, Template
  10. from django.urls import path, re_path, reverse_lazy
  11. from django.views.decorators.cache import never_cache
  12. from django.views.i18n import set_language
  13. class CustomRequestAuthenticationForm(AuthenticationForm):
  14. def __init__(self, request, *args, **kwargs):
  15. assert isinstance(request, HttpRequest)
  16. super().__init__(request, *args, **kwargs)
  17. @never_cache
  18. def remote_user_auth_view(request):
  19. "Dummy view for remote user tests"
  20. t = Template("Username is {{ user }}.")
  21. c = RequestContext(request, {})
  22. return HttpResponse(t.render(c))
  23. def auth_processor_no_attr_access(request):
  24. render(request, 'context_processors/auth_attrs_no_access.html')
  25. # *After* rendering, we check whether the session was accessed
  26. return render(request,
  27. 'context_processors/auth_attrs_test_access.html',
  28. {'session_accessed': request.session.accessed})
  29. def auth_processor_attr_access(request):
  30. render(request, 'context_processors/auth_attrs_access.html')
  31. return render(request,
  32. 'context_processors/auth_attrs_test_access.html',
  33. {'session_accessed': request.session.accessed})
  34. def auth_processor_user(request):
  35. return render(request, 'context_processors/auth_attrs_user.html')
  36. def auth_processor_perms(request):
  37. return render(request, 'context_processors/auth_attrs_perms.html')
  38. def auth_processor_perm_in_perms(request):
  39. return render(request, 'context_processors/auth_attrs_perm_in_perms.html')
  40. def auth_processor_messages(request):
  41. info(request, "Message 1")
  42. return render(request, 'context_processors/auth_attrs_messages.html')
  43. def userpage(request):
  44. pass
  45. @permission_required('unknown.permission')
  46. def permission_required_redirect(request):
  47. pass
  48. @permission_required('unknown.permission', raise_exception=True)
  49. def permission_required_exception(request):
  50. pass
  51. @login_required
  52. @permission_required('unknown.permission', raise_exception=True)
  53. def login_and_permission_required_exception(request):
  54. pass
  55. uid_token = r'(?P<uidb64>[0-9A-Za-z_\-]+)/(?P<token>[0-9A-Za-z]{1,13}-[0-9A-Za-z]{1,20})'
  56. # special urls for auth test cases
  57. urlpatterns = auth_urlpatterns + [
  58. path('logout/custom_query/', views.LogoutView.as_view(redirect_field_name='follow')),
  59. path('logout/next_page/', views.LogoutView.as_view(next_page='/somewhere/')),
  60. path('logout/next_page/named/', views.LogoutView.as_view(next_page='password_reset')),
  61. path('logout/allowed_hosts/', views.LogoutView.as_view(success_url_allowed_hosts={'otherserver'})),
  62. path('remote_user/', remote_user_auth_view),
  63. path('password_reset_from_email/', views.PasswordResetView.as_view(from_email='staffmember@example.com')),
  64. path(
  65. 'password_reset_extra_email_context/',
  66. views.PasswordResetView.as_view(extra_email_context={'greeting': 'Hello!'})),
  67. path(
  68. 'password_reset/custom_redirect/',
  69. views.PasswordResetView.as_view(success_url='/custom/')),
  70. path(
  71. 'password_reset/custom_redirect/named/',
  72. views.PasswordResetView.as_view(success_url=reverse_lazy('password_reset'))),
  73. path(
  74. 'password_reset/html_email_template/',
  75. views.PasswordResetView.as_view(
  76. html_email_template_name='registration/html_password_reset_email.html'
  77. )),
  78. re_path(
  79. '^reset/custom/{}/$'.format(uid_token),
  80. views.PasswordResetConfirmView.as_view(success_url='/custom/'),
  81. ),
  82. re_path(
  83. '^reset/custom/named/{}/$'.format(uid_token),
  84. views.PasswordResetConfirmView.as_view(success_url=reverse_lazy('password_reset')),
  85. ),
  86. re_path(
  87. '^reset/post_reset_login/{}/$'.format(uid_token),
  88. views.PasswordResetConfirmView.as_view(post_reset_login=True),
  89. ),
  90. re_path(
  91. '^reset/post_reset_login_custom_backend/{}/$'.format(uid_token),
  92. views.PasswordResetConfirmView.as_view(
  93. post_reset_login=True,
  94. post_reset_login_backend='django.contrib.auth.backends.AllowAllUsersModelBackend',
  95. ),
  96. ),
  97. path('password_change/custom/',
  98. views.PasswordChangeView.as_view(success_url='/custom/')),
  99. path('password_change/custom/named/',
  100. views.PasswordChangeView.as_view(success_url=reverse_lazy('password_reset'))),
  101. path('login_required/', login_required(views.PasswordResetView.as_view())),
  102. path('login_required_login_url/', login_required(views.PasswordResetView.as_view(), login_url='/somewhere/')),
  103. path('auth_processor_no_attr_access/', auth_processor_no_attr_access),
  104. path('auth_processor_attr_access/', auth_processor_attr_access),
  105. path('auth_processor_user/', auth_processor_user),
  106. path('auth_processor_perms/', auth_processor_perms),
  107. path('auth_processor_perm_in_perms/', auth_processor_perm_in_perms),
  108. path('auth_processor_messages/', auth_processor_messages),
  109. path(
  110. 'custom_request_auth_login/',
  111. views.LoginView.as_view(authentication_form=CustomRequestAuthenticationForm)),
  112. re_path('^userpage/(.+)/$', userpage, name='userpage'),
  113. path('login/redirect_authenticated_user_default/', views.LoginView.as_view()),
  114. path('login/redirect_authenticated_user/',
  115. views.LoginView.as_view(redirect_authenticated_user=True)),
  116. path('login/allowed_hosts/',
  117. views.LoginView.as_view(success_url_allowed_hosts={'otherserver'})),
  118. path('permission_required_redirect/', permission_required_redirect),
  119. path('permission_required_exception/', permission_required_exception),
  120. path('login_and_permission_required_exception/', login_and_permission_required_exception),
  121. path('setlang/', set_language, name='set_language'),
  122. # This line is only required to render the password reset with is_admin=True
  123. path('admin/', admin.site.urls),
  124. ]