Remove support for invite_3pid_guest. (#5625)
This has never been documented, and I'm not sure it's ever been used outside sytest. It's quite a lot of poorly-maintained code, so I'd like to get rid of it. For now I haven't removed the database table; I suggest we leave that for a future clearout.pull/5628/head
parent
a6a776f3d8
commit
80cc82a445
|
@ -0,0 +1 @@
|
||||||
|
Remove support for the `invite_3pid_guest` configuration setting.
|
|
@ -71,9 +71,8 @@ class RegistrationConfig(Config):
|
||||||
self.default_identity_server = config.get("default_identity_server")
|
self.default_identity_server = config.get("default_identity_server")
|
||||||
self.allow_guest_access = config.get("allow_guest_access", False)
|
self.allow_guest_access = config.get("allow_guest_access", False)
|
||||||
|
|
||||||
self.invite_3pid_guest = self.allow_guest_access and config.get(
|
if config.get("invite_3pid_guest", False):
|
||||||
"invite_3pid_guest", False
|
raise ConfigError("invite_3pid_guest is no longer supported")
|
||||||
)
|
|
||||||
|
|
||||||
self.auto_join_rooms = config.get("auto_join_rooms", [])
|
self.auto_join_rooms = config.get("auto_join_rooms", [])
|
||||||
for room_alias in self.auto_join_rooms:
|
for room_alias in self.auto_join_rooms:
|
||||||
|
|
|
@ -556,36 +556,6 @@ class RegistrationHandler(BaseHandler):
|
||||||
|
|
||||||
defer.returnValue((user_id, token))
|
defer.returnValue((user_id, token))
|
||||||
|
|
||||||
@defer.inlineCallbacks
|
|
||||||
def get_or_register_3pid_guest(self, medium, address, inviter_user_id):
|
|
||||||
"""Get a guest access token for a 3PID, creating a guest account if
|
|
||||||
one doesn't already exist.
|
|
||||||
|
|
||||||
Args:
|
|
||||||
medium (str)
|
|
||||||
address (str)
|
|
||||||
inviter_user_id (str): The user ID who is trying to invite the
|
|
||||||
3PID
|
|
||||||
|
|
||||||
Returns:
|
|
||||||
Deferred[(str, str)]: A 2-tuple of `(user_id, access_token)` of the
|
|
||||||
3PID guest account.
|
|
||||||
"""
|
|
||||||
access_token = yield self.store.get_3pid_guest_access_token(medium, address)
|
|
||||||
if access_token:
|
|
||||||
user_info = yield self.auth.get_user_by_access_token(access_token)
|
|
||||||
|
|
||||||
defer.returnValue((user_info["user"].to_string(), access_token))
|
|
||||||
|
|
||||||
user_id, access_token = yield self.register(
|
|
||||||
generate_token=True, make_guest=True
|
|
||||||
)
|
|
||||||
access_token = yield self.store.save_or_get_3pid_guest_access_token(
|
|
||||||
medium, address, access_token, inviter_user_id
|
|
||||||
)
|
|
||||||
|
|
||||||
defer.returnValue((user_id, access_token))
|
|
||||||
|
|
||||||
@defer.inlineCallbacks
|
@defer.inlineCallbacks
|
||||||
def _join_user_to_room(self, requester, room_identifier):
|
def _join_user_to_room(self, requester, room_identifier):
|
||||||
room_id = None
|
room_id = None
|
||||||
|
|
|
@ -118,24 +118,6 @@ class RoomMemberHandler(object):
|
||||||
"""
|
"""
|
||||||
raise NotImplementedError()
|
raise NotImplementedError()
|
||||||
|
|
||||||
@abc.abstractmethod
|
|
||||||
def get_or_register_3pid_guest(self, requester, medium, address, inviter_user_id):
|
|
||||||
"""Get a guest access token for a 3PID, creating a guest account if
|
|
||||||
one doesn't already exist.
|
|
||||||
|
|
||||||
Args:
|
|
||||||
requester (Requester)
|
|
||||||
medium (str)
|
|
||||||
address (str)
|
|
||||||
inviter_user_id (str): The user ID who is trying to invite the
|
|
||||||
3PID
|
|
||||||
|
|
||||||
Returns:
|
|
||||||
Deferred[(str, str)]: A 2-tuple of `(user_id, access_token)` of the
|
|
||||||
3PID guest account.
|
|
||||||
"""
|
|
||||||
raise NotImplementedError()
|
|
||||||
|
|
||||||
@abc.abstractmethod
|
@abc.abstractmethod
|
||||||
def _user_joined_room(self, target, room_id):
|
def _user_joined_room(self, target, room_id):
|
||||||
"""Notifies distributor on master process that the user has joined the
|
"""Notifies distributor on master process that the user has joined the
|
||||||
|
@ -890,21 +872,6 @@ class RoomMemberHandler(object):
|
||||||
"sender_avatar_url": inviter_avatar_url,
|
"sender_avatar_url": inviter_avatar_url,
|
||||||
}
|
}
|
||||||
|
|
||||||
if self.config.invite_3pid_guest:
|
|
||||||
guest_user_id, guest_access_token = yield self.get_or_register_3pid_guest(
|
|
||||||
requester=requester,
|
|
||||||
medium=medium,
|
|
||||||
address=address,
|
|
||||||
inviter_user_id=inviter_user_id,
|
|
||||||
)
|
|
||||||
|
|
||||||
invite_config.update(
|
|
||||||
{
|
|
||||||
"guest_access_token": guest_access_token,
|
|
||||||
"guest_user_id": guest_user_id,
|
|
||||||
}
|
|
||||||
)
|
|
||||||
|
|
||||||
data = yield self.simple_http_client.post_urlencoded_get_json(
|
data = yield self.simple_http_client.post_urlencoded_get_json(
|
||||||
is_url, invite_config
|
is_url, invite_config
|
||||||
)
|
)
|
||||||
|
@ -1010,12 +977,6 @@ class RoomMemberMasterHandler(RoomMemberHandler):
|
||||||
yield self.store.locally_reject_invite(target.to_string(), room_id)
|
yield self.store.locally_reject_invite(target.to_string(), room_id)
|
||||||
defer.returnValue({})
|
defer.returnValue({})
|
||||||
|
|
||||||
def get_or_register_3pid_guest(self, requester, medium, address, inviter_user_id):
|
|
||||||
"""Implements RoomMemberHandler.get_or_register_3pid_guest
|
|
||||||
"""
|
|
||||||
rg = self.registration_handler
|
|
||||||
return rg.get_or_register_3pid_guest(medium, address, inviter_user_id)
|
|
||||||
|
|
||||||
def _user_joined_room(self, target, room_id):
|
def _user_joined_room(self, target, room_id):
|
||||||
"""Implements RoomMemberHandler._user_joined_room
|
"""Implements RoomMemberHandler._user_joined_room
|
||||||
"""
|
"""
|
||||||
|
|
|
@ -20,7 +20,6 @@ from twisted.internet import defer
|
||||||
from synapse.api.errors import SynapseError
|
from synapse.api.errors import SynapseError
|
||||||
from synapse.handlers.room_member import RoomMemberHandler
|
from synapse.handlers.room_member import RoomMemberHandler
|
||||||
from synapse.replication.http.membership import (
|
from synapse.replication.http.membership import (
|
||||||
ReplicationRegister3PIDGuestRestServlet as Repl3PID,
|
|
||||||
ReplicationRemoteJoinRestServlet as ReplRemoteJoin,
|
ReplicationRemoteJoinRestServlet as ReplRemoteJoin,
|
||||||
ReplicationRemoteRejectInviteRestServlet as ReplRejectInvite,
|
ReplicationRemoteRejectInviteRestServlet as ReplRejectInvite,
|
||||||
ReplicationUserJoinedLeftRoomRestServlet as ReplJoinedLeft,
|
ReplicationUserJoinedLeftRoomRestServlet as ReplJoinedLeft,
|
||||||
|
@ -33,7 +32,6 @@ class RoomMemberWorkerHandler(RoomMemberHandler):
|
||||||
def __init__(self, hs):
|
def __init__(self, hs):
|
||||||
super(RoomMemberWorkerHandler, self).__init__(hs)
|
super(RoomMemberWorkerHandler, self).__init__(hs)
|
||||||
|
|
||||||
self._get_register_3pid_client = Repl3PID.make_client(hs)
|
|
||||||
self._remote_join_client = ReplRemoteJoin.make_client(hs)
|
self._remote_join_client = ReplRemoteJoin.make_client(hs)
|
||||||
self._remote_reject_client = ReplRejectInvite.make_client(hs)
|
self._remote_reject_client = ReplRejectInvite.make_client(hs)
|
||||||
self._notify_change_client = ReplJoinedLeft.make_client(hs)
|
self._notify_change_client = ReplJoinedLeft.make_client(hs)
|
||||||
|
@ -80,13 +78,3 @@ class RoomMemberWorkerHandler(RoomMemberHandler):
|
||||||
return self._notify_change_client(
|
return self._notify_change_client(
|
||||||
user_id=target.to_string(), room_id=room_id, change="left"
|
user_id=target.to_string(), room_id=room_id, change="left"
|
||||||
)
|
)
|
||||||
|
|
||||||
def get_or_register_3pid_guest(self, requester, medium, address, inviter_user_id):
|
|
||||||
"""Implements RoomMemberHandler.get_or_register_3pid_guest
|
|
||||||
"""
|
|
||||||
return self._get_register_3pid_client(
|
|
||||||
requester=requester,
|
|
||||||
medium=medium,
|
|
||||||
address=address,
|
|
||||||
inviter_user_id=inviter_user_id,
|
|
||||||
)
|
|
||||||
|
|
|
@ -156,70 +156,6 @@ class ReplicationRemoteRejectInviteRestServlet(ReplicationEndpoint):
|
||||||
defer.returnValue((200, ret))
|
defer.returnValue((200, ret))
|
||||||
|
|
||||||
|
|
||||||
class ReplicationRegister3PIDGuestRestServlet(ReplicationEndpoint):
|
|
||||||
"""Gets/creates a guest account for given 3PID.
|
|
||||||
|
|
||||||
Request format:
|
|
||||||
|
|
||||||
POST /_synapse/replication/get_or_register_3pid_guest/
|
|
||||||
|
|
||||||
{
|
|
||||||
"requester": ...,
|
|
||||||
"medium": ...,
|
|
||||||
"address": ...,
|
|
||||||
"inviter_user_id": ...
|
|
||||||
}
|
|
||||||
"""
|
|
||||||
|
|
||||||
NAME = "get_or_register_3pid_guest"
|
|
||||||
PATH_ARGS = ()
|
|
||||||
|
|
||||||
def __init__(self, hs):
|
|
||||||
super(ReplicationRegister3PIDGuestRestServlet, self).__init__(hs)
|
|
||||||
|
|
||||||
self.registeration_handler = hs.get_registration_handler()
|
|
||||||
self.store = hs.get_datastore()
|
|
||||||
self.clock = hs.get_clock()
|
|
||||||
|
|
||||||
@staticmethod
|
|
||||||
def _serialize_payload(requester, medium, address, inviter_user_id):
|
|
||||||
"""
|
|
||||||
Args:
|
|
||||||
requester(Requester)
|
|
||||||
medium (str)
|
|
||||||
address (str)
|
|
||||||
inviter_user_id (str): The user ID who is trying to invite the
|
|
||||||
3PID
|
|
||||||
"""
|
|
||||||
return {
|
|
||||||
"requester": requester.serialize(),
|
|
||||||
"medium": medium,
|
|
||||||
"address": address,
|
|
||||||
"inviter_user_id": inviter_user_id,
|
|
||||||
}
|
|
||||||
|
|
||||||
@defer.inlineCallbacks
|
|
||||||
def _handle_request(self, request):
|
|
||||||
content = parse_json_object_from_request(request)
|
|
||||||
|
|
||||||
medium = content["medium"]
|
|
||||||
address = content["address"]
|
|
||||||
inviter_user_id = content["inviter_user_id"]
|
|
||||||
|
|
||||||
requester = Requester.deserialize(self.store, content["requester"])
|
|
||||||
|
|
||||||
if requester.user:
|
|
||||||
request.authenticated_entity = requester.user.to_string()
|
|
||||||
|
|
||||||
logger.info("get_or_register_3pid_guest: %r", content)
|
|
||||||
|
|
||||||
ret = yield self.registeration_handler.get_or_register_3pid_guest(
|
|
||||||
medium, address, inviter_user_id
|
|
||||||
)
|
|
||||||
|
|
||||||
defer.returnValue((200, ret))
|
|
||||||
|
|
||||||
|
|
||||||
class ReplicationUserJoinedLeftRoomRestServlet(ReplicationEndpoint):
|
class ReplicationUserJoinedLeftRoomRestServlet(ReplicationEndpoint):
|
||||||
"""Notifies that a user has joined or left the room
|
"""Notifies that a user has joined or left the room
|
||||||
|
|
||||||
|
@ -272,5 +208,4 @@ class ReplicationUserJoinedLeftRoomRestServlet(ReplicationEndpoint):
|
||||||
def register_servlets(hs, http_server):
|
def register_servlets(hs, http_server):
|
||||||
ReplicationRemoteJoinRestServlet(hs).register(http_server)
|
ReplicationRemoteJoinRestServlet(hs).register(http_server)
|
||||||
ReplicationRemoteRejectInviteRestServlet(hs).register(http_server)
|
ReplicationRemoteRejectInviteRestServlet(hs).register(http_server)
|
||||||
ReplicationRegister3PIDGuestRestServlet(hs).register(http_server)
|
|
||||||
ReplicationUserJoinedLeftRoomRestServlet(hs).register(http_server)
|
ReplicationUserJoinedLeftRoomRestServlet(hs).register(http_server)
|
||||||
|
|
|
@ -432,19 +432,6 @@ class RegistrationWorkerStore(SQLBaseStore):
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
@defer.inlineCallbacks
|
|
||||||
def get_3pid_guest_access_token(self, medium, address):
|
|
||||||
ret = yield self._simple_select_one(
|
|
||||||
"threepid_guest_access_tokens",
|
|
||||||
{"medium": medium, "address": address},
|
|
||||||
["guest_access_token"],
|
|
||||||
True,
|
|
||||||
"get_3pid_guest_access_token",
|
|
||||||
)
|
|
||||||
if ret:
|
|
||||||
defer.returnValue(ret["guest_access_token"])
|
|
||||||
defer.returnValue(None)
|
|
||||||
|
|
||||||
@defer.inlineCallbacks
|
@defer.inlineCallbacks
|
||||||
def get_user_id_by_threepid(self, medium, address, require_verified=False):
|
def get_user_id_by_threepid(self, medium, address, require_verified=False):
|
||||||
"""Returns user id from threepid
|
"""Returns user id from threepid
|
||||||
|
@ -979,40 +966,6 @@ class RegistrationStore(
|
||||||
|
|
||||||
defer.returnValue(res if res else False)
|
defer.returnValue(res if res else False)
|
||||||
|
|
||||||
@defer.inlineCallbacks
|
|
||||||
def save_or_get_3pid_guest_access_token(
|
|
||||||
self, medium, address, access_token, inviter_user_id
|
|
||||||
):
|
|
||||||
"""
|
|
||||||
Gets the 3pid's guest access token if exists, else saves access_token.
|
|
||||||
|
|
||||||
Args:
|
|
||||||
medium (str): Medium of the 3pid. Must be "email".
|
|
||||||
address (str): 3pid address.
|
|
||||||
access_token (str): The access token to persist if none is
|
|
||||||
already persisted.
|
|
||||||
inviter_user_id (str): User ID of the inviter.
|
|
||||||
|
|
||||||
Returns:
|
|
||||||
deferred str: Whichever access token is persisted at the end
|
|
||||||
of this function call.
|
|
||||||
"""
|
|
||||||
|
|
||||||
def insert(txn):
|
|
||||||
txn.execute(
|
|
||||||
"INSERT INTO threepid_guest_access_tokens "
|
|
||||||
"(medium, address, guest_access_token, first_inviter) "
|
|
||||||
"VALUES (?, ?, ?, ?)",
|
|
||||||
(medium, address, access_token, inviter_user_id),
|
|
||||||
)
|
|
||||||
|
|
||||||
try:
|
|
||||||
yield self.runInteraction("save_3pid_guest_access_token", insert)
|
|
||||||
defer.returnValue(access_token)
|
|
||||||
except self.database_engine.module.IntegrityError:
|
|
||||||
ret = yield self.get_3pid_guest_access_token(medium, address)
|
|
||||||
defer.returnValue(ret)
|
|
||||||
|
|
||||||
def add_user_pending_deactivation(self, user_id):
|
def add_user_pending_deactivation(self, user_id):
|
||||||
"""
|
"""
|
||||||
Adds a user to the table of users who need to be parted from all the rooms they're
|
Adds a user to the table of users who need to be parted from all the rooms they're
|
||||||
|
|
Loading…
Reference in New Issue