pub struct ValidSignature;Expand description
Proof that the request’s URL was signed by signed_url and hasn’t expired.
A route that takes it answers 403 to any other URL.
As Option<ValidSignature> it never refuses, so one route can accept a
signed link (a guest coming back from a mail or a payment page) or a
logged-in user:
use renox::signed::ValidSignature;
async fn receipt(
signature: Option<ValidSignature>,
user: Option<AuthUser>,
Path(order): Path<i64>,
) -> Result<String> {
if signature.is_none() && user.is_none() {
return Err(Error::Forbidden);
}
Ok(format!("Order {order}"))
}(A logged-in user still needs a check that the order is theirs.)
Trait Implementations§
Source§impl<S: Send + Sync> FromRequestParts<S> for ValidSignature
impl<S: Send + Sync> FromRequestParts<S> for ValidSignature
Auto Trait Implementations§
impl Freeze for ValidSignature
impl RefUnwindSafe for ValidSignature
impl Send for ValidSignature
impl Sync for ValidSignature
impl Unpin for ValidSignature
impl UnsafeUnpin for ValidSignature
impl UnwindSafe for ValidSignature
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
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
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