use django-stronghold for authentication handling (instead of @login_required)

This commit is contained in:
fonfon 2014-11-11 15:32:40 +01:00 committed by Sunil Mohan Adapa
parent 0335ee9c32
commit 824a9091c1
20 changed files with 21 additions and 71 deletions

View File

@ -188,6 +188,7 @@ def configure_django():
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.messages',
'stronghold',
'plinth']
applications += module_loader.get_modules_to_load()
sessions_directory = os.path.join(cfg.data_dir, 'sessions')
@ -217,6 +218,7 @@ def configure_django():
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
'stronghold.middleware.LoginRequiredMiddleware',
'plinth.modules.first_boot.middleware.FirstBootMiddleware',
),
ROOT_URLCONF='plinth.urls',
@ -224,6 +226,7 @@ def configure_django():
SESSION_ENGINE='django.contrib.sessions.backends.file',
SESSION_FILE_PATH=sessions_directory,
STATIC_URL='/'.join([cfg.server_dir, 'static/']).replace('//', '/'),
STRONGHOLD_PUBLIC_NAMED_URLS=('lib:login',),
TEMPLATE_CONTEXT_PROCESSORS=context_processors,
USE_X_FORWARDED_HOST=bool(cfg.use_x_forwarded_host))
django.setup()

View File

@ -21,7 +21,6 @@ Plinth module for configuring timezone, hostname etc.
from django import forms
from django.contrib import messages
from django.contrib.auth.decorators import login_required
from django.core import validators
from django.template.response import TemplateResponse
from gettext import gettext as _
@ -116,7 +115,6 @@ def init():
menu.add_urlname(_('Configure'), 'glyphicon-cog', 'config:index', 10)
@login_required
def index(request):
"""Serve the configuration form"""
status = get_status()

View File

@ -20,7 +20,6 @@ Plinth module to configure a Deluge web client.
"""
from django.contrib import messages
from django.contrib.auth.decorators import login_required
from django.template.response import TemplateResponse
from gettext import gettext as _
@ -30,7 +29,6 @@ from plinth import package
from plinth.modules import deluge
@login_required
@package.required(['deluged', 'deluge-web'])
def index(request):
"""Serve configuration page."""

View File

@ -19,7 +19,6 @@
Plinth module for running diagnostics
"""
from django.contrib.auth.decorators import login_required
from django.template.response import TemplateResponse
from gettext import gettext as _
@ -35,14 +34,12 @@ def init():
"diagnostics:index", 30)
@login_required
def index(request):
"""Serve the index page"""
return TemplateResponse(request, 'diagnostics.html',
{'title': _('System Diagnostics')})
@login_required
def test(request):
"""Run diagnostics and the output page"""
output = ''

View File

@ -17,7 +17,6 @@
from django import forms
from django.contrib import messages
from django.contrib.auth.decorators import login_required
from django.core import validators
from django.core.urlresolvers import reverse_lazy
from django.template.response import TemplateResponse
@ -47,7 +46,6 @@ def init():
'dynamicdns:index', 40)
@login_required
@package.required(['ez-ipupdate'])
def index(request):
"""Serve dynamic DNS page"""
@ -205,7 +203,6 @@ class ConfigureForm(forms.Form):
LOGGER.info('no password given')
@login_required
@package.required(['ez-ipupdate'])
def configure(request):
"""Serve the configuration form"""
@ -227,7 +224,6 @@ def configure(request):
'subsubmenu': subsubmenu})
@login_required
@package.required(['ez-ipupdate'])
def statuspage(request):
"""Serve the status page """

View File

@ -19,7 +19,6 @@
Plinth module to configure a firewall
"""
from django.contrib.auth.decorators import login_required
from django.template.response import TemplateResponse
from gettext import gettext as _
import logging
@ -42,7 +41,6 @@ def init():
service_enabled.connect(on_service_enabled)
@login_required
@package.required(['firewalld'])
def index(request):
"""Serve introcution page"""

View File

@ -19,6 +19,7 @@ import os
from gettext import gettext as _
from django.http import Http404
from django.template.response import TemplateResponse
from stronghold.decorators import public
from plinth import cfg, __version__
@ -38,12 +39,14 @@ def init():
menu.add_urlname(_('About'), 'glyphicon-star', 'help:about', 100)
@public
def index(request):
"""Serve the index page"""
return TemplateResponse(request, 'help_index.html',
{'title': _('Documentation and FAQ')})
@public
def about(request):
"""Serve the about page"""
context = {
@ -53,6 +56,7 @@ def about(request):
return TemplateResponse(request, 'help_about.html', context)
@public
def helppage(request, page):
"""Serve a help page from the 'doc' directory"""
try:

View File

@ -20,7 +20,6 @@ Plinth module for configuring ikiwiki
"""
from django.contrib import messages
from django.contrib.auth.decorators import login_required
from django.core.urlresolvers import reverse_lazy
from django.shortcuts import redirect
from django.template.response import TemplateResponse
@ -45,7 +44,6 @@ def on_install():
actions.superuser_run('ikiwiki', ['setup'])
@login_required
@package.required(['ikiwiki',
'gcc',
'libc6-dev',
@ -98,7 +96,6 @@ def _apply_changes(request, old_status, new_status):
messages.info(request, _('Setting unchanged'))
@login_required
def manage(request):
"""Manage existing wikis and blogs."""
sites = actions.run('ikiwiki', ['get-sites']).split('\n')
@ -110,7 +107,6 @@ def manage(request):
'sites': sites})
@login_required
def create(request):
"""Form to create a wiki or blog."""
form = None
@ -161,7 +157,6 @@ def _create_blog(request, name, admin_name, admin_password):
messages.error(request, _('Could not create blog: %s') % err)
@login_required
def delete(request, name):
"""Handle deleting wikis/blogs, showing a confirmation dialog first.

View File

@ -20,7 +20,6 @@ Plinth module for configuring Mumble Server
"""
from django.contrib import messages
from django.contrib.auth.decorators import login_required
from django.template.response import TemplateResponse
from gettext import gettext as _
import logging
@ -38,7 +37,6 @@ def on_install():
mumble.service.notify_enabled(None, True)
@login_required
@package.required(['mumble-server'], on_install=on_install)
def index(request):
"""Serve configuration page."""

View File

