pub struct AdminRead(pub Authenticated);Expand description
Authenticated plus a privilege tier of AdminRole::Admin – the
read-side sibling of AdminWrite, with no CSRF or origin gate, since a
GET changes nothing.
The /operators read routes take this. What they render is every
colleague’s role and contact address, the last addresses each signed in
from, and every live session’s fingerprint, address and last-seen time –
“who else is an admin here, and from where do they work” is exactly the
reconnaissance a viewer tier exists to withhold, so the reads are gated to
the same tier as the writes rather than to a live session alone.
Nothing else on this listener needs it: every other read is either the
caller’s own (/account/*) or CA state a viewer is meant to see.
Tuple Fields§
§0: AuthenticatedTrait Implementations§
Source§impl FromRequestParts<AdminState> for AdminRead
impl FromRequestParts<AdminState> for AdminRead
Source§type Rejection = AdminError
type Rejection = AdminError
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§async fn from_request_parts(
parts: &mut Parts,
state: &AdminState,
) -> Result<Self, Self::Rejection>
async fn from_request_parts( parts: &mut Parts, state: &AdminState, ) -> Result<Self, Self::Rejection>
Perform the extraction.
Auto Trait Implementations§
impl Freeze for AdminRead
impl RefUnwindSafe for AdminRead
impl Send for AdminRead
impl Sync for AdminRead
impl Unpin for AdminRead
impl UnsafeUnpin for AdminRead
impl UnwindSafe for AdminRead
Blanket Implementations§
Source§impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
Source§impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
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.
impl<A, B, T> HttpServerConnExec<A, B> for Twhere
B: Body,
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