@@ -243,11 +243,11 @@ async def on_PUT(self, request, user_id):
243243
244244 else : # create user
245245 password = body .get ("password" )
246- if password is not None and (
247- not isinstance ( body [ "password" ], text_type )
248- or len (body [ " password" ] ) > 512
249- ):
250- raise SynapseError ( 400 , "Invalid password" )
246+ password_hash = None
247+ if password is not None :
248+ if not isinstance ( password , text_type ) or len (password ) > 512 :
249+ raise SynapseError ( 400 , "Invalid password" )
250+ password_hash = await self . auth_handler . hash ( password )
251251
252252 admin = body .get ("admin" , None )
253253 user_type = body .get ("user_type" , None )
@@ -259,7 +259,7 @@ async def on_PUT(self, request, user_id):
259259
260260 user_id = await self .registration_handler .register_user (
261261 localpart = target_user .localpart ,
262- password = password ,
262+ password_hash = password_hash ,
263263 admin = bool (admin ),
264264 default_display_name = displayname ,
265265 user_type = user_type ,
@@ -298,7 +298,7 @@ class UserRegisterServlet(RestServlet):
298298 NONCE_TIMEOUT = 60
299299
300300 def __init__ (self , hs ):
301- self .handlers = hs .get_handlers ()
301+ self .auth_handler = hs .get_auth_handler ()
302302 self .reactor = hs .get_reactor ()
303303 self .nonces = {}
304304 self .hs = hs
@@ -362,16 +362,16 @@ async def on_POST(self, request):
362362 400 , "password must be specified" , errcode = Codes .BAD_JSON
363363 )
364364 else :
365- if (
366- not isinstance (body ["password" ], text_type )
367- or len (body ["password" ]) > 512
368- ):
365+ password = body ["password" ]
366+ if not isinstance (password , text_type ) or len (password ) > 512 :
369367 raise SynapseError (400 , "Invalid password" )
370368
371- password = body [ " password" ] .encode ("utf-8" )
372- if b"\x00 " in password :
369+ password_bytes = password .encode ("utf-8" )
370+ if b"\x00 " in password_bytes :
373371 raise SynapseError (400 , "Invalid password" )
374372
373+ password_hash = await self .auth_handler .hash (password )
374+
375375 admin = body .get ("admin" , None )
376376 user_type = body .get ("user_type" , None )
377377
@@ -388,7 +388,7 @@ async def on_POST(self, request):
388388 want_mac_builder .update (b"\x00 " )
389389 want_mac_builder .update (username )
390390 want_mac_builder .update (b"\x00 " )
391- want_mac_builder .update (password )
391+ want_mac_builder .update (password_bytes )
392392 want_mac_builder .update (b"\x00 " )
393393 want_mac_builder .update (b"admin" if admin else b"notadmin" )
394394 if user_type :
@@ -407,7 +407,7 @@ async def on_POST(self, request):
407407
408408 user_id = await register .registration_handler .register_user (
409409 localpart = body ["username" ].lower (),
410- password = body [ "password" ] ,
410+ password_hash = password_hash ,
411411 admin = bool (admin ),
412412 user_type = user_type ,
413413 )
0 commit comments