diff --git a/modoboa/core/commands/templates/settings.py.tpl b/modoboa/core/commands/templates/settings.py.tpl index 6354777e1..acedc64b1 100644 --- a/modoboa/core/commands/templates/settings.py.tpl +++ b/modoboa/core/commands/templates/settings.py.tpl @@ -133,6 +133,16 @@ MEDIA_ROOT = os.path.join(BASE_DIR, 'media') MODOBOA_API_URL = 'http://api.modoboa.org/1/' +# django-passwords + +PASSWORD_MIN_LENGTH = 8 + +PASSWORD_COMPLEXITY = { + "UPPER": 1, + "LOWER": 1, + "DIGITS": 1 +} + # Logging configuration LOGGING = { diff --git a/modoboa/core/forms.py b/modoboa/core/forms.py index a72f13d44..2a35c7b6e 100644 --- a/modoboa/core/forms.py +++ b/modoboa/core/forms.py @@ -5,6 +5,8 @@ from django import forms from django.utils.translation import ugettext as _, ugettext_lazy +from passwords.fields import PasswordField + from modoboa.core.models import User from modoboa.lib import parameters @@ -29,11 +31,11 @@ class ProfileForm(forms.ModelForm): label=ugettext_lazy("Old password"), required=False, widget=forms.PasswordInput(attrs={"class": "form-control"}) ) - newpassword = forms.CharField( + newpassword = PasswordField( label=ugettext_lazy("New password"), required=False, widget=forms.PasswordInput(attrs={"class": "form-control"}) ) - confirmation = forms.CharField( + confirmation = PasswordField( label=ugettext_lazy("Confirmation"), required=False, widget=forms.PasswordInput(attrs={"class": "form-control"}) ) diff --git a/modoboa/core/templates/core/user_profile.html b/modoboa/core/templates/core/user_profile.html index 1732fad2c..15fb395d4 100644 --- a/modoboa/core/templates/core/user_profile.html +++ b/modoboa/core/templates/core/user_profile.html @@ -5,6 +5,6 @@ id="uprefs_form">{% csrf_token %} {% render_form form %}
- +
diff --git a/requirements.txt b/requirements.txt index 8acc68d56..862495789 100644 --- a/requirements.txt +++ b/requirements.txt @@ -8,3 +8,4 @@ passlib django-versionfield2>=0.3.3 requests django-xforwardedfor-middleware +django-passwords==0.3.3