@@ -209,10 +209,15 @@ def on_POST(self, request):
209
209
210
210
assert_params_in_dict (
211
211
body ,
212
- ["id_server" , " client_secret" , "country" , "phone_number" , "send_attempt" ],
212
+ ["client_secret" , "country" , "phone_number" , "send_attempt" ],
213
213
)
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
214
219
215
- msisdn = phone_number_to_msisdn (body [ " country" ], body [ " phone_number" ] )
220
+ msisdn = phone_number_to_msisdn (country , phone_number )
216
221
217
222
if not check_3pid_allowed (self .hs , "msisdn" , msisdn ):
218
223
raise SynapseError (
@@ -228,8 +233,28 @@ def on_POST(self, request):
228
233
if existing_user_id is None :
229
234
raise SynapseError (400 , "MSISDN not found" , Codes .THREEPID_NOT_FOUND )
230
235
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
+ )
233
258
234
259
235
260
class PasswordResetSubmitTokenServlet (RestServlet ):
@@ -515,6 +540,12 @@ def on_POST(self, request):
515
540
body ,
516
541
["id_server" , "client_secret" , "country" , "phone_number" , "send_attempt" ],
517
542
)
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
518
549
519
550
msisdn = phone_number_to_msisdn (body ["country" ], body ["phone_number" ])
520
551
@@ -530,7 +561,9 @@ def on_POST(self, request):
530
561
if existing_user_id is not None :
531
562
raise SynapseError (400 , "MSISDN is already in use" , Codes .THREEPID_IN_USE )
532
563
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
+ )
534
567
return (200 , ret )
535
568
536
569
0 commit comments