diff --git a/src/routes.rs b/src/routes.rs index 9dfee02..2a38151 100644 --- a/src/routes.rs +++ b/src/routes.rs @@ -31,6 +31,11 @@ fn auth( return Ok(()); } + if password_hash == setup::hash("").as_slice() { + identity.remember("guest".into()); + return Ok(()); + } + let header = match request.headers().get("Authorization") { Some(h) => match h.to_str() { Ok(h) => h, diff --git a/src/setup.rs b/src/setup.rs index 9402cdb..3e15888 100644 --- a/src/setup.rs +++ b/src/setup.rs @@ -251,14 +251,33 @@ pub fn init() -> Config { if !password_path.exists() { let stdin = io::stdin(); let mut stdin = stdin.lock(); - println!("Enter the password to use:"); let mut password = String::new(); - stdin.read_line(&mut password).unwrap_or_else(|e| { - eprintln!("Can't read password: {}", e); - process::exit(1); - }); - password = password.replace("\r", ""); - password = password.replace("\n", ""); + + loop { + println!("Enter the password to use: "); + stdin.read_line(&mut password).unwrap_or_else(|e| { + eprintln!("Can't read password: {}", e); + process::exit(1); + }); + + password = password.replace("\r", ""); + password = password.replace("\n", ""); + if !password.is_empty() { + break; + } + + println!("Are you sure you want to leave an empty password? This will disable authentication: [y/N]: "); + let mut answer = String::new(); + stdin.read_line(&mut answer).unwrap_or_else(|e| { + eprintln!("Can't read password: {}", e); + process::exit(1); + }); + + if answer.trim() == "y" { + break; + } + } + let password_hash = hash(&password); fs::write(&password_path, password_hash.as_slice()).unwrap_or_else(|e| { eprintln!("Can't write password: {}", e);