Increase max number of allowed extra fields for remote actors to 100

This commit is contained in:
silverpill 2022-12-14 16:39:00 +00:00
parent a14c719d25
commit 8e08195b44
2 changed files with 20 additions and 10 deletions

View file

@ -409,11 +409,12 @@ impl ProfileCreateData {
if let Some(display_name) = &self.display_name {
validate_display_name(display_name)?;
};
let is_remote = self.actor_json.is_some();
if let Some(bio) = &self.bio {
let cleaned_bio = clean_bio(bio, self.actor_json.is_some())?;
let cleaned_bio = clean_bio(bio, is_remote)?;
self.bio = Some(cleaned_bio);
};
self.extra_fields = clean_extra_fields(&self.extra_fields)?;
self.extra_fields = clean_extra_fields(&self.extra_fields, is_remote)?;
Ok(())
}
}
@ -451,12 +452,13 @@ impl ProfileUpdateData {
if let Some(display_name) = &self.display_name {
validate_display_name(display_name)?;
};
let is_remote = self.actor_json.is_some();
// Validate and clean bio
if let Some(bio) = &self.bio {
let cleaned_bio = clean_bio(bio, self.actor_json.is_some())?;
let cleaned_bio = clean_bio(bio, is_remote)?;
self.bio = Some(cleaned_bio);
};
self.extra_fields = clean_extra_fields(&self.extra_fields)?;
self.extra_fields = clean_extra_fields(&self.extra_fields, is_remote)?;
Ok(())
}
}

View file

@ -49,9 +49,10 @@ pub fn clean_bio(bio: &str, is_remote: bool) -> Result<String, ValidationError>
}
/// Validates extra fields and removes fields with empty labels
pub fn clean_extra_fields(extra_fields: &[ExtraField])
-> Result<Vec<ExtraField>, ValidationError>
{
pub fn clean_extra_fields(
extra_fields: &[ExtraField],
is_remote: bool,
) -> Result<Vec<ExtraField>, ValidationError> {
let mut cleaned_extra_fields = vec![];
for mut field in extra_fields.iter().cloned() {
field.name = field.name.trim().to_string();
@ -67,8 +68,14 @@ pub fn clean_extra_fields(extra_fields: &[ExtraField])
};
cleaned_extra_fields.push(field);
};
if cleaned_extra_fields.len() > 20 {
return Err(ValidationError("at most 20 fields are allowed"));
if is_remote {
if cleaned_extra_fields.len() > 100 {
return Err(ValidationError("at most 100 fields are allowed"));
};
} else {
if cleaned_extra_fields.len() > 10 {
return Err(ValidationError("at most 10 fields are allowed"));
};
};
Ok(cleaned_extra_fields)
}
@ -118,7 +125,8 @@ mod tests {
value: "<p>0x1234</p>".to_string(),
value_source: None,
}];
let result = clean_extra_fields(&extra_fields).unwrap().pop().unwrap();
let result = clean_extra_fields(&extra_fields, false)
.unwrap().pop().unwrap();
assert_eq!(result.name, "$ETH");
assert_eq!(result.value, "0x1234");
}