diff --git a/src/auth.rs b/src/auth.rs index 39b4690..d5fac85 100644 --- a/src/auth.rs +++ b/src/auth.rs @@ -45,7 +45,10 @@ pub async fn login( .unwrap(); HttpResponse::Ok().json(Token { token: &token }) } else { - error!("User not found during login: '{}'", creds.username); + error!( + "User not found during login or incorrect password: '{}'", + creds.username + ); HttpResponse::NotFound().finish() } } diff --git a/src/files.rs b/src/files.rs index 0dc9ea7..512ac88 100644 --- a/src/files.rs +++ b/src/files.rs @@ -1,4 +1,3 @@ -use std::ffi::OsStr; use std::fs::read_dir; use std::io; use std::io::Error; @@ -22,13 +21,11 @@ pub fn list_files(dir: PathBuf) -> io::Result> { Ok(files) } -fn is_image_or_video(path: &Path) -> bool { - let extension = &path +pub fn is_image_or_video(path: &Path) -> bool { + let extension = path .extension() - .unwrap_or_else(|| OsStr::new("")) - .to_str() - .unwrap_or("") - .to_lowercase(); + .and_then(|p| p.to_str()) + .map_or(String::from(""), |p| p.to_lowercase()); extension == "png" || extension == "jpg" diff --git a/src/main.rs b/src/main.rs index 1790d6d..b308d65 100644 --- a/src/main.rs +++ b/src/main.rs @@ -28,7 +28,7 @@ use log::{debug, error, info}; use crate::data::Claims; use crate::database::{add_favorite, get_favorites}; -use crate::files::{is_valid_path, list_files}; +use crate::files::{is_image_or_video, is_valid_path, list_files}; use crate::video::*; mod auth; @@ -131,7 +131,7 @@ async fn upload_image(_: Claims, mut payload: mp::Multipart) -> impl Responder { if !file_content.is_empty() { let full_path = PathBuf::from(&path).join(file_name.unwrap()); if let Some(full_path) = is_valid_path(full_path.to_str().unwrap_or("")) { - if !full_path.is_file() { + if !full_path.is_file() && is_image_or_video(&full_path) { let mut file = File::create(full_path).unwrap(); file.write_all(&file_content).unwrap(); } else {