Rearranged admin urlconfig

Permission check is now only applied to urls that need it
This commit is contained in:
Karl Hobley 2015-01-19 13:12:42 +00:00
parent 5cdb37e9dd
commit f887d948dc
2 changed files with 41 additions and 32 deletions

View file

@ -8,34 +8,6 @@ from wagtail.utils.urlpatterns import decorate_urlpatterns
urlpatterns = [
# Password reset
url(
r'^password_reset/$', 'django.contrib.auth.views.password_reset', {
'template_name': 'wagtailadmin/account/password_reset/form.html',
'email_template_name': 'wagtailadmin/account/password_reset/email.txt',
'subject_template_name': 'wagtailadmin/account/password_reset/email_subject.txt',
'password_reset_form': PasswordResetForm,
}, name='password_reset'
),
url(
r'^password_reset/done/$', 'django.contrib.auth.views.password_reset_done', {
'template_name': 'wagtailadmin/account/password_reset/done.html'
}, name='password_reset_done'
),
url(
r'^password_reset/confirm/(?P<uidb64>[0-9A-Za-z_\-]+)/(?P<token>[0-9A-Za-z]{1,13}-[0-9A-Za-z]{1,20})/$',
'django.contrib.auth.views.password_reset_confirm',
{'template_name': 'wagtailadmin/account/password_reset/confirm.html'},
name='password_reset_confirm',
),
url(
r'^password_reset/complete/$', 'django.contrib.auth.views.password_reset_complete',
{'template_name': 'wagtailadmin/account/password_reset/complete.html'},
name='password_reset_complete'
),
]
urlpatterns += [
url(r'^$', home.home, name='wagtailadmin_home'),
url(r'^failwhale/$', home.error_test, name='wagtailadmin_error_test'),
@ -85,14 +57,10 @@ urlpatterns += [
url(r'^tag-autocomplete/$', tags.autocomplete, name='wagtailadmin_tag_autocomplete'),
url(r'^login/$', account.login, name='wagtailadmin_login'),
url(r'^account/$', account.account, name='wagtailadmin_account'),
url(r'^account/change_password/$', account.change_password, name='wagtailadmin_account_change_password'),
url(r'^account/notification_preferences/$', account.notification_preferences, name='wagtailadmin_account_notification_preferences'),
url(r'^logout/$', account.logout, name='wagtailadmin_logout'),
url(r'^userbar/(\d+)/$', userbar.for_frontend, name='wagtailadmin_userbar_frontend'),
url(r'^userbar/moderation/(\d+)/$', userbar.for_moderation, name='wagtailadmin_userbar_moderation'),
]
@ -103,9 +71,47 @@ for fn in hooks.get_hooks('register_admin_urls'):
urlpatterns += urls
# Add "wagtailadmin.access_admin" permission check
urlpatterns = decorate_urlpatterns(urlpatterns,
permission_required(
'wagtailadmin.access_admin',
login_url='wagtailadmin_login'
)
)
# These url patterns do not require an authenticated admin user
urlpatterns += [
url(r'^login/$', account.login, name='wagtailadmin_login'),
# These two URLs have the "permission_required" decorator applied directly
# as they need to fail with a 403 error rather than redirect to the login page
url(r'^userbar/(\d+)/$', userbar.for_frontend, name='wagtailadmin_userbar_frontend'),
url(r'^userbar/moderation/(\d+)/$', userbar.for_moderation, name='wagtailadmin_userbar_moderation'),
# Password reset
url(
r'^password_reset/$', 'django.contrib.auth.views.password_reset', {
'template_name': 'wagtailadmin/account/password_reset/form.html',
'email_template_name': 'wagtailadmin/account/password_reset/email.txt',
'subject_template_name': 'wagtailadmin/account/password_reset/email_subject.txt',
'password_reset_form': PasswordResetForm,
}, name='password_reset'
),
url(
r'^password_reset/done/$', 'django.contrib.auth.views.password_reset_done', {
'template_name': 'wagtailadmin/account/password_reset/done.html'
}, name='password_reset_done'
),
url(
r'^password_reset/confirm/(?P<uidb64>[0-9A-Za-z_\-]+)/(?P<token>[0-9A-Za-z]{1,13}-[0-9A-Za-z]{1,20})/$',
'django.contrib.auth.views.password_reset_confirm',
{'template_name': 'wagtailadmin/account/password_reset/confirm.html'},
name='password_reset_confirm',
),
url(
r'^password_reset/complete/$', 'django.contrib.auth.views.password_reset_complete',
{'template_name': 'wagtailadmin/account/password_reset/complete.html'},
name='password_reset_complete'
),
]

View file

@ -1,10 +1,12 @@
from django.shortcuts import render
from django.contrib.auth.decorators import permission_required
from wagtail.wagtailadmin.userbar import EditPageItem, AddPageItem, ApproveModerationEditPageItem, RejectModerationEditPageItem
from wagtail.wagtailcore import hooks
from wagtail.wagtailcore.models import Page, PageRevision
@permission_required('wagtailadmin.access_admin', raise_exception=True)
def for_frontend(request, page_id):
items = [
EditPageItem(Page.objects.get(id=page_id)),
@ -26,6 +28,7 @@ def for_frontend(request, page_id):
})
@permission_required('wagtailadmin.access_admin', raise_exception=True)
def for_moderation(request, revision_id):
items = [
EditPageItem(PageRevision.objects.get(id=revision_id).page),