use crate::{
traits::{MiddlewareTrait, RequestTrait},
Middleware, ServerResult,
};
use axum::{extract::Request, middleware, middleware::Next, response::IntoResponse};
use ayun_core::traits::InstanceTrait;
pub struct Auth;
impl MiddlewareTrait for Auth {
fn handle() -> Middleware {
Box::new(|router| Ok(router.layer(middleware::from_fn(handle))))
}
}
async fn handle(mut request: Request, next: Next) -> ServerResult<impl IntoResponse> {
let user = ayun_auth::Auth::facade().check(&request.token()?)?;
request.extensions_mut().insert(user);
Ok(next.run(request).await)
}