diff --git a/account_manager/urls.py b/account_manager/urls.py index 5d9600e..b3d275c 100644 --- a/account_manager/urls.py +++ b/account_manager/urls.py @@ -52,10 +52,12 @@ urlpatterns = [ name='user-delete-confirm'), path('user//delete/realm//', account_manager.views.user_views.user_delete, name='user-delete'), - path('reset///', account_manager.views.user_views.LdapPasswordResetConfirmView.as_view(), + path('accounts/reset///', 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//', account_manager.views.user_views.user_deleted, name='account-deleted'), + path('accounts/deleted//', account_manager.views.user_views.user_deleted, name='account-deleted'), ] diff --git a/account_manager/views/user_views.py b/account_manager/views/user_views.py index 36f8932..4ad9375 100644 --- a/account_manager/views/user_views.py +++ b/account_manager/views/user_views.py @@ -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) diff --git a/core/urls.py b/core/urls.py index 090b7d0..97da7e7 100644 --- a/core/urls.py +++ b/core/urls.py @@ -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')), ] diff --git a/templates/registration/password_change_done.html b/templates/registration/password_change_done.html new file mode 100644 index 0000000..e8a0dde --- /dev/null +++ b/templates/registration/password_change_done.html @@ -0,0 +1,16 @@ +{% extends 'base.jinja2' %} +{% import 'macros/form_macros.jinja2' as mform %} +{% block content %} +
+
+
+

Passwort geändert

+

Dein Passwort wurde erfolgreich geändert

+ + Zurück zur Profilseite + +
+
+
+{% endblock %} \ No newline at end of file