refactor: basic auth check request function
Diff
src/basic_auth.rs | 38 ++++++++++++++++----------------------
1 file changed, 16 insertions(+), 22 deletions(-)
@@ -8,34 +8,28 @@
use bcrypt::verify as bcrypt_verify;
use headers::{authorization::Basic, Authorization, HeaderMapExt};
use http::HeaderMap;
use hyper::StatusCode;
pub fn check_request(
headers: &http::HeaderMap,
userid: &str,
password: &str,
) -> Result<(), StatusCode> {
if let Some(ref credentials) = headers.typed_get::<Authorization<Basic>>() {
if credentials.0.username() == userid {
return match bcrypt_verify(credentials.0.password(), password) {
Ok(valid) => {
if valid {
Ok(())
} else {
Err(StatusCode::UNAUTHORIZED)
}
}
Err(err) => {
tracing::error!("bcrypt password verification error: {:?}", err);
Err(StatusCode::UNAUTHORIZED)
}
};
}
pub fn check_request(headers: &HeaderMap, userid: &str, password: &str) -> Result<(), StatusCode> {
let credentials = headers
.typed_get::<Authorization<Basic>>()
.ok_or(StatusCode::UNAUTHORIZED)?;
if credentials.0.username() != userid {
return Err(StatusCode::UNAUTHORIZED);
}
Err(StatusCode::UNAUTHORIZED)
match bcrypt_verify(credentials.0.password(), password) {
Ok(valid) if valid => Ok(()),
Ok(_) => Err(StatusCode::UNAUTHORIZED),
Err(err) => {
tracing::error!("bcrypt password verification error: {:?}", err);
Err(StatusCode::UNAUTHORIZED)
}
}
}
#[cfg(test)]