mirror of
https://git.anonymousland.org/anonymousland/synapse.git
synced 2025-06-28 10:37:06 -04:00
Port rest.client.v2
This commit is contained in:
parent
af5d0ebc72
commit
9c41ba4c5f
23 changed files with 361 additions and 505 deletions
|
@ -20,8 +20,6 @@ from typing import List, Union
|
|||
|
||||
from six import string_types
|
||||
|
||||
from twisted.internet import defer
|
||||
|
||||
import synapse
|
||||
import synapse.types
|
||||
from synapse.api.constants import LoginType
|
||||
|
@ -102,8 +100,7 @@ class EmailRegisterRequestTokenRestServlet(RestServlet):
|
|||
template_text=template_text,
|
||||
)
|
||||
|
||||
@defer.inlineCallbacks
|
||||
def on_POST(self, request):
|
||||
async def on_POST(self, request):
|
||||
if self.hs.config.threepid_behaviour_email == ThreepidBehaviour.OFF:
|
||||
if self.hs.config.local_threepid_handling_disabled_due_to_email_config:
|
||||
logger.warning(
|
||||
|
@ -129,7 +126,7 @@ class EmailRegisterRequestTokenRestServlet(RestServlet):
|
|||
Codes.THREEPID_DENIED,
|
||||
)
|
||||
|
||||
existing_user_id = yield self.hs.get_datastore().get_user_id_by_threepid(
|
||||
existing_user_id = await self.hs.get_datastore().get_user_id_by_threepid(
|
||||
"email", body["email"]
|
||||
)
|
||||
|
||||
|
@ -140,7 +137,7 @@ class EmailRegisterRequestTokenRestServlet(RestServlet):
|
|||
assert self.hs.config.account_threepid_delegate_email
|
||||
|
||||
# Have the configured identity server handle the request
|
||||
ret = yield self.identity_handler.requestEmailToken(
|
||||
ret = await self.identity_handler.requestEmailToken(
|
||||
self.hs.config.account_threepid_delegate_email,
|
||||
email,
|
||||
client_secret,
|
||||
|
@ -149,7 +146,7 @@ class EmailRegisterRequestTokenRestServlet(RestServlet):
|
|||
)
|
||||
else:
|
||||
# Send registration emails from Synapse
|
||||
sid = yield self.identity_handler.send_threepid_validation(
|
||||
sid = await self.identity_handler.send_threepid_validation(
|
||||
email,
|
||||
client_secret,
|
||||
send_attempt,
|
||||
|
@ -175,8 +172,7 @@ class MsisdnRegisterRequestTokenRestServlet(RestServlet):
|
|||
self.hs = hs
|
||||
self.identity_handler = hs.get_handlers().identity_handler
|
||||
|
||||
@defer.inlineCallbacks
|
||||
def on_POST(self, request):
|
||||
async def on_POST(self, request):
|
||||
body = parse_json_object_from_request(request)
|
||||
|
||||
assert_params_in_dict(
|
||||
|
@ -197,7 +193,7 @@ class MsisdnRegisterRequestTokenRestServlet(RestServlet):
|
|||
Codes.THREEPID_DENIED,
|
||||
)
|
||||
|
||||
existing_user_id = yield self.hs.get_datastore().get_user_id_by_threepid(
|
||||
existing_user_id = await self.hs.get_datastore().get_user_id_by_threepid(
|
||||
"msisdn", msisdn
|
||||
)
|
||||
|
||||
|
@ -215,7 +211,7 @@ class MsisdnRegisterRequestTokenRestServlet(RestServlet):
|
|||
400, "Registration by phone number is not supported on this homeserver"
|
||||
)
|
||||
|
||||
ret = yield self.identity_handler.requestMsisdnToken(
|
||||
ret = await self.identity_handler.requestMsisdnToken(
|
||||
self.hs.config.account_threepid_delegate_msisdn,
|
||||
country,
|
||||
phone_number,
|
||||
|
@ -258,8 +254,7 @@ class RegistrationSubmitTokenServlet(RestServlet):
|
|||
[self.config.email_registration_template_failure_html],
|
||||
)
|
||||
|
||||
@defer.inlineCallbacks
|
||||
def on_GET(self, request, medium):
|
||||
async def on_GET(self, request, medium):
|
||||
if medium != "email":
|
||||
raise SynapseError(
|
||||
400, "This medium is currently not supported for registration"
|
||||
|
@ -280,7 +275,7 @@ class RegistrationSubmitTokenServlet(RestServlet):
|
|||
# Attempt to validate a 3PID session
|
||||
try:
|
||||
# Mark the session as valid
|
||||
next_link = yield self.store.validate_threepid_session(
|
||||
next_link = await self.store.validate_threepid_session(
|
||||
sid, client_secret, token, self.clock.time_msec()
|
||||
)
|
||||
|
||||
|
@ -338,8 +333,7 @@ class UsernameAvailabilityRestServlet(RestServlet):
|
|||
),
|
||||
)
|
||||
|
||||
@defer.inlineCallbacks
|
||||
def on_GET(self, request):
|
||||
async def on_GET(self, request):
|
||||
if not self.hs.config.enable_registration:
|
||||
raise SynapseError(
|
||||
403, "Registration has been disabled", errcode=Codes.FORBIDDEN
|
||||
|
@ -347,11 +341,11 @@ class UsernameAvailabilityRestServlet(RestServlet):
|
|||
|
||||
ip = self.hs.get_ip_from_request(request)
|
||||
with self.ratelimiter.ratelimit(ip) as wait_deferred:
|
||||
yield wait_deferred
|
||||
await wait_deferred
|
||||
|
||||
username = parse_string(request, "username", required=True)
|
||||
|
||||
yield self.registration_handler.check_username(username)
|
||||
await self.registration_handler.check_username(username)
|
||||
|
||||
return 200, {"available": True}
|
||||
|
||||
|
@ -382,8 +376,7 @@ class RegisterRestServlet(RestServlet):
|
|||
)
|
||||
|
||||
@interactive_auth_handler
|
||||
@defer.inlineCallbacks
|
||||
def on_POST(self, request):
|
||||
async def on_POST(self, request):
|
||||
body = parse_json_object_from_request(request)
|
||||
|
||||
client_addr = request.getClientIP()
|
||||
|
@ -408,7 +401,7 @@ class RegisterRestServlet(RestServlet):
|
|||
kind = request.args[b"kind"][0]
|
||||
|
||||
if kind == b"guest":
|
||||
ret = yield self._do_guest_registration(body, address=client_addr)
|
||||
ret = await self._do_guest_registration(body, address=client_addr)
|
||||
return ret
|
||||
elif kind != b"user":
|
||||
raise UnrecognizedRequestError(
|
||||
|
@ -435,7 +428,7 @@ class RegisterRestServlet(RestServlet):
|
|||
|
||||
appservice = None
|
||||
if self.auth.has_access_token(request):
|
||||
appservice = yield self.auth.get_appservice_by_req(request)
|
||||
appservice = await self.auth.get_appservice_by_req(request)
|
||||
|
||||
# fork off as soon as possible for ASes which have completely
|
||||
# different registration flows to normal users
|
||||
|
@ -455,7 +448,7 @@ class RegisterRestServlet(RestServlet):
|
|||
access_token = self.auth.get_access_token_from_request(request)
|
||||
|
||||
if isinstance(desired_username, string_types):
|
||||
result = yield self._do_appservice_registration(
|
||||
result = await self._do_appservice_registration(
|
||||
desired_username, access_token, body
|
||||
)
|
||||
return 200, result # we throw for non 200 responses
|
||||
|
@ -495,13 +488,13 @@ class RegisterRestServlet(RestServlet):
|
|||
)
|
||||
|
||||
if desired_username is not None:
|
||||
yield self.registration_handler.check_username(
|
||||
await self.registration_handler.check_username(
|
||||
desired_username,
|
||||
guest_access_token=guest_access_token,
|
||||
assigned_user_id=registered_user_id,
|
||||
)
|
||||
|
||||
auth_result, params, session_id = yield self.auth_handler.check_auth(
|
||||
auth_result, params, session_id = await self.auth_handler.check_auth(
|
||||
self._registration_flows, body, self.hs.get_ip_from_request(request)
|
||||
)
|
||||
|
||||
|
@ -557,7 +550,7 @@ class RegisterRestServlet(RestServlet):
|
|||
medium = auth_result[login_type]["medium"]
|
||||
address = auth_result[login_type]["address"]
|
||||
|
||||
existing_user_id = yield self.store.get_user_id_by_threepid(
|
||||
existing_user_id = await self.store.get_user_id_by_threepid(
|
||||
medium, address
|
||||
)
|
||||
|
||||
|
@ -568,7 +561,7 @@ class RegisterRestServlet(RestServlet):
|
|||
Codes.THREEPID_IN_USE,
|
||||
)
|
||||
|
||||
registered_user_id = yield self.registration_handler.register_user(
|
||||
registered_user_id = await self.registration_handler.register_user(
|
||||
localpart=desired_username,
|
||||
password=new_password,
|
||||
guest_access_token=guest_access_token,
|
||||
|
@ -581,7 +574,7 @@ class RegisterRestServlet(RestServlet):
|
|||
if is_threepid_reserved(
|
||||
self.hs.config.mau_limits_reserved_threepids, threepid
|
||||
):
|
||||
yield self.store.upsert_monthly_active_user(registered_user_id)
|
||||
await self.store.upsert_monthly_active_user(registered_user_id)
|
||||
|
||||
# remember that we've now registered that user account, and with
|
||||
# what user ID (since the user may not have specified)
|
||||
|
@ -591,12 +584,12 @@ class RegisterRestServlet(RestServlet):
|
|||
|
||||
registered = True
|
||||
|
||||
return_dict = yield self._create_registration_details(
|
||||
return_dict = await self._create_registration_details(
|
||||
registered_user_id, params
|
||||
)
|
||||
|
||||
if registered:
|
||||
yield self.registration_handler.post_registration_actions(
|
||||
await self.registration_handler.post_registration_actions(
|
||||
user_id=registered_user_id,
|
||||
auth_result=auth_result,
|
||||
access_token=return_dict.get("access_token"),
|
||||
|
@ -607,15 +600,13 @@ class RegisterRestServlet(RestServlet):
|
|||
def on_OPTIONS(self, _):
|
||||
return 200, {}
|
||||
|
||||
@defer.inlineCallbacks
|
||||
def _do_appservice_registration(self, username, as_token, body):
|
||||
user_id = yield self.registration_handler.appservice_register(
|
||||
async def _do_appservice_registration(self, username, as_token, body):
|
||||
user_id = await self.registration_handler.appservice_register(
|
||||
username, as_token
|
||||
)
|
||||
return (yield self._create_registration_details(user_id, body))
|
||||
return await self._create_registration_details(user_id, body)
|
||||
|
||||
@defer.inlineCallbacks
|
||||
def _create_registration_details(self, user_id, params):
|
||||
async def _create_registration_details(self, user_id, params):
|
||||
"""Complete registration of newly-registered user
|
||||
|
||||
Allocates device_id if one was not given; also creates access_token.
|
||||
|
@ -631,18 +622,17 @@ class RegisterRestServlet(RestServlet):
|
|||
if not params.get("inhibit_login", False):
|
||||
device_id = params.get("device_id")
|
||||
initial_display_name = params.get("initial_device_display_name")
|
||||
device_id, access_token = yield self.registration_handler.register_device(
|
||||
device_id, access_token = await self.registration_handler.register_device(
|
||||
user_id, device_id, initial_display_name, is_guest=False
|
||||
)
|
||||
|
||||
result.update({"access_token": access_token, "device_id": device_id})
|
||||
return result
|
||||
|
||||
@defer.inlineCallbacks
|
||||
def _do_guest_registration(self, params, address=None):
|
||||
async def _do_guest_registration(self, params, address=None):
|
||||
if not self.hs.config.allow_guest_access:
|
||||
raise SynapseError(403, "Guest access is disabled")
|
||||
user_id = yield self.registration_handler.register_user(
|
||||
user_id = await self.registration_handler.register_user(
|
||||
make_guest=True, address=address
|
||||
)
|
||||
|
||||
|
@ -650,7 +640,7 @@ class RegisterRestServlet(RestServlet):
|
|||
# we have nowhere to store it.
|
||||
device_id = synapse.api.auth.GUEST_DEVICE_ID
|
||||
initial_display_name = params.get("initial_device_display_name")
|
||||
device_id, access_token = yield self.registration_handler.register_device(
|
||||
device_id, access_token = await self.registration_handler.register_device(
|
||||
user_id, device_id, initial_display_name, is_guest=True
|
||||
)
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue