Browse Source

fix(registration): enforce the strict user ID grammar

previously, !is_historical was used, but this caused user IDs that are no longer allowed under the current spec version's historial grammer to be allowed in registration
merge-requests/762/head
Matthias Ahouansou 9 months ago
parent
commit
3248efbe4b
No known key found for this signature in database
  1. 7
      src/api/client_server/account.rs

7
src/api/client_server/account.rs

@ -25,7 +25,7 @@ const RANDOM_USER_ID_LENGTH: usize = 10;
/// Checks if a username is valid and available on this server. /// Checks if a username is valid and available on this server.
/// ///
/// Conditions for returning true: /// Conditions for returning true:
/// - The user id is not historical /// - The user id must be valid according to the strict grammar
/// - The server name of the user id matches this server /// - The server name of the user id matches this server
/// - No user or appservice on this server already claimed this username /// - No user or appservice on this server already claimed this username
/// ///
@ -40,7 +40,8 @@ pub async fn get_register_available_route(
) )
.ok() .ok()
.filter(|user_id| { .filter(|user_id| {
!user_id.is_historical() && user_id.server_name() == services().globals.server_name() user_id.validate_strict().is_ok()
&& user_id.server_name() == services().globals.server_name()
}) })
.ok_or(Error::BadRequest( .ok_or(Error::BadRequest(
ErrorKind::InvalidUsername, ErrorKind::InvalidUsername,
@ -92,7 +93,7 @@ pub async fn register_route(body: Ruma<register::v3::Request>) -> Result<registe
) )
.ok() .ok()
.filter(|user_id| { .filter(|user_id| {
!user_id.is_historical() user_id.validate_strict().is_ok()
&& user_id.server_name() == services().globals.server_name() && user_id.server_name() == services().globals.server_name()
}) })
.ok_or(Error::BadRequest( .ok_or(Error::BadRequest(

Loading…
Cancel
Save