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:
@@ -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
|
||||
|
||||
|
@@ -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
|
||||
|
||||
|
@@ -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 }}
|
@@ -0,0 +1 @@
|
||||
{% load i18n %}{% blocktrans %}New account created on {{site_name}}{% endblocktrans %}
|
0
tests/seahub/thirdpart/registration/__init__.py
Normal file
0
tests/seahub/thirdpart/registration/__init__.py
Normal file
33
tests/seahub/thirdpart/registration/test_models.py
Normal file
33
tests/seahub/thirdpart/registration/test_models.py
Normal 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
|
@@ -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)
|
||||
|
@@ -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
|
||||
|
||||
|
Reference in New Issue
Block a user