diff --git a/base/forms.py b/base/forms.py index 6b05ee59b..de1994993 100644 --- a/base/forms.py +++ b/base/forms.py @@ -1,6 +1,7 @@ from crispy_forms.helper import FormHelper from crispy_forms.layout import HTML, Fieldset, Layout from django import forms +from django.contrib.auth.forms import AuthenticationForm from django.core.exceptions import ValidationError from django.forms import ModelForm from django.utils.translation import ugettext_lazy as _ @@ -109,3 +110,14 @@ class CasaLegislativaTabelaAuxForm(ModelForm): ) ) super(CasaLegislativaTabelaAuxForm, self).__init__(*args, **kwargs) + + +class LoginForm(AuthenticationForm): + username = forms.CharField(label="Username", max_length=30, + widget=forms.TextInput( + attrs={ + 'class': 'form-control', 'name': 'username'})) + password = forms.CharField(label="Password", max_length=30, + widget=forms.TextInput( + attrs={ + 'class': 'form-control', 'name': 'password'})) diff --git a/base/urls.py b/base/urls.py index cb3154934..0a4caad73 100644 --- a/base/urls.py +++ b/base/urls.py @@ -1,12 +1,15 @@ from django.conf.urls import url +from django.contrib.auth import views from django.contrib.staticfiles.urls import staticfiles_urlpatterns from django.views.generic.base import TemplateView from .apps import AppConfig -from .views import CasaLegislativaTableAuxView, HelpView, login, logout +from .forms import LoginForm +from .views import CasaLegislativaTableAuxView, HelpView app_name = AppConfig.name + urlpatterns = [ url(r'^sistema/', TemplateView.as_view(template_name='sistema.html')), url(r'^ajuda/(?P\w+)$', HelpView.as_view(), name='help_topic'), @@ -15,8 +18,10 @@ urlpatterns = [ url(r'^casa-legislativa$', CasaLegislativaTableAuxView.as_view(), name='casa_legislativa'), - url(r'^login/$', login, name='login'), - url(r'^logout/$', logout, name='logout'), + url(r'^login/$', views.login, { + 'template_name': 'base/login.html', 'authentication_form': LoginForm}, + name='login'), + url(r'^logout/$', views.logout, {'next_page': '/login'}, name='logout') ] # Fix a static asset finding error on Django 1.9 + gunicorn: diff --git a/base/views.py b/base/views.py index f69fc5b5d..9ee21b2c4 100644 --- a/base/views.py +++ b/base/views.py @@ -1,17 +1,11 @@ import os from functools import lru_cache -import django.contrib.auth.views -from crispy_forms.helper import FormHelper -from crispy_forms.layout import Hidden, Submit from django.core.exceptions import ObjectDoesNotExist from django.core.urlresolvers import reverse -from django.http import HttpResponseRedirect -from django.shortcuts import render from django.views.generic import FormView from django.views.generic.base import TemplateView -from .areas import areas_em_pares from .forms import CasaLegislativaTabelaAuxForm from .models import CasaLegislativa @@ -72,36 +66,3 @@ class CasaLegislativaTableAuxView(FormView): def get_success_url(self): return reverse('base:casa_legislativa') - -def index(request): - """Página Inicial""" - - return render(request, 'home.html', {'areas': areas_em_pares}) - - -def login(request): - """Página de Login""" - - helper = FormHelper() - helper.form_id = 'login-form' - helper.form_class = 'form-horizontal' - helper.label_class = 'col-lg-1' - helper.field_class = 'col-lg-3' - helper.form_method = 'post' - - login_path = reverse('base:login') - helper.form_action = login_path - - next_path = request.REQUEST.get('next', '/') - if next_path == login_path: - next_path = '/' - helper.add_input(Hidden('next', next_path)) - helper.add_input(Submit('submit', 'Submit')) - - return django.contrib.auth.views.login(request, - extra_context={'helper': helper}) - - -def logout(request): - django.contrib.auth.views.logout(request) - return HttpResponseRedirect(request.GET.get('next', '/')) diff --git a/sapl/settings.py b/sapl/settings.py index 975b809e4..c65ae5288 100644 --- a/sapl/settings.py +++ b/sapl/settings.py @@ -30,6 +30,7 @@ DEBUG = config('DEBUG', default=False, cast=bool) ALLOWED_HOSTS = ['*'] +LOGIN_REDIRECT_URL = '/' # SAPL business apps in dependency order SAPL_APPS = ( diff --git a/templates/base.html b/templates/base.html index 862086233..91233c5da 100644 --- a/templates/base.html +++ b/templates/base.html @@ -104,14 +104,21 @@ diff --git a/templates/base/login.html b/templates/base/login.html new file mode 100644 index 000000000..f167217aa --- /dev/null +++ b/templates/base/login.html @@ -0,0 +1,67 @@ +{% extends "crud/detail.html" %} +{% load i18n %} +{% block base_content %} + + {% if form.errors %} + +

Usuário e/ou Senha inexistente. Tente novamente.

+ {% endif %} + + {% if next %} + {% if user.is_authenticated %} +

Você não tem acesso a esta página. Se quiser continuar, faça o Login.

+ + {% else %} +

Por favor, faça o Login para acessar esta página.

+ {% endif %} + + {% endif %} + +
+
+
+ +
+
+
+ +{% endblock base_content %} + + {% block javascript %} + + + + + {% endblock %}