diff --git a/sapl/base/forms.py b/sapl/base/forms.py
index 98a567261..7f1eef180 100644
--- a/sapl/base/forms.py
+++ b/sapl/base/forms.py
@@ -4,7 +4,8 @@ from crispy_forms.layout import HTML, Button, Div, Field, Fieldset, Layout, Row
from django import forms
from django.conf import settings
from django.contrib.auth import get_user_model
-from django.contrib.auth.forms import AuthenticationForm, PasswordResetForm
+from django.contrib.auth.forms import (AuthenticationForm, PasswordResetForm,
+ SetPasswordForm)
from django.contrib.auth.models import Group, User
from django.contrib.auth.password_validation import validate_password
from django.contrib.contenttypes.models import ContentType
@@ -719,3 +720,18 @@ class RecuperarSenhaForm(PasswordResetForm):
raise ValidationError(msg)
return self.cleaned_data
+
+
+class NovaSenhaForm(SetPasswordForm):
+ def __init__(self, user, *args, **kwargs):
+ self.user = user
+ super(NovaSenhaForm, self).__init__(user, *args, **kwargs)
+
+ row1 = to_row(
+ [('new_password1', 6),
+ ('new_password2', 6)])
+
+ self.helper = FormHelper()
+ self.helper.layout = Layout(
+ row1,
+ form_actions(save_label='Enviar'))
diff --git a/sapl/base/urls.py b/sapl/base/urls.py
index 6a0473612..08f456f3b 100644
--- a/sapl/base/urls.py
+++ b/sapl/base/urls.py
@@ -10,7 +10,7 @@ from django.views.generic.base import TemplateView
from sapl.base.views import AutorCrud, ConfirmarEmailView, TipoAutorCrud
from .apps import AppConfig
-from .forms import LoginForm, RecuperarSenhaForm
+from .forms import LoginForm, NovaSenhaForm, RecuperarSenhaForm
from sapl.settings import EMAIL_SEND_USER
from .views import (AppConfigCrud, CasaLegislativaCrud, HelpView,
RelatorioAtasView, RelatorioHistoricoTramitacaoView,
@@ -39,11 +39,14 @@ recuperar_senha = [
url(r'^recuperar-senha/(?P
Caso não tenha solicitado a alteração de sua senha, favor ignorar este e-mail.
diff --git a/sapl/test_urls.py b/sapl/test_urls.py index 2dda9cce6..a8df77d13 100644 --- a/sapl/test_urls.py +++ b/sapl/test_urls.py @@ -145,6 +145,7 @@ def test_crudaux_list_do_crud_esta_na_pagina_sistema(url_item, admin_client): Se encontra em %s.urls """ % (url, app_name) + apps_url_patterns_prefixs_and_users = { 'api': { 'prefixs': [ @@ -158,6 +159,7 @@ apps_url_patterns_prefixs_and_users = { '/logout', '/ajuda', '/email', + '/recuperar-senha' ]}, 'comissoes': { 'users': {'operador_geral': ['/sistema', '/comissao'], @@ -235,13 +237,6 @@ apps_url_patterns_prefixs_and_users = { @pytest.mark.parametrize('url_item', _lista_urls) def test_urlpatterns(url_item, admin_client): - urls_reset_password = [ - '/recuperar-senha/1/1/', - '/recuperar-senha/completo/', - '/recuperar-senha/email/', - '/recuperar-senha/finalizado/', - ] - key, url, var, app_name = url_item url = '/' + (url % {v: 1 for v in var}) @@ -264,12 +259,11 @@ def test_urlpatterns(url_item, admin_client): isvalid = True break - if url not in urls_reset_password: - assert isvalid, """ - O prefixo da url (%s) não está no padrão de sua app (%s). - Os prefixos permitidos são: - %s - """ % (url, app_name, prefixs) + assert isvalid, """ + O prefixo da url (%s) não está no padrão de sua app (%s). + Os prefixos permitidos são: + %s + """ % (url, app_name, prefixs) urls_publicas_excecoes = {