mirror of
https://mau.dev/maunium/synapse.git
synced 2024-12-14 23:03:51 +01:00
Merge pull request #4670 from matrix-org/erikj/register_login_split
Split /login into client_reader
This commit is contained in:
commit
32590b7139
5 changed files with 47 additions and 43 deletions
|
@ -1 +1 @@
|
||||||
Allow registration to be handled by a worker instance.
|
Allow registration and login to be handled by a worker instance.
|
||||||
|
|
1
changelog.d/4670.feature
Normal file
1
changelog.d/4670.feature
Normal file
|
@ -0,0 +1 @@
|
||||||
|
Allow registration and login to be handled by a worker instance.
|
|
@ -222,11 +222,12 @@ following regular expressions::
|
||||||
^/_matrix/client/(api/v1|r0|unstable)/rooms/.*/context/.*$
|
^/_matrix/client/(api/v1|r0|unstable)/rooms/.*/context/.*$
|
||||||
^/_matrix/client/(api/v1|r0|unstable)/rooms/.*/members$
|
^/_matrix/client/(api/v1|r0|unstable)/rooms/.*/members$
|
||||||
^/_matrix/client/(api/v1|r0|unstable)/rooms/.*/state$
|
^/_matrix/client/(api/v1|r0|unstable)/rooms/.*/state$
|
||||||
|
^/_matrix/client/(api/v1|r0|unstable)/login$
|
||||||
|
|
||||||
Additionally, the following REST endpoints can be handled, but all requests must
|
Additionally, the following REST endpoints can be handled, but all requests must
|
||||||
be routed to the same instance::
|
be routed to the same instance::
|
||||||
|
|
||||||
^/_matrix/client/(api/v1|r0|unstable)/register$
|
^/_matrix/client/(r0|unstable)/register$
|
||||||
|
|
||||||
|
|
||||||
``synapse.app.user_dir``
|
``synapse.app.user_dir``
|
||||||
|
|
|
@ -40,6 +40,7 @@ from synapse.replication.slave.storage.registration import SlavedRegistrationSto
|
||||||
from synapse.replication.slave.storage.room import RoomStore
|
from synapse.replication.slave.storage.room import RoomStore
|
||||||
from synapse.replication.slave.storage.transactions import SlavedTransactionStore
|
from synapse.replication.slave.storage.transactions import SlavedTransactionStore
|
||||||
from synapse.replication.tcp.client import ReplicationClientHandler
|
from synapse.replication.tcp.client import ReplicationClientHandler
|
||||||
|
from synapse.rest.client.v1.login import LoginRestServlet
|
||||||
from synapse.rest.client.v1.room import (
|
from synapse.rest.client.v1.room import (
|
||||||
JoinedRoomMemberListRestServlet,
|
JoinedRoomMemberListRestServlet,
|
||||||
PublicRoomListRestServlet,
|
PublicRoomListRestServlet,
|
||||||
|
@ -94,6 +95,7 @@ class ClientReaderServer(HomeServer):
|
||||||
RoomStateRestServlet(self).register(resource)
|
RoomStateRestServlet(self).register(resource)
|
||||||
RoomEventContextServlet(self).register(resource)
|
RoomEventContextServlet(self).register(resource)
|
||||||
RegisterRestServlet(self).register(resource)
|
RegisterRestServlet(self).register(resource)
|
||||||
|
LoginRestServlet(self).register(resource)
|
||||||
|
|
||||||
resources.update({
|
resources.update({
|
||||||
"/_matrix/client/r0": resource,
|
"/_matrix/client/r0": resource,
|
||||||
|
|
|
@ -254,6 +254,47 @@ class RegistrationWorkerStore(SQLBaseStore):
|
||||||
defer.returnValue(ret["guest_access_token"])
|
defer.returnValue(ret["guest_access_token"])
|
||||||
defer.returnValue(None)
|
defer.returnValue(None)
|
||||||
|
|
||||||
|
@defer.inlineCallbacks
|
||||||
|
def get_user_id_by_threepid(self, medium, address):
|
||||||
|
"""Returns user id from threepid
|
||||||
|
|
||||||
|
Args:
|
||||||
|
medium (str): threepid medium e.g. email
|
||||||
|
address (str): threepid address e.g. me@example.com
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
Deferred[str|None]: user id or None if no user id/threepid mapping exists
|
||||||
|
"""
|
||||||
|
user_id = yield self.runInteraction(
|
||||||
|
"get_user_id_by_threepid", self.get_user_id_by_threepid_txn,
|
||||||
|
medium, address
|
||||||
|
)
|
||||||
|
defer.returnValue(user_id)
|
||||||
|
|
||||||
|
def get_user_id_by_threepid_txn(self, txn, medium, address):
|
||||||
|
"""Returns user id from threepid
|
||||||
|
|
||||||
|
Args:
|
||||||
|
txn (cursor):
|
||||||
|
medium (str): threepid medium e.g. email
|
||||||
|
address (str): threepid address e.g. me@example.com
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
str|None: user id or None if no user id/threepid mapping exists
|
||||||
|
"""
|
||||||
|
ret = self._simple_select_one_txn(
|
||||||
|
txn,
|
||||||
|
"user_threepids",
|
||||||
|
{
|
||||||
|
"medium": medium,
|
||||||
|
"address": address
|
||||||
|
},
|
||||||
|
['user_id'], True
|
||||||
|
)
|
||||||
|
if ret:
|
||||||
|
return ret['user_id']
|
||||||
|
return None
|
||||||
|
|
||||||
|
|
||||||
class RegistrationStore(RegistrationWorkerStore,
|
class RegistrationStore(RegistrationWorkerStore,
|
||||||
background_updates.BackgroundUpdateStore):
|
background_updates.BackgroundUpdateStore):
|
||||||
|
@ -613,47 +654,6 @@ class RegistrationStore(RegistrationWorkerStore,
|
||||||
)
|
)
|
||||||
defer.returnValue(ret)
|
defer.returnValue(ret)
|
||||||
|
|
||||||
@defer.inlineCallbacks
|
|
||||||
def get_user_id_by_threepid(self, medium, address):
|
|
||||||
"""Returns user id from threepid
|
|
||||||
|
|
||||||
Args:
|
|
||||||
medium (str): threepid medium e.g. email
|
|
||||||
address (str): threepid address e.g. me@example.com
|
|
||||||
|
|
||||||
Returns:
|
|
||||||
Deferred[str|None]: user id or None if no user id/threepid mapping exists
|
|
||||||
"""
|
|
||||||
user_id = yield self.runInteraction(
|
|
||||||
"get_user_id_by_threepid", self.get_user_id_by_threepid_txn,
|
|
||||||
medium, address
|
|
||||||
)
|
|
||||||
defer.returnValue(user_id)
|
|
||||||
|
|
||||||
def get_user_id_by_threepid_txn(self, txn, medium, address):
|
|
||||||
"""Returns user id from threepid
|
|
||||||
|
|
||||||
Args:
|
|
||||||
txn (cursor):
|
|
||||||
medium (str): threepid medium e.g. email
|
|
||||||
address (str): threepid address e.g. me@example.com
|
|
||||||
|
|
||||||
Returns:
|
|
||||||
str|None: user id or None if no user id/threepid mapping exists
|
|
||||||
"""
|
|
||||||
ret = self._simple_select_one_txn(
|
|
||||||
txn,
|
|
||||||
"user_threepids",
|
|
||||||
{
|
|
||||||
"medium": medium,
|
|
||||||
"address": address
|
|
||||||
},
|
|
||||||
['user_id'], True
|
|
||||||
)
|
|
||||||
if ret:
|
|
||||||
return ret['user_id']
|
|
||||||
return None
|
|
||||||
|
|
||||||
def user_delete_threepid(self, user_id, medium, address):
|
def user_delete_threepid(self, user_id, medium, address):
|
||||||
return self._simple_delete(
|
return self._simple_delete(
|
||||||
"user_threepids",
|
"user_threepids",
|
||||||
|
|
Loading…
Reference in a new issue