Modify register/available to be GET with query param

- GET is now the method for register/available
- a query parameter "username" is now used

Also, empty usernames are now handled with an error message on registration or via register/available: `User ID cannot be empty`
pull/2213/head
Luke Barnard 2017-05-10 17:17:12 +01:00
parent a3648f84b2
commit 369195caa5
2 changed files with 11 additions and 5 deletions

View File

@ -54,6 +54,13 @@ class RegistrationHandler(BaseHandler):
Codes.INVALID_USERNAME Codes.INVALID_USERNAME
) )
if len(localpart) == 0:
raise SynapseError(
400,
"User ID cannot be empty",
Codes.INVALID_USERNAME
)
if localpart[0] == '_': if localpart[0] == '_':
raise SynapseError( raise SynapseError(
400, 400,

View File

@ -21,7 +21,7 @@ from synapse.api.auth import get_access_token_from_request, has_access_token
from synapse.api.constants import LoginType from synapse.api.constants import LoginType
from synapse.api.errors import SynapseError, Codes, UnrecognizedRequestError from synapse.api.errors import SynapseError, Codes, UnrecognizedRequestError
from synapse.http.servlet import ( from synapse.http.servlet import (
RestServlet, parse_json_object_from_request, assert_params_in_request RestServlet, parse_json_object_from_request, assert_params_in_request, parse_string
) )
from synapse.util.msisdn import phone_number_to_msisdn from synapse.util.msisdn import phone_number_to_msisdn
@ -142,15 +142,14 @@ class UsernameAvailabilityRestServlet(RestServlet):
) )
@defer.inlineCallbacks @defer.inlineCallbacks
def on_POST(self, request): def on_GET(self, request):
ip = self.hs.get_ip_from_request(request) ip = self.hs.get_ip_from_request(request)
with self.ratelimiter.ratelimit(ip) as wait_deferred: with self.ratelimiter.ratelimit(ip) as wait_deferred:
yield wait_deferred yield wait_deferred
body = parse_json_object_from_request(request) username = parse_string(request, "username", required=True)
assert_params_in_request(body, ['username'])
yield self.registration_handler.check_username(body['username']) yield self.registration_handler.check_username(username)
defer.returnValue((200, {"available": True})) defer.returnValue((200, {"available": True}))