1
0
mirror of https://github.com/haiwen/seahub.git synced 2025-09-19 10:26:17 +00:00

Merge pull request #1975 from haiwen/notify_admin_after_register

Notify admins after register
This commit is contained in:
xiez
2018-01-09 11:43:51 +08:00
committed by GitHub
8 changed files with 79 additions and 2 deletions

View File

@@ -2,7 +2,9 @@ from django.conf import settings
from django.contrib.auth.backends import RemoteUserBackend
from seahub.base.accounts import User
from registration.models import notify_admins_on_activate_request
from registration.models import (
notify_admins_on_activate_request, notify_admins_on_register_complete)
class OauthRemoteUserBackend(RemoteUserBackend):
"""
@@ -49,6 +51,8 @@ class OauthRemoteUserBackend(RemoteUserBackend):
email=username, is_active=self.activate_after_creation)
if user and self.activate_after_creation is False:
notify_admins_on_activate_request(user.email)
if user and settings.NOTIFY_ADMIN_AFTER_REGISTRATION is True:
notify_admins_on_register_complete(user.email)
else:
user = None

View File

@@ -420,6 +420,10 @@ ACTIVATE_AFTER_REGISTRATION = True
# This option will be ignored if ``ACTIVATE_AFTER_REGISTRATION`` set to ``True``.
REGISTRATION_SEND_MAIL = False
# Whether or not send notify email to sytem admins when user registered or
# first login through Shibboleth.
NOTIFY_ADMIN_AFTER_REGISTRATION = False
# Whether or not activate inactive user on first login. Mainly used in LDAP user sync.
ACTIVATE_AFTER_FIRST_LOGIN = False

View File

@@ -0,0 +1,4 @@
{% load i18n %} {% blocktrans %}You're receiving this e-mail because you are the admin of {{site_name }}, and a new user {{ reg_email}} is joined.{% endblocktrans%}
{% trans "Please click the following link to view the new account:" %}
{{ user_search_link }}

View File

@@ -0,0 +1 @@
{% load i18n %}{% blocktrans %}New account created on {{site_name}}{% endblocktrans %}

View File

@@ -0,0 +1,33 @@
from django.core import mail
from django.test import override_settings
from seahub.test_utils import BaseTestCase
from registration import signals
from constance import config
class EmailAdminOnRegistrationTest(BaseTestCase):
def setUp(self):
self.clear_cache()
self.old_config = config.ACTIVATE_AFTER_REGISTRATION
config.ACTIVATE_AFTER_REGISTRATION = True
def tearDown(self):
config.ACTIVATE_AFTER_REGISTRATION = self.old_config
def _send_signal(self):
signals.user_registered.send(sender=self.__class__,
user=self.user,
request=self.fake_request)
@override_settings(
NOTIFY_ADMIN_AFTER_REGISTRATION=True,
)
def test_notify_admin_after_registration(self):
self.assertEqual(len(mail.outbox), 0)
self._send_signal()
assert 'New account created' in mail.outbox[0].subject
assert '%s is joined' % self.user.email in mail.outbox[0].body
assert len(mail.outbox) > 0

View File

@@ -325,6 +325,30 @@ def notify_admins_on_activate_request(reg_email):
except Exception as e:
logger.error(e)
def notify_admins_on_register_complete(reg_email):
ctx_dict = {
"site_name": settings.SITE_NAME,
"user_search_link": "%s%s?email=%s" % (
get_site_scheme_and_netloc(), reverse("user_search"),
urlquote(reg_email)),
"reg_email": reg_email,
}
subject = render_to_string('registration/register_complete_email_subject.txt',
ctx_dict)
# Email subject *must not* contain newlines
subject = ''.join(subject.splitlines())
message = render_to_string('registration/register_complete_email.txt',
ctx_dict)
admins = User.objects.get_superusers()
for admin in admins:
try:
admin.email_user(subject, message, settings.DEFAULT_FROM_EMAIL)
except Exception as e:
logger.error(e)
@receiver(user_registered)
def email_admin_on_registration(sender, **kwargs):
"""Send an email notification to admin when a newly registered user need
@@ -337,3 +361,7 @@ def email_admin_on_registration(sender, **kwargs):
bool(config.REGISTRATION_SEND_MAIL) is False:
reg_email = kwargs['user'].email
notify_admins_on_activate_request(reg_email)
if settings.NOTIFY_ADMIN_AFTER_REGISTRATION is True:
reg_email = kwargs['user'].email
notify_admins_on_register_complete(reg_email)

View File

@@ -3,7 +3,8 @@ from django.db import connection
from django.contrib.auth.backends import RemoteUserBackend
from seahub.base.accounts import User
from registration.models import notify_admins_on_activate_request
from registration.models import (
notify_admins_on_activate_request, notify_admins_on_register_complete)
class ShibbolethRemoteUserBackend(RemoteUserBackend):
"""
@@ -50,6 +51,8 @@ class ShibbolethRemoteUserBackend(RemoteUserBackend):
email=username, is_active=self.activate_after_creation)
if user and self.activate_after_creation is False:
notify_admins_on_activate_request(user.email)
if user and settings.NOTIFY_ADMIN_AFTER_REGISTRATION is True:
notify_admins_on_register_complete(user.email)
else:
user = None