fix: account registration
parent
804d097a18
commit
366554630a
|
@ -86,14 +86,20 @@ pub fn register_route(
|
|||
|
||||
let is_guest = matches!(body.kind, Some(RegistrationKind::Guest));
|
||||
|
||||
let mut missing_username = false;
|
||||
|
||||
// Validate user id
|
||||
let user_id = UserId::parse_with_server_name(
|
||||
if is_guest {
|
||||
utils::random_string(GUEST_NAME_LENGTH)
|
||||
} else {
|
||||
body.username.clone().ok_or_else(|| {
|
||||
Error::BadRequest(ErrorKind::MissingParam, "Missing username field.")
|
||||
})?
|
||||
body.username.clone().unwrap_or_else(|| {
|
||||
// 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(),
|
||||
db.globals.server_name(),
|
||||
|
@ -106,7 +112,7 @@ pub fn register_route(
|
|||
))?;
|
||||
|
||||
// Check if username is creative enough
|
||||
if db.users.exists(&user_id)? {
|
||||
if !missing_username && db.users.exists(&user_id)? {
|
||||
return Err(Error::BadRequest(
|
||||
ErrorKind::UserInUse,
|
||||
"Desired user ID is already taken.",
|
||||
|
@ -138,6 +144,10 @@ pub fn register_route(
|
|||
return Err(Error::Uiaa(uiaainfo));
|
||||
}
|
||||
|
||||
if missing_username {
|
||||
return Err(Error::BadRequest(ErrorKind::MissingParam, "Missing username field."));
|
||||
}
|
||||
|
||||
let password = if is_guest {
|
||||
None
|
||||
} else {
|
||||
|
|
Loading…
Reference in New Issue