use crate::registrations::AppState;
use axum::http::request::Parts;
use forklaunch_axum::native::{EndpointError, EndpointPolicy, PolicyCapabilities, RouteContract};
use forklaunch_axum::session::AuthenticatedSession;
use forklaunch_core::contract::bindings::AuthorizationPolicy;
#[derive(Clone)]
pub struct UserPolicy;
impl AuthorizationPolicy for UserPolicy {}
impl EndpointPolicy<AppState> for UserPolicy {
const CAPABILITIES: PolicyCapabilities = PolicyCapabilities::Authorized;
type Context = AuthenticatedSession;
async fn authorize(
&self,
parts: &mut Parts,
state: &AppState,
route: &RouteContract,
) -> Result<AuthenticatedSession, EndpointError> {
state.auth.authorize(parts, state, route).await
}
}