From 856631cdb0687c179d85f44d9624e5ca1c4c5bd8 Mon Sep 17 00:00:00 2001 From: Christian Dresen <c.dresen@fh-muenster.de> Date: Sun, 18 Sep 2016 15:54:42 +0200 Subject: [PATCH] [Security] Added password change notifications --- www/web/warpauth/util.py | 6 ++++++ www/web/warpauth/views/profile.py | 1 + www/web/warpauth/views/reset_password.py | 10 ++++++---- www/web/warpzone/{utils.py => util.py} | 4 +++- 4 files changed, 16 insertions(+), 5 deletions(-) rename www/web/warpzone/{utils.py => util.py} (94%) diff --git a/www/web/warpauth/util.py b/www/web/warpauth/util.py index 628d52a..95af73d 100644 --- a/www/web/warpauth/util.py +++ b/www/web/warpauth/util.py @@ -1,4 +1,10 @@ +from django.utils.translation import ugettext as _ +from warpzone.util import send_email + pages = {'pages': [ {"link": "pizza", "name": "PizzaSheet"}, {"link": "about", "name": "About"}, ]} + +def send_password_change_notification(user): + send_email(user.email, _("Your password was changed"),_("Password changed recently")) diff --git a/www/web/warpauth/views/profile.py b/www/web/warpauth/views/profile.py index dc9aab8..1c81ed7 100644 --- a/www/web/warpauth/views/profile.py +++ b/www/web/warpauth/views/profile.py @@ -90,6 +90,7 @@ def change_password(request): if ret == -1: pages["error_passwd"] = "Old password did not match" else: + send_password_change_notification(request.user.ldap_user) pages["success_passwd"] = True pages['ldap_groups'] = request.user.ldap_user.group_names pages['ldap_user_form'] = LdapUserForm(instance=LdapUser.objects.get(uid=str(request.user))) diff --git a/www/web/warpauth/views/reset_password.py b/www/web/warpauth/views/reset_password.py index 7dad01c..fb6f806 100644 --- a/www/web/warpauth/views/reset_password.py +++ b/www/web/warpauth/views/reset_password.py @@ -3,11 +3,13 @@ import hashlib import logging import datetime +from django.utils.translation import ugettext as _ + from django.core.exceptions import ObjectDoesNotExist, ValidationError from django.http import HttpResponse from django.shortcuts import render from warpauth.ldap_connector import LDAPConnector -from warpzone.utils import send_email +from warpzone.util import send_email from warpauth.util import * from warpauth.models import PasswordResetToken, LdapUser @@ -16,8 +18,6 @@ from warpzone.settings import PW_RESET_TOKEN_LIFETIME # # Function to generate a password reset Token -# ToDo: Implement Email with Token -# ToDo: Remove Debug outputs # def gen_token(request): @@ -32,7 +32,8 @@ def gen_token(request): p.email = usr.email p.hash = hashlib.sha1(os.urandom(128)).hexdigest() p.save() - ret = send_email(p.email, "Requested Password Reset", "http://localhost/reset_password/%s" % p.hash) + email_content = _("https://infra.warpzone.ms/reset_password/%(hash)s") % {'hash': p.hash} + ret = send_email(p.email, "Requested Password Reset", email_content ) if not ret: pages["error"] = "Error while sending the email. Please contact the administrator." logger.info("Success for %s", usr.uid) @@ -65,6 +66,7 @@ def change_password(request, reset_hash=None): ldap_connector = LDAPConnector() ldap_connector.change_user_password(user.build_dn(), None, request.POST["password"], True) pw_reset_token.delete() + send_password_change_notification(user) else: pages["username"] = pw_reset_token.user diff --git a/www/web/warpzone/utils.py b/www/web/warpzone/util.py similarity index 94% rename from www/web/warpzone/utils.py rename to www/web/warpzone/util.py index 88962dc..d865050 100644 --- a/www/web/warpzone/utils.py +++ b/www/web/warpzone/util.py @@ -14,4 +14,6 @@ def send_email(to_address, subject, content): except Exception as e: print(e) - return False \ No newline at end of file + return False + + -- GitLab