Implement django password reset

This commit is contained in:
Götz 2019-04-11 02:21:56 +02:00
parent 36c329f7a7
commit a183eb2bbd
4 changed files with 36 additions and 3 deletions

View File

@ -52,10 +52,12 @@ urlpatterns = [
name='user-delete-confirm'),
path('user/<str:user_dn>/delete/realm/<int:realm_id>/', account_manager.views.user_views.user_delete,
name='user-delete'),
path('reset/<uidb64>/<token>/', account_manager.views.user_views.LdapPasswordResetConfirmView.as_view(),
path('accounts/reset/<uidb64>/<token>/', account_manager.views.user_views.LdapPasswordResetConfirmView.as_view(),
name='ldap_password_reset_confirm'),
path('accounts/password_change/', account_manager.views.user_views.LdapPasswordChangeView.as_view(),
name='password_change'),
# Extra
path('permission-denied/', main_views.permission_denied, name='permission-denied'),
path('account/deleted/<int:realm_id>/', account_manager.views.user_views.user_deleted, name='account-deleted'),
path('accounts/deleted/<int:realm_id>/', account_manager.views.user_views.user_deleted, name='account-deleted'),
]

View File

@ -1,6 +1,6 @@
from django.contrib.auth.decorators import login_required
from django.contrib.auth.models import User
from django.contrib.auth.views import PasswordResetConfirmView
from django.contrib.auth.views import PasswordResetConfirmView, PasswordChangeView
from django.contrib.sites.shortcuts import get_current_site
from django.core.exceptions import ObjectDoesNotExist
from django.shortcuts import render, redirect
@ -269,5 +269,15 @@ class LdapPasswordResetConfirmView(PasswordResetConfirmView):
def form_valid(self, form):
user = form.save()
password = form.cleaned_data['new_password1']
LdapUser.base_dn = LdapUser.ROOT_DN
LdapUser.password_reset(user, password)
return super().form_valid(form)
class LdapPasswordChangeView(PasswordChangeView):
def form_valid(self, form):
user = form.save()
password = form.cleaned_data['new_password1']
LdapUser.base_dn = LdapUser.ROOT_DN
LdapUser.password_reset(user, password)
return super().form_valid(form)

View File

@ -15,9 +15,14 @@ Including another URLconf
"""
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
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_if_logged_in': '/'}, name='login'),
path('accounts/', include('django.contrib.auth.urls')),
]

View File

@ -0,0 +1,16 @@
{% extends 'base.jinja2' %}
{% import 'macros/form_macros.jinja2' as mform %}
{% block content %}
<div class="col-12 ">
<div class="row justify-content-center justify-content-sm-center">
<div class="col-12 col-sm-8 col-md-7 col-lg-5 col-xl-4 bg-white text-dark p-3 mt-5">
<h1 class="mb-4">Passwort geändert</h1>
<p>Dein Passwort wurde erfolgreich geändert</p>
<a href="{{ url('realm-home')}}"
class="btn btn-success p-2 w-100">Zurück zur Profilseite</a>
</form>
</div>
</div>
</div>
{% endblock %}