Skip to content
This repository was archived by the owner on Apr 26, 2024. It is now read-only.

Commit ed3ff55

Browse files
committed
Fix up msisdns
1 parent a94cf0d commit ed3ff55

File tree

2 files changed

+61
-8
lines changed

2 files changed

+61
-8
lines changed

synapse/rest/client/v2_alpha/account.py

Lines changed: 38 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -209,10 +209,15 @@ def on_POST(self, request):
209209

210210
assert_params_in_dict(
211211
body,
212-
["id_server", "client_secret", "country", "phone_number", "send_attempt"],
212+
["client_secret", "country", "phone_number", "send_attempt"],
213213
)
214+
client_secret = body["client_secret"]
215+
country = body["country"]
216+
phone_number = body["phone_number"]
217+
send_attempt = body["send_attempt"]
218+
next_link = body.get("next_link") # Optional param
214219

215-
msisdn = phone_number_to_msisdn(body["country"], body["phone_number"])
220+
msisdn = phone_number_to_msisdn(country, phone_number)
216221

217222
if not check_3pid_allowed(self.hs, "msisdn", msisdn):
218223
raise SynapseError(
@@ -228,8 +233,28 @@ def on_POST(self, request):
228233
if existing_user_id is None:
229234
raise SynapseError(400, "MSISDN not found", Codes.THREEPID_NOT_FOUND)
230235

231-
ret = yield self.identity_handler.requestMsisdnToken(**body)
232-
return (200, ret)
236+
if not self.hs.config.account_threepid_delegate:
237+
raise SynapseError(
238+
400, "No upstream identity server configured on the server to handle this "
239+
"request"
240+
)
241+
242+
if self.config.email_threepid_behaviour == ThreepidBehaviour.REMOTE:
243+
if not self.hs.config.account_threepid_delegate:
244+
raise SynapseError(
245+
400, "No upstream identity server configured on the server to handle this "
246+
"request"
247+
)
248+
249+
ret = yield self.identity_handler.requestMsisdnToken(
250+
self.config.account_threepid_delegate, country, phone_number, client_secret,
251+
send_attempt, next_link
252+
)
253+
return (200, ret)
254+
255+
raise SynapseError(
256+
400, "Password reset by MSISDN is not supported on this homeserver"
257+
)
233258

234259

235260
class PasswordResetSubmitTokenServlet(RestServlet):
@@ -515,6 +540,12 @@ def on_POST(self, request):
515540
body,
516541
["id_server", "client_secret", "country", "phone_number", "send_attempt"],
517542
)
543+
id_server = "https://" + body["id_server"] # Assume https
544+
client_secret = body["client_secret"]
545+
country = body["country"]
546+
phone_number = body["phone_number"]
547+
send_attempt = body["send_attempt"]
548+
next_link = body.get("next_link") # Optional param
518549

519550
msisdn = phone_number_to_msisdn(body["country"], body["phone_number"])
520551

@@ -530,7 +561,9 @@ def on_POST(self, request):
530561
if existing_user_id is not None:
531562
raise SynapseError(400, "MSISDN is already in use", Codes.THREEPID_IN_USE)
532563

533-
ret = yield self.identity_handler.requestMsisdnToken(**body)
564+
ret = yield self.identity_handler.requestMsisdnToken(
565+
id_server, country, phone_number, client_secret, send_attempt, next_link
566+
)
534567
return (200, ret)
535568

536569

synapse/rest/client/v2_alpha/register.py

Lines changed: 23 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@
3131
SynapseError,
3232
UnrecognizedRequestError,
3333
)
34+
from synapse.config.emailconfig import ThreepidBehaviour
3435
from synapse.config.ratelimiting import FederationRateLimitConfig
3536
from synapse.config.server import is_threepid_reserved
3637
from synapse.http.servlet import (
@@ -130,8 +131,13 @@ def on_POST(self, request):
130131

131132
assert_params_in_dict(
132133
body,
133-
["id_server", "client_secret", "country", "phone_number", "send_attempt"],
134+
["client_secret", "country", "phone_number", "send_attempt"],
134135
)
136+
client_secret = body["client_secret"]
137+
country = body["country"]
138+
phone_number = body["phone_number"]
139+
send_attempt = body["send_attempt"]
140+
next_link = body.get("next_link") # Optional param
135141

136142
msisdn = phone_number_to_msisdn(body["country"], body["phone_number"])
137143

@@ -151,8 +157,22 @@ def on_POST(self, request):
151157
400, "Phone number is already in use", Codes.THREEPID_IN_USE
152158
)
153159

154-
ret = yield self.identity_handler.requestMsisdnToken(**body)
155-
return (200, ret)
160+
if self.config.email_threepid_behaviour == ThreepidBehaviour.REMOTE:
161+
if not self.hs.config.account_threepid_delegate:
162+
raise SynapseError(
163+
400, "No upstream identity server configured on the server to handle this "
164+
"request"
165+
)
166+
167+
ret = yield self.identity_handler.requestMsisdnToken(
168+
self.config.account_threepid_delegate, country, phone_number, client_secret,
169+
send_attempt, next_link
170+
)
171+
return (200, ret)
172+
173+
raise SynapseError(
174+
400, "Registration by MSISDN is not supported on this homeserver"
175+
)
156176

157177

158178
class UsernameAvailabilityRestServlet(RestServlet):

0 commit comments

Comments
 (0)