Enforce mimetype check on backend
This commit is contained in:
		@@ -1,4 +1,5 @@
 | 
				
			|||||||
use crate::controllers::HttpResult;
 | 
					use crate::controllers::HttpResult;
 | 
				
			||||||
 | 
					use crate::controllers::server_controller::ServerConstraints;
 | 
				
			||||||
use crate::extractors::auth_extractor::AuthExtractor;
 | 
					use crate::extractors::auth_extractor::AuthExtractor;
 | 
				
			||||||
use crate::extractors::file_extractor::FileExtractor;
 | 
					use crate::extractors::file_extractor::FileExtractor;
 | 
				
			||||||
use crate::extractors::file_id_extractor::FileIdExtractor;
 | 
					use crate::extractors::file_id_extractor::FileIdExtractor;
 | 
				
			||||||
@@ -12,6 +13,21 @@ use std::time::Duration;
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
/// Upload a new file
 | 
					/// Upload a new file
 | 
				
			||||||
pub async fn upload(auth: AuthExtractor, file: FileExtractor) -> HttpResult {
 | 
					pub async fn upload(auth: AuthExtractor, file: FileExtractor) -> HttpResult {
 | 
				
			||||||
 | 
					    // Check file mimetype
 | 
				
			||||||
 | 
					    if !ServerConstraints::default()
 | 
				
			||||||
 | 
					        .file_allowed_types
 | 
				
			||||||
 | 
					        .contains(&file.mime.as_ref())
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        log::error!(
 | 
				
			||||||
 | 
					            "User attempted to upload a file with invalid mimetype! {}",
 | 
				
			||||||
 | 
					            file.mime
 | 
				
			||||||
 | 
					        );
 | 
				
			||||||
 | 
					        return Ok(HttpResponse::BadRequest().body(format!(
 | 
				
			||||||
 | 
					            "Files with mimetype {} cannot be uploaded!",
 | 
				
			||||||
 | 
					            file.mime
 | 
				
			||||||
 | 
					        )));
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    let file = files_service::create_file_with_mimetype(
 | 
					    let file = files_service::create_file_with_mimetype(
 | 
				
			||||||
        auth.user_id(),
 | 
					        auth.user_id(),
 | 
				
			||||||
        &file.name(),
 | 
					        &file.name(),
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user