Log password change events via the password reset feature.

(imported from commit bbec7074229e8779c81d439d4eef373b5dac9fa7)
This commit is contained in:
Tim Abbott
2012-12-13 15:08:07 -05:00
parent 7ee945062d
commit e7b74060d2
3 changed files with 14 additions and 4 deletions

View File

@@ -1,6 +1,7 @@
from django.conf import settings
from django.conf.urls import patterns, url
import os.path
import zephyr.forms
urlpatterns = patterns('',
url(r'^$', 'zephyr.views.home'),
@@ -18,7 +19,8 @@ urlpatterns = patterns('',
url(r'^accounts/password/reset/done/$', 'django.contrib.auth.views.password_reset_done',
{'template_name': 'zephyr/reset_emailed.html'}),
url(r'^accounts/password/reset/(?P<uidb36>[0-9A-Za-z]+)-(?P<token>.+)/$', 'django.contrib.auth.views.password_reset_confirm',
{'post_reset_redirect' : '/accounts/password/done/', 'template_name': 'zephyr/reset_confirm.html'}),
{'post_reset_redirect' : '/accounts/password/done/', 'template_name': 'zephyr/reset_confirm.html',
'set_password_form' : zephyr.forms.LoggingSetPasswordForm}),
url(r'^accounts/password/done/$', 'django.contrib.auth.views.password_reset_complete',
{'template_name': 'zephyr/reset_done.html'}),

View File

@@ -3,9 +3,10 @@ from django.core import validators
from django.core.exceptions import ValidationError
from django.contrib.auth.models import User
from django.utils.safestring import mark_safe
from django.contrib.auth.forms import SetPasswordForm
from humbug import settings
from models import Realm
from zephyr.models import Realm, do_change_password
def is_unique(value):
try:
@@ -48,3 +49,9 @@ class HomepageForm(forms.Form):
else:
validators = UniqueEmailField.default_validators + [has_valid_realm, isnt_mit]
email = UniqueEmailField(validators=validators)
class LoggingSetPasswordForm(SetPasswordForm):
def save(self, commit=True):
do_change_password(self.user, self.cleaned_data['new_password1'],
log=True, commit=commit)
return self.user

View File

@@ -639,8 +639,9 @@ def do_activate_user(user, log=True, join_date=timezone.now()):
log_event({'type': 'user_activated',
'user': user.email})
def do_change_password(user, password, log=True):
def do_change_password(user, password, log=True, commit=True):
user.set_password(password)
if commit:
user.save()
if log:
log_event({'type': 'user_change_password',