Email notifications for new users when creating via the Admin API. (#7267)
This commit is contained in:
parent
df8a3cef6b
commit
901b1fa561
|
@ -0,0 +1 @@
|
||||||
|
Fix email notifications not being enabled for new users when created via the Admin API.
|
|
@ -142,6 +142,7 @@ class UserRestServletV2(RestServlet):
|
||||||
self.set_password_handler = hs.get_set_password_handler()
|
self.set_password_handler = hs.get_set_password_handler()
|
||||||
self.deactivate_account_handler = hs.get_deactivate_account_handler()
|
self.deactivate_account_handler = hs.get_deactivate_account_handler()
|
||||||
self.registration_handler = hs.get_registration_handler()
|
self.registration_handler = hs.get_registration_handler()
|
||||||
|
self.pusher_pool = hs.get_pusherpool()
|
||||||
|
|
||||||
async def on_GET(self, request, user_id):
|
async def on_GET(self, request, user_id):
|
||||||
await assert_requester_is_admin(self.auth, request)
|
await assert_requester_is_admin(self.auth, request)
|
||||||
|
@ -281,6 +282,21 @@ class UserRestServletV2(RestServlet):
|
||||||
await self.auth_handler.add_threepid(
|
await self.auth_handler.add_threepid(
|
||||||
user_id, threepid["medium"], threepid["address"], current_time
|
user_id, threepid["medium"], threepid["address"], current_time
|
||||||
)
|
)
|
||||||
|
if (
|
||||||
|
self.hs.config.email_enable_notifs
|
||||||
|
and self.hs.config.email_notif_for_new_users
|
||||||
|
):
|
||||||
|
await self.pusher_pool.add_pusher(
|
||||||
|
user_id=user_id,
|
||||||
|
access_token=None,
|
||||||
|
kind="email",
|
||||||
|
app_id="m.email",
|
||||||
|
app_display_name="Email Notifications",
|
||||||
|
device_display_name=threepid["address"],
|
||||||
|
pushkey=threepid["address"],
|
||||||
|
lang=None, # We don't know a user's language here
|
||||||
|
data={},
|
||||||
|
)
|
||||||
|
|
||||||
if "avatar_url" in body and type(body["avatar_url"]) == str:
|
if "avatar_url" in body and type(body["avatar_url"]) == str:
|
||||||
await self.profile_handler.set_avatar_url(
|
await self.profile_handler.set_avatar_url(
|
||||||
|
|
|
@ -516,6 +516,81 @@ class UserRestTestCase(unittest.HomeserverTestCase):
|
||||||
self.assertEqual(False, channel.json_body["is_guest"])
|
self.assertEqual(False, channel.json_body["is_guest"])
|
||||||
self.assertEqual(False, channel.json_body["deactivated"])
|
self.assertEqual(False, channel.json_body["deactivated"])
|
||||||
|
|
||||||
|
def test_create_user_email_notif_for_new_users(self):
|
||||||
|
"""
|
||||||
|
Check that a new regular user is created successfully and
|
||||||
|
got an email pusher.
|
||||||
|
"""
|
||||||
|
self.hs.config.registration_shared_secret = None
|
||||||
|
self.hs.config.email_enable_notifs = True
|
||||||
|
self.hs.config.email_notif_for_new_users = True
|
||||||
|
url = "/_synapse/admin/v2/users/@bob:test"
|
||||||
|
|
||||||
|
# Create user
|
||||||
|
body = json.dumps(
|
||||||
|
{
|
||||||
|
"password": "abc123",
|
||||||
|
"threepids": [{"medium": "email", "address": "bob@bob.bob"}],
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
request, channel = self.make_request(
|
||||||
|
"PUT",
|
||||||
|
url,
|
||||||
|
access_token=self.admin_user_tok,
|
||||||
|
content=body.encode(encoding="utf_8"),
|
||||||
|
)
|
||||||
|
self.render(request)
|
||||||
|
|
||||||
|
self.assertEqual(201, int(channel.result["code"]), msg=channel.result["body"])
|
||||||
|
self.assertEqual("@bob:test", channel.json_body["name"])
|
||||||
|
self.assertEqual("email", channel.json_body["threepids"][0]["medium"])
|
||||||
|
self.assertEqual("bob@bob.bob", channel.json_body["threepids"][0]["address"])
|
||||||
|
|
||||||
|
pushers = self.get_success(
|
||||||
|
self.store.get_pushers_by({"user_name": "@bob:test"})
|
||||||
|
)
|
||||||
|
pushers = list(pushers)
|
||||||
|
self.assertEqual(len(pushers), 1)
|
||||||
|
self.assertEqual("@bob:test", pushers[0]["user_name"])
|
||||||
|
|
||||||
|
def test_create_user_email_no_notif_for_new_users(self):
|
||||||
|
"""
|
||||||
|
Check that a new regular user is created successfully and
|
||||||
|
got not an email pusher.
|
||||||
|
"""
|
||||||
|
self.hs.config.registration_shared_secret = None
|
||||||
|
self.hs.config.email_enable_notifs = False
|
||||||
|
self.hs.config.email_notif_for_new_users = False
|
||||||
|
url = "/_synapse/admin/v2/users/@bob:test"
|
||||||
|
|
||||||
|
# Create user
|
||||||
|
body = json.dumps(
|
||||||
|
{
|
||||||
|
"password": "abc123",
|
||||||
|
"threepids": [{"medium": "email", "address": "bob@bob.bob"}],
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
request, channel = self.make_request(
|
||||||
|
"PUT",
|
||||||
|
url,
|
||||||
|
access_token=self.admin_user_tok,
|
||||||
|
content=body.encode(encoding="utf_8"),
|
||||||
|
)
|
||||||
|
self.render(request)
|
||||||
|
|
||||||
|
self.assertEqual(201, int(channel.result["code"]), msg=channel.result["body"])
|
||||||
|
self.assertEqual("@bob:test", channel.json_body["name"])
|
||||||
|
self.assertEqual("email", channel.json_body["threepids"][0]["medium"])
|
||||||
|
self.assertEqual("bob@bob.bob", channel.json_body["threepids"][0]["address"])
|
||||||
|
|
||||||
|
pushers = self.get_success(
|
||||||
|
self.store.get_pushers_by({"user_name": "@bob:test"})
|
||||||
|
)
|
||||||
|
pushers = list(pushers)
|
||||||
|
self.assertEqual(len(pushers), 0)
|
||||||
|
|
||||||
def test_set_password(self):
|
def test_set_password(self):
|
||||||
"""
|
"""
|
||||||
Test setting a new password for another user.
|
Test setting a new password for another user.
|
||||||
|
|
Loading…
Reference in New Issue