only superusers can login

This commit is contained in:
Serghei Mihai 2014-11-18 10:26:23 +01:00
parent 7b9b56beac
commit bdd7984dfa
2 changed files with 11 additions and 8 deletions

View File

@ -1,15 +1,17 @@
from django.conf import settings from django.conf import settings
from django.conf.urls import patterns, include, url from django.conf.urls import patterns, include, url
from django.contrib.auth.decorators import login_required
from django.contrib import admin from django.contrib import admin
admin.autodiscover() admin.autodiscover()
from url_utils import decorated_includes from .views import admin_required
from .urls_utils import decorated_includes
from .environment.urls import urlpatterns as environment_urls
urlpatterns = patterns('', urlpatterns = patterns('',
url(r'^$', 'hobo.views.home', name='home'), url(r'^$', 'hobo.views.home', name='home'),
url(r'^environment/', decorated_includes(login_required, include('hobo.environment.urls'))), url(r'^environment/', decorated_includes(admin_required,
include(environment_urls))),
url(r'^hobos.json$', 'hobo.views.hobo'), url(r'^hobos.json$', 'hobo.views.hobo'),
url(r'^admin/', include(admin.site.urls)), url(r'^admin/', include(admin.site.urls)),
url(r'^accounts/login', 'django.contrib.auth.views.login', url(r'^accounts/login', 'django.contrib.auth.views.login',

View File

@ -5,11 +5,12 @@ from django.utils.translation import ugettext as _
from django.views.generic.base import TemplateView from django.views.generic.base import TemplateView
from django.views.generic import edit from django.views.generic import edit
from django.core.urlresolvers import reverse from django.core.urlresolvers import reverse
from django.contrib.auth.decorators import login_required from django.contrib.auth.decorators import user_passes_test
from .environment.utils import Zone, get_operational_services from .environment.utils import Zone, get_operational_services
from .forms import HoboForm, HoboUpdateForm, get_tenant_model from .forms import HoboForm, HoboUpdateForm, get_tenant_model
admin_required = user_passes_test(lambda u: u.is_superuser)
class Home(TemplateView): class Home(TemplateView):
template_name = 'hobo/home.html' template_name = 'hobo/home.html'
@ -24,7 +25,7 @@ class Home(TemplateView):
context['zones'].append(Zone(_('Environment Settings'), 'settings', 'environment/')) context['zones'].append(Zone(_('Environment Settings'), 'settings', 'environment/'))
return context return context
home = login_required(Home.as_view()) home = admin_required(Home.as_view())
class ManagerHome(edit.CreateView): class ManagerHome(edit.CreateView):
template_name = 'hobo/manager_home.html' template_name = 'hobo/manager_home.html'
@ -48,7 +49,7 @@ class ManagerHome(edit.CreateView):
self.object.create_schema(True) self.object.create_schema(True)
return response return response
manager_home = login_required(ManagerHome.as_view()) manager_home = admin_required(ManagerHome.as_view())
class ManagerUpdateTenant(edit.UpdateView): class ManagerUpdateTenant(edit.UpdateView):
model = get_tenant_model() model = get_tenant_model()
@ -63,7 +64,7 @@ class ManagerUpdateTenant(edit.UpdateView):
self.object.create_schema(True) self.object.create_schema(True)
return response return response
update_tenant = login_required(ManagerUpdateTenant.as_view()) update_tenant = admin_required(ManagerUpdateTenant.as_view())
class ManagerDeleteTenant(edit.DeleteView): class ManagerDeleteTenant(edit.DeleteView):
template_name = 'environment/tenant_confirm_delete.html' template_name = 'environment/tenant_confirm_delete.html'
@ -72,7 +73,7 @@ class ManagerDeleteTenant(edit.DeleteView):
def get_success_url(self): def get_success_url(self):
return reverse('manager-home', self.object.id) return reverse('manager-home', self.object.id)
delete_tenant = login_required(ManagerDeleteTenant.as_view()) delete_tenant = admin_required(ManagerDeleteTenant.as_view())
def hobos(request, *args, **kwargs): def hobos(request, *args, **kwargs):
response = HttpResponse(content_type='application/json') response = HttpResponse(content_type='application/json')