diff --git a/seahub/views/sysadmin.py b/seahub/views/sysadmin.py index b3bd98444b..3993e0a714 100644 --- a/seahub/views/sysadmin.py +++ b/seahub/views/sysadmin.py @@ -920,7 +920,8 @@ def user_reset(request, email): if IS_EMAIL_CONFIGURED: if SEND_EMAIL_ON_RESETTING_USER_PASSWD: try: - send_user_reset_email(request, user.email, new_password) + contact_email = Profile.objects.get_contact_email_by_user(user.email) + send_user_reset_email(request, contact_email, new_password) msg = _('Successfully reset password to %(passwd)s, an email has been sent to %(user)s.') % \ {'passwd': new_password, 'user': user.email} messages.success(request, msg) diff --git a/tests/seahub/views/sysadmin/test_user_reset.py b/tests/seahub/views/sysadmin/test_user_reset.py index cc4d7558a2..0348d379c2 100644 --- a/tests/seahub/views/sysadmin/test_user_reset.py +++ b/tests/seahub/views/sysadmin/test_user_reset.py @@ -1,9 +1,11 @@ +from django.core import mail from django.core.urlresolvers import reverse from constance import config from seahub.base.accounts import User from seahub.options.models import (UserOptions, KEY_FORCE_PASSWD_CHANGE, VAL_FORCE_PASSWD_CHANGE) +from seahub.profile.models import Profile from seahub.test_utils import BaseTestCase @@ -13,6 +15,21 @@ class UserResetTest(BaseTestCase): self.login_as(self.admin) + def test_can_send_reset_email_to_contact_email(self): + p = Profile.objects.add_or_update(self.user.username, '') + p.contact_email = 'contact@mail.com' + p.save() + + self.assertEqual(len(mail.outbox), 0) + + resp = self.client.post( + reverse('user_reset', args=[self.user.email]) + ) + self.assertEqual(302, resp.status_code) + assert mail.outbox[0].to[0] != self.user.username + assert mail.outbox[0].to[0] == 'contact@mail.com' + self.assertEqual(len(mail.outbox), 1) + def test_can_reset_when_pwd_change_required(self): config.FORCE_PASSWORD_CHANGE = 1