pub struct TenantExtractor(pub Arc<TenantHandle>);Expand description
Axum extractor that resolves the request’s target tenant, then lazy-opens the tenant via the registry.
Resolution order (v0.8.0 P3):
AuthenticatedPrincipal.tenant_claimfrom request extensions — set by the auth middleware. In OIDC mode this is the validated value of the configured custom claim (defaultsolo_tenant); in bearer mode this is the daemon’s default tenant.X-Solo-Tenantheader — falls back to this when no authenticated principal is on the request (unauthenticated loopback deployments — the default).state.default_tenantwhen neither is present.
Bad header values → 400. Lazy-open failures → 500 unless the failure
kind is NotFound (unknown tenant id) → 404.
Tuple Fields§
§0: Arc<TenantHandle>Trait Implementations§
Source§impl<S> FromRequestParts<S> for TenantExtractor
impl<S> FromRequestParts<S> for TenantExtractor
Auto Trait Implementations§
impl Freeze for TenantExtractor
impl !RefUnwindSafe for TenantExtractor
impl Send for TenantExtractor
impl Sync for TenantExtractor
impl Unpin for TenantExtractor
impl UnsafeUnpin for TenantExtractor
impl !UnwindSafe for TenantExtractor
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<S, T> FromRequest<S, ViaParts> for T
impl<S, T> FromRequest<S, ViaParts> for T
Source§type Rejection = <T as FromRequestParts<S>>::Rejection
type Rejection = <T as FromRequestParts<S>>::Rejection
If the extractor fails it’ll use this “rejection” type. A rejection is
a kind of error that can be converted into a response.
Source§fn from_request(
req: Request<Body>,
state: &S,
) -> impl Future<Output = Result<T, <T as FromRequest<S, ViaParts>>::Rejection>>
fn from_request( req: Request<Body>, state: &S, ) -> impl Future<Output = Result<T, <T as FromRequest<S, ViaParts>>::Rejection>>
Perform the extraction.
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more