2020-08-12 07:05:26 +00:00
|
|
|
use actix_web_httpauth::extractors::basic::BasicAuth;
|
2020-05-09 06:37:08 +00:00
|
|
|
|
2020-08-12 07:05:26 +00:00
|
|
|
use crate::AppConfig;
|
2020-05-09 06:37:08 +00:00
|
|
|
// use actix_identity::Identity;
|
2020-08-12 07:05:26 +00:00
|
|
|
use crate::routes::validate_basic_auth;
|
2020-08-11 19:51:20 +00:00
|
|
|
use actix_threadpool::BlockingError;
|
|
|
|
|
|
|
|
use actix_web::{dev::ServiceRequest, web, Error};
|
|
|
|
|
|
|
|
// use Response;
|
2020-05-09 06:37:08 +00:00
|
|
|
|
|
|
|
pub async fn validator(
|
|
|
|
req: ServiceRequest,
|
|
|
|
credentials: BasicAuth,
|
|
|
|
) -> Result<ServiceRequest, Error> {
|
|
|
|
println!("{}", credentials.user_id());
|
|
|
|
println!("{:?}", credentials.password());
|
|
|
|
// verify credentials from db
|
2020-08-11 19:51:20 +00:00
|
|
|
let credentials2 = credentials.clone();
|
|
|
|
// let pool = req.app_data();
|
2020-08-12 07:05:26 +00:00
|
|
|
let config = req.app_data::<AppConfig>().expect("Error getting db");
|
|
|
|
// .get_ref()
|
|
|
|
// .clone();
|
2020-08-11 19:51:20 +00:00
|
|
|
// let _config = req
|
|
|
|
// .app_data::<Config>()
|
|
|
|
// .map(|data| data.get_ref().clone())
|
|
|
|
// .unwrap_or_else(Default::default);
|
|
|
|
|
2020-08-12 07:05:26 +00:00
|
|
|
let res = web::block(move || validate_basic_auth(credentials2, &config))
|
2020-08-11 19:51:20 +00:00
|
|
|
.await
|
|
|
|
.and_then(|valid| {
|
|
|
|
if valid {
|
|
|
|
debug!("Success");
|
|
|
|
Ok(req)
|
|
|
|
} else {
|
|
|
|
debug!("Failure");
|
|
|
|
Err(BlockingError::Error(
|
|
|
|
crate::errors::DomainError::new_password_error(
|
|
|
|
"Wrong password or account does not exist".to_string(),
|
|
|
|
),
|
|
|
|
))
|
|
|
|
// Err(AuthenticationError::from(config))
|
|
|
|
// Ok(req)
|
|
|
|
}
|
|
|
|
});
|
|
|
|
let res2: Result<ServiceRequest, Error> = res.map_err(|e| e.into());
|
|
|
|
res2
|
2020-05-09 06:37:08 +00:00
|
|
|
}
|