fix: account registration

next
Timo 2020-08-22 22:49:19 +02:00
parent 804d097a18
commit 366554630a
No known key found for this signature in database
GPG Key ID: 24DA7517711A2BA4
1 changed files with 14 additions and 4 deletions

View File

@ -86,14 +86,20 @@ pub fn register_route(
let is_guest = matches!(body.kind, Some(RegistrationKind::Guest)); let is_guest = matches!(body.kind, Some(RegistrationKind::Guest));
let mut missing_username = false;
// Validate user id // Validate user id
let user_id = UserId::parse_with_server_name( let user_id = UserId::parse_with_server_name(
if is_guest { if is_guest {
utils::random_string(GUEST_NAME_LENGTH) utils::random_string(GUEST_NAME_LENGTH)
} else { } else {
body.username.clone().ok_or_else(|| { body.username.clone().unwrap_or_else(|| {
Error::BadRequest(ErrorKind::MissingParam, "Missing username field.") // If the user didn't send a username field, that means the client is just trying
})? // the get an UIAA error to see available flows
missing_username = true;
// Just give the user a random name. He won't be able to register with it anyway.
utils::random_string(GUEST_NAME_LENGTH)
})
} }
.to_lowercase(), .to_lowercase(),
db.globals.server_name(), db.globals.server_name(),
@ -106,7 +112,7 @@ pub fn register_route(
))?; ))?;
// Check if username is creative enough // Check if username is creative enough
if db.users.exists(&user_id)? { if !missing_username && db.users.exists(&user_id)? {
return Err(Error::BadRequest( return Err(Error::BadRequest(
ErrorKind::UserInUse, ErrorKind::UserInUse,
"Desired user ID is already taken.", "Desired user ID is already taken.",
@ -138,6 +144,10 @@ pub fn register_route(
return Err(Error::Uiaa(uiaainfo)); return Err(Error::Uiaa(uiaainfo));
} }
if missing_username {
return Err(Error::BadRequest(ErrorKind::MissingParam, "Missing username field."));
}
let password = if is_guest { let password = if is_guest {
None None
} else { } else {