Fix password reset, Fix docker env

This commit is contained in:
Götz 2019-04-24 11:24:39 +02:00
parent 0d1ff6ad04
commit a0503af5ef
4 changed files with 32 additions and 5 deletions

View File

@ -1,7 +1,12 @@
from django import forms
from django.contrib.auth import get_user_model
from django.contrib.auth.forms import PasswordResetForm
from .models import LdapUser, LdapGroup
from django.forms import modelformset_factory
import logging
logger = logging.getLogger(__name__)
class AddLDAPUserForm(forms.Form):
@ -67,3 +72,21 @@ UserFormset = modelformset_factory(
fields=('dn',),
extra=1
)
UserModel = get_user_model()
class LdapPasswordResetForm(PasswordResetForm):
def get_users(self, email):
"""Given an email, return matching user(s) who should receive a reset.
This allows subclasses to more easily customize the default policies
that prevent inactive users and users with unusable passwords from
resetting their password.
"""
logger.debug('Pasword reset get users')
active_users = UserModel._default_manager.filter(**{
'%s__iexact' % UserModel.get_email_field_name(): email,
'is_active': True,
})
logger.debug((u for u in active_users))
return (u for u in active_users)

View File

@ -411,3 +411,5 @@ class LdapPasswordChangeView(PasswordChangeView):
LdapUser.base_dn = LdapUser.ROOT_DN
LdapUser.password_reset(user, password)
return super().form_valid(form)

View File

@ -18,7 +18,7 @@ BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
DOMAIN = os.environ['DOMAIN']
SITE_NAME = os.environ['SITE_NAME']
SECRET_KEY = os.environ['SECRET_KEY']
DEBUG = os.environ.get('DEBUG', 'False') =='TRUE'
DEBUG = os.environ.get('DEBUG', 'False') =='True'
ALLOWED_HOSTS = os.environ['ALLOWED_HOSTS'].split()
# Application definition
@ -176,8 +176,8 @@ else:
EMAIL_TIMEOUT = 15
EMAIL_HOST = os.environ['EMAIL_HOST']
EMAIL_PORT = int(os.environ['EMAIL_PORT'])
EMAIL_USE_TLS = os.environ.get('EMAIL_USE_TLS', 'False') == 'TRUE'
# EMAIL_USE_SSL = os.environ.get('EMAIL_USE_SSL', 'False') == 'TRUE'
EMAIL_USE_TLS = os.environ.get('EMAIL_USE_TLS', 'False') == 'True'
EMAIL_USE_SSL = os.environ.get('EMAIL_USE_SSL', 'False') == 'True'
DEFAULT_FROM_EMAIL = os.environ['DEFAULT_FROM_EMAIL']
SERVER_EMAIL = os.environ['SERVER_EMAIL']

View File

@ -17,6 +17,7 @@ from django.contrib import admin
from django.urls import path, include
from django.contrib.auth import views as auth_views
from django.contrib.auth.decorators import user_passes_test
from account_manager.forms import LdapPasswordResetForm
from .views import about
login_forbidden = user_passes_test(lambda u: u.is_anonymous(), '/')
@ -24,10 +25,11 @@ login_forbidden = user_passes_test(lambda u: u.is_anonymous(), '/')
urlpatterns = [
path('', include('account_manager.urls')),
path('admin/', admin.site.urls),
path('accounts/login/', auth_views.LoginView.as_view(redirect_authenticated_user=True), name='login'),
path('about/', about, name='about'),
path('accounts/login/', auth_views.LoginView.as_view(redirect_authenticated_user=True), name='login'),
path('accounts/password_reset/',
auth_views.PasswordResetView.as_view(html_email_template_name='registration/password_reset_email.html'),
auth_views.PasswordResetView.as_view(html_email_template_name='registration/password_reset_email.html',
form_class=LdapPasswordResetForm),
name='password_reset'),
path('accounts/', include('django.contrib.auth.urls')),
]