use actix_web::body::EitherBody;
use actix_web::dev::{ServiceRequest, ServiceResponse};
use actix_web::Error;
use futures_util::future::LocalBoxFuture;
use crate::http::security::user::User;
pub trait Authenticator {
fn get_user(&self, req: &ServiceRequest) -> Option<User>;
}
pub trait Authorizer<B> {
fn process(
&self,
req: ServiceRequest,
user: Option<&User>,
next: impl FnOnce(ServiceRequest) -> LocalBoxFuture<'static, Result<ServiceResponse<B>, Error>>
+ 'static,
) -> LocalBoxFuture<'static, Result<ServiceResponse<EitherBody<B>>, Error>>;
}