mandatory authentication added
This commit is contained in:
parent
b3367de2b9
commit
7b9b56beac
|
@ -41,7 +41,6 @@ INSTALLED_APPS = (
|
||||||
'gadjo',
|
'gadjo',
|
||||||
'hobo.environment',
|
'hobo.environment',
|
||||||
'hobo.agent',
|
'hobo.agent',
|
||||||
'allauth_authentic2',
|
|
||||||
)
|
)
|
||||||
|
|
||||||
MIDDLEWARE_CLASSES = (
|
MIDDLEWARE_CLASSES = (
|
||||||
|
|
|
@ -42,3 +42,17 @@ a.delete-service:after, a.delete-variable:after, a.delete-tenant:after {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
top: 0;
|
top: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ul.login li {
|
||||||
|
list-style-type: none;
|
||||||
|
margin: .5em auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
ul.login li ul.errorlist {
|
||||||
|
margin-left: 10em;
|
||||||
|
}
|
||||||
|
|
||||||
|
ul.login label {
|
||||||
|
float: left;
|
||||||
|
width: 10em;
|
||||||
|
}
|
|
@ -6,3 +6,9 @@
|
||||||
{% block css %}
|
{% block css %}
|
||||||
<link rel="stylesheet" type="text/css" media="all" href="{{ STATIC_URL }}css/style.css"/>
|
<link rel="stylesheet" type="text/css" media="all" href="{{ STATIC_URL }}css/style.css"/>
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|
||||||
|
{% if user.is_authenticated %}
|
||||||
|
{% block logout-url %}
|
||||||
|
{% url "logout" %}
|
||||||
|
{% endblock %}
|
||||||
|
{% endif %}
|
||||||
|
|
|
@ -0,0 +1,16 @@
|
||||||
|
{% extends "hobo/base.html" %}
|
||||||
|
{% load i18n %}
|
||||||
|
|
||||||
|
{% block appbar %}
|
||||||
|
<h2>{% trans "Authentication" %}</h2>
|
||||||
|
{% endblock %}
|
||||||
|
|
||||||
|
{% block content %}
|
||||||
|
<form method="post">
|
||||||
|
{% csrf_token %}
|
||||||
|
<ul class="login">
|
||||||
|
{{ form.as_ul }}
|
||||||
|
<li><button>{% trans "Log in" %}</button></li>
|
||||||
|
</ul>
|
||||||
|
</form>
|
||||||
|
{% endblock %}
|
12
hobo/urls.py
12
hobo/urls.py
|
@ -1,13 +1,19 @@
|
||||||
|
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
|
||||||
|
|
||||||
urlpatterns = patterns('',
|
urlpatterns = patterns('',
|
||||||
url(r'^$', 'hobo.views.home', name='home'),
|
url(r'^$', 'hobo.views.home', name='home'),
|
||||||
url(r'^environment/', include('hobo.environment.urls')),
|
url(r'^environment/', decorated_includes(login_required, include('hobo.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',
|
||||||
|
{'template_name': 'hobo/login.html'}, name='login'),
|
||||||
|
url(r'^accounts/logout', 'django.contrib.auth.views.logout',
|
||||||
|
{'next_page': '/'}, name='logout'),
|
||||||
)
|
)
|
||||||
|
|
|
@ -0,0 +1,31 @@
|
||||||
|
# Decorating URL includes, <https://djangosnippets.org/snippets/2532/>
|
||||||
|
|
||||||
|
from django.core.urlresolvers import RegexURLPattern, RegexURLResolver
|
||||||
|
|
||||||
|
class DecoratedURLPattern(RegexURLPattern):
|
||||||
|
def resolve(self, *args, **kwargs):
|
||||||
|
result = super(DecoratedURLPattern, self).resolve(*args, **kwargs)
|
||||||
|
if result:
|
||||||
|
result.func = self._decorate_with(result.func)
|
||||||
|
return result
|
||||||
|
|
||||||
|
class DecoratedRegexURLResolver(RegexURLResolver):
|
||||||
|
def resolve(self, *args, **kwargs):
|
||||||
|
result = super(DecoratedRegexURLResolver, self).resolve(*args, **kwargs)
|
||||||
|
if result:
|
||||||
|
result.func = self._decorate_with(result.func)
|
||||||
|
return result
|
||||||
|
|
||||||
|
def decorated_includes(func, includes, *args, **kwargs):
|
||||||
|
urlconf_module, app_name, namespace = includes
|
||||||
|
|
||||||
|
for item in urlconf_module:
|
||||||
|
if isinstance(item, RegexURLPattern):
|
||||||
|
item.__class__ = DecoratedURLPattern
|
||||||
|
item._decorate_with = func
|
||||||
|
|
||||||
|
elif isinstance(item, RegexURLResolver):
|
||||||
|
item.__class__ = DecoratedRegexURLResolver
|
||||||
|
item._decorate_with = func
|
||||||
|
|
||||||
|
return urlconf_module, app_name, namespace
|
|
@ -5,6 +5,7 @@ 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 .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
|
||||||
|
@ -23,7 +24,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 = Home.as_view()
|
home = login_required(Home.as_view())
|
||||||
|
|
||||||
class ManagerHome(edit.CreateView):
|
class ManagerHome(edit.CreateView):
|
||||||
template_name = 'hobo/manager_home.html'
|
template_name = 'hobo/manager_home.html'
|
||||||
|
@ -47,7 +48,7 @@ class ManagerHome(edit.CreateView):
|
||||||
self.object.create_schema(True)
|
self.object.create_schema(True)
|
||||||
return response
|
return response
|
||||||
|
|
||||||
manager_home = ManagerHome.as_view()
|
manager_home = login_required(ManagerHome.as_view())
|
||||||
|
|
||||||
class ManagerUpdateTenant(edit.UpdateView):
|
class ManagerUpdateTenant(edit.UpdateView):
|
||||||
model = get_tenant_model()
|
model = get_tenant_model()
|
||||||
|
@ -62,7 +63,7 @@ class ManagerUpdateTenant(edit.UpdateView):
|
||||||
self.object.create_schema(True)
|
self.object.create_schema(True)
|
||||||
return response
|
return response
|
||||||
|
|
||||||
update_tenant = ManagerUpdateTenant.as_view()
|
update_tenant = login_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'
|
||||||
|
@ -71,7 +72,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 = ManagerDeleteTenant.as_view()
|
delete_tenant = login_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')
|
||||||
|
|
Loading…
Reference in New Issue