add disable_3pid_changes

This commit is contained in:
dklimpel 2020-03-08 21:58:12 +01:00
parent 20545a2199
commit 99bbe177b6
3 changed files with 21 additions and 0 deletions

View file

@ -1065,6 +1065,11 @@ account_threepid_delegates:
#disable_set_displayname: false #disable_set_displayname: false
#disable_set_avatar_url: false #disable_set_avatar_url: false
# If true, stop users from trying to change the 3PIDs associated with
# their accounts.
#
#disable_3pid_changes: false
# Users who register on this homeserver will automatically be joined # Users who register on this homeserver will automatically be joined
# to these rooms # to these rooms
# #

View file

@ -131,6 +131,7 @@ class RegistrationConfig(Config):
self.disable_set_displayname = config.get("disable_set_displayname", False) self.disable_set_displayname = config.get("disable_set_displayname", False)
self.disable_set_avatar_url = config.get("disable_set_avatar_url", False) self.disable_set_avatar_url = config.get("disable_set_avatar_url", False)
self.disable_3pid_changes = config.get("disable_3pid_changes", False)
self.disable_msisdn_registration = config.get( self.disable_msisdn_registration = config.get(
"disable_msisdn_registration", False "disable_msisdn_registration", False
@ -341,6 +342,11 @@ class RegistrationConfig(Config):
#disable_set_displayname: false #disable_set_displayname: false
#disable_set_avatar_url: false #disable_set_avatar_url: false
# If true, stop users from trying to change the 3PIDs associated with
# their accounts.
#
#disable_3pid_changes: false
# Users who register on this homeserver will automatically be joined # Users who register on this homeserver will automatically be joined
# to these rooms # to these rooms
# #

View file

@ -599,6 +599,9 @@ class ThreepidRestServlet(RestServlet):
return 200, {"threepids": threepids} return 200, {"threepids": threepids}
async def on_POST(self, request): async def on_POST(self, request):
if self.hs.config.disable_3pid_changes:
raise SynapseError(400, "3PID changes disabled on this server")
requester = await self.auth.get_user_by_req(request) requester = await self.auth.get_user_by_req(request)
user_id = requester.user.to_string() user_id = requester.user.to_string()
body = parse_json_object_from_request(request) body = parse_json_object_from_request(request)
@ -643,6 +646,9 @@ class ThreepidAddRestServlet(RestServlet):
@interactive_auth_handler @interactive_auth_handler
async def on_POST(self, request): async def on_POST(self, request):
if self.hs.config.disable_3pid_changes:
raise SynapseError(400, "3PID changes disabled on this server")
requester = await self.auth.get_user_by_req(request) requester = await self.auth.get_user_by_req(request)
user_id = requester.user.to_string() user_id = requester.user.to_string()
body = parse_json_object_from_request(request) body = parse_json_object_from_request(request)
@ -738,10 +744,14 @@ class ThreepidDeleteRestServlet(RestServlet):
def __init__(self, hs): def __init__(self, hs):
super(ThreepidDeleteRestServlet, self).__init__() super(ThreepidDeleteRestServlet, self).__init__()
self.hs = hs
self.auth = hs.get_auth() self.auth = hs.get_auth()
self.auth_handler = hs.get_auth_handler() self.auth_handler = hs.get_auth_handler()
async def on_POST(self, request): async def on_POST(self, request):
if self.hs.config.disable_3pid_changes:
raise SynapseError(400, "3PID changes disabled on this server")
body = parse_json_object_from_request(request) body = parse_json_object_from_request(request)
assert_params_in_dict(body, ["medium", "address"]) assert_params_in_dict(body, ["medium", "address"])