Fix validators (#237)

* Fix file extension checks not working

* Fix validators not validating files of a non-matching extension
This commit is contained in:
Geometrically 2021-08-22 09:11:38 -07:00 committed by GitHub
parent 4073a7abc3
commit fdf8845a2f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 14 additions and 5 deletions

View File

@ -535,7 +535,7 @@ pub async fn project_create_inner(
let mut categories = Vec::with_capacity(project_create_data.categories.len());
for category in &project_create_data.categories {
let id = models::categories::Category::get_id_project(
&category,
category,
project_type_id,
&mut *transaction,
)

View File

@ -68,9 +68,10 @@ pub fn validate_file(
let reader = std::io::Cursor::new(data);
let mut zip = zip::ZipArchive::new(reader)?;
let mut visited = false;
for validator in &VALIDATORS {
if validator.get_file_extensions().contains(&file_extension)
&& validator.get_project_types().contains(&project_type)
if
validator.get_project_types().contains(&project_type)
&& loaders
.iter()
.any(|x| validator.get_supported_loaders().contains(&&*x.0))
@ -80,11 +81,19 @@ pub fn validate_file(
validator.get_supported_game_versions(),
)
{
return validator.validate(&mut zip);
if validator.get_file_extensions().contains(&file_extension) {
return validator.validate(&mut zip);
} else {
visited = true;
}
}
}
Ok(ValidationResult::Pass)
if visited {
Err(ValidationError::InvalidInputError(format!("File extension {} is invalid for input file", file_extension)))
} else {
Ok(ValidationResult::Pass)
}
}
fn game_version_supported(