actix_jwt_session/
builder.rsuse actix_web::dev::{self, ServiceFactory, ServiceRequest};
use actix_web::web::Data;
use actix_web::{App, Error as ActixWebError};
use deadpool_redis::Pool;
use crate::{Claims, Extractors, SessionMiddlewareFactory};
pub trait UseJwt {
fn use_jwt<AppClaims: Claims>(
self,
extractors: Extractors<AppClaims>,
pool: Option<Pool>,
) -> App<
impl ServiceFactory<
dev::ServiceRequest,
Error = actix_web::Error,
Config = (),
InitError = (),
Response = dev::ServiceResponse,
>,
>;
}
impl<T> UseJwt for App<T>
where
T: ServiceFactory<
ServiceRequest,
Config = (),
Error = ActixWebError,
InitError = (),
Response = dev::ServiceResponse,
> + 'static,
{
fn use_jwt<AppClaims: Claims>(
self,
extractors: Extractors<AppClaims>,
pool: Option<Pool>,
) -> App<
impl ServiceFactory<
dev::ServiceRequest,
Error = actix_web::Error,
Config = (),
InitError = (),
Response = dev::ServiceResponse,
>,
> {
let mut builder =
SessionMiddlewareFactory::build_ed_dsa().with_extractors(extractors.clone());
if let Some(pool) = pool {
builder = builder.with_redis_pool(pool);
}
let (storage, factory) = builder.finish();
self.app_data(Data::new(extractors.clone()))
.app_data(Data::new(storage))
.wrap(factory)
}
}