@ -16,7 +16,6 @@
#
from django.contrib import messages
from django.contrib.auth.decorators import login_required
from django.core.urlresolvers import reverse_lazy
from django.shortcuts import redirect
from django.template.response import TemplateResponse
@ -45,7 +44,6 @@ def init():
menu.add_urlname(_('Networks'), 'glyphicon-signal', 'networks:index', 18)
@login_required
@package.required(['network-manager'])
def index(request):
"""Show connection list."""
@ -57,7 +55,6 @@ def index(request):
'connections': connections})
@login_required
def edit(request, uuid):
"""Serve connection editing form."""
try:
@ -148,7 +145,6 @@ def edit(request, uuid):
'form': form})
@login_required
def activate(request, uuid):
"""Activate the connection."""
try:
@ -166,7 +162,6 @@ def activate(request, uuid):
return redirect(reverse_lazy('networks:index'))
@login_required
def deactivate(request, uuid):
"""Deactivate the connection."""
try:
@ -180,7 +175,6 @@ def deactivate(request, uuid):
return redirect(reverse_lazy('networks:index'))
@login_required
def scan(request):
"""Show a list of nearby visible Wi-Fi access points."""
access_points = network.wifi_scan()
@ -190,7 +184,6 @@ def scan(request):
'access_points': access_points})
@login_required
def add(request):
"""Serve the connection type selection form."""
form = None
@ -211,7 +204,6 @@ def add(request):
'form': form})
@login_required
def add_ethernet(request):
"""Serve ethernet connection create form."""
form = None
@ -237,7 +229,6 @@ def add_ethernet(request):
'form': form})
@login_required
def add_wifi(request, ssid=None):
"""Serve wifi connection create form."""
form = None
@ -280,7 +271,6 @@ def add_wifi(request, ssid=None):
'form': form})
@login_required
def delete(request, uuid):
"""Handle deleting connections, showing a confirmation dialog first.

View File

@ -17,7 +17,6 @@
from django import forms
from django.contrib import messages
from django.contrib.auth.decorators import login_required
from django.template.response import TemplateResponse
from gettext import gettext as _
@ -47,7 +46,6 @@ def init():
is_external=True, enabled=status['enabled'])
@login_required
@package.required(['postgresql', 'php5-pgsql', 'owncloud'])
def index(request):
"""Serve the ownCloud configuration page"""

View File

@ -17,7 +17,6 @@
from django import forms
from django.contrib import messages
from django.contrib.auth.decorators import login_required
from django.template.response import TemplateResponse
from gettext import gettext as _
import os
@ -60,7 +59,6 @@ def init():
menu.add_urlname('Package Manager', 'glyphicon-gift', 'packages:index', 20)
@login_required
def index(request):
"""Serve the form"""
status = get_status()

View File

@ -20,7 +20,6 @@ URLs for the PageKite module
"""
from django.conf.urls import patterns, url
from django.contrib.auth.decorators import login_required
from .views import StandardServiceView, CustomServiceView, ConfigurationView, \
DeleteServiceView, index
@ -28,15 +27,13 @@ from .views import StandardServiceView, CustomServiceView, ConfigurationView, \
urlpatterns = patterns( # pylint: disable-msg=C0103
'plinth.modules.pagekite.views',
url(r'^apps/pagekite/$', login_required(index), name='index'),
url(r'^apps/pagekite/configure/$',
login_required(ConfigurationView.as_view()), name='configure'),
url(r'^apps/pagekite/services/standard$',
login_required(StandardServiceView.as_view()),
url(r'^apps/pagekite/$', index, name='index'),
url(r'^apps/pagekite/configure/$', ConfigurationView.as_view(),
name='configure'),
url(r'^apps/pagekite/services/standard$', StandardServiceView.as_view(),
name='standard-services'),
url(r'^apps/pagekite/services/custom$',
login_required(CustomServiceView.as_view()), name='custom-services'),
url(r'^apps/pagekite/services/custom/delete$',
login_required(DeleteServiceView.as_view()),
url(r'^apps/pagekite/services/custom$', CustomServiceView.as_view(),
name='custom-services'),
url(r'^apps/pagekite/services/custom/delete$', DeleteServiceView.as_view(),
name='delete-custom-service'),
)

View File

@ -20,7 +20,6 @@ Plinth module for configuring Privoxy Server.
"""
from django.contrib import messages
from django.contrib.auth.decorators import login_required
from django.template.response import TemplateResponse
from gettext import gettext as _
import logging
@ -38,7 +37,6 @@ def on_install():
actions.superuser_run('privoxy', ['setup'])
@login_required
@package.required(['privoxy'], on_install=on_install)
def index(request):
"""Serve configuration page."""

View File

@ -20,7 +20,6 @@ Plinth module for configuring Roundcube.
"""
from django.contrib import messages
from django.contrib.auth.decorators import login_required
from django.template.response import TemplateResponse
from gettext import gettext as _
import logging
@ -42,7 +41,6 @@ def on_install():
actions.superuser_run('roundcube', ['setup'])
@login_required
@package.required(['sqlite3', 'roundcube', 'roundcube-sqlite3'],
before_install=before_install, on_install=on_install)
def index(request):

View File

@ -21,7 +21,6 @@ Plinth module for configuring Tor
from django import forms
from django.contrib import messages
from django.contrib.auth.decorators import login_required
from django.template.response import TemplateResponse
from gettext import gettext as _
@ -43,7 +42,6 @@ def init():
menu.add_urlname('Tor', 'glyphicon-eye-close', 'tor:index', 30)
@login_required
@package.required(['tor'])
def index(request):
"""Service the index page"""

View File

@ -20,7 +20,6 @@ Plinth module for configuring Transmission Server
"""
from django.contrib import messages
from django.contrib.auth.decorators import login_required
from django.template.response import TemplateResponse
from gettext import gettext as _
import json
@ -42,7 +41,6 @@ def on_install():
actions.superuser_run('transmission', ['enable'])
@login_required
@package.required(['transmission-daemon'], on_install=on_install)
def index(request):
"""Serve configuration page."""

View File

@ -21,7 +21,6 @@ Plinth module for upgrades
from django import forms
from django.contrib import messages
from django.contrib.auth.decorators import login_required
from django.core.urlresolvers import reverse_lazy
from django.template.response import TemplateResponse
from django.views.decorators.http import require_POST
@ -45,7 +44,6 @@ def init():
'upgrades:index', 21)
@login_required
@package.required(['unattended-upgrades'])
def index(request):
"""Serve the index page."""
@ -54,7 +52,6 @@ def index(request):
'subsubmenu': subsubmenu})
@login_required
@require_POST
@package.required(['unattended-upgrades'])
def run(request):
@ -84,7 +81,6 @@ run once per day. It will attempt to perform any package upgrades that are \
available.'))
@login_required
@package.required(['unattended-upgrades'])
def configure(request):
"""Serve the configuration form."""

View File

@ -20,7 +20,6 @@ URLs for the Users module
"""
from django.conf.urls import patterns, url
from django.contrib.auth.decorators import login_required
from django.core.urlresolvers import reverse_lazy
from . import views
@ -28,17 +27,14 @@ from . import views
urlpatterns = patterns(
'',
url(r'^sys/users/$', login_required(views.UserList.as_view()),
name='index'),
url(r'^sys/users/create/$', login_required(views.UserCreate.as_view()),
name='create'),
url(r'^sys/users/(?P<slug>[\w.@+-]+)/edit/$',
login_required(views.UserUpdate.as_view()), name='edit'),
url(r'^sys/users/(?P<slug>[\w.@+-]+)/delete/$',
login_required(views.UserDelete.as_view()), name='delete'),
url(r'^sys/users/$', views.UserList.as_view(), name='index'),
url(r'^sys/users/create/$', views.UserCreate.as_view(), name='create'),
url(r'^sys/users/(?P<slug>[\w.@+-]+)/edit/$', views.UserUpdate.as_view(),
name='edit'),
url(r'^sys/users/(?P<slug>[\w.@+-]+)/delete/$', views.UserDelete.as_view(),
name='delete'),
url(r'^sys/users/(?P<slug>[\w.@+-]+)/change_password/$',
login_required(views.UserChangePassword.as_view()),
name='change_password'),
views.UserChangePassword.as_view(), name='change_password'),
# Add Django's login/logout urls
url(r'^accounts/login/$', 'django.contrib.auth.views.login',
{'template_name': 'login.html'}, name='login'),

View File

@ -17,7 +17,6 @@
from django import forms
from django.contrib import messages
from django.contrib.auth.decorators import login_required
from django.core.urlresolvers import reverse_lazy
from django.template.response import TemplateResponse
from gettext import gettext as _
@ -75,7 +74,6 @@ def on_install():
actions.superuser_run('xmpp', ['setup'])
@login_required
@package.required(['jwchat', 'ejabberd'],
before_install=before_install,
on_install=on_install)
@ -98,7 +96,6 @@ the XMPP service'))
allowed to register an account through an XMPP client'))
@login_required
def configure(request):
"""Serve the configuration form"""
status = get_status()
@ -196,7 +193,6 @@ class RegisterForm(forms.Form): # pylint: disable-msg=W0232
for vhost in vhosts)
@login_required
def register(request):
"""Serve the registration form."""
form = None