pub struct AuthMiddleware<Data, Handler> { /* private fields */ }
Expand description

This is the auth middleware. To use it, first make sure you have the auth feature enabled. Then simply add it to your pipeline and request it inside your handler:

#[derive(Resource)]
#[resource(read_all)]
struct AuthResource;

#[derive(Debug, Deserialize, Clone)]
struct AuthData {
	sub: String,
	exp: u64
}

#[read_all]
fn read_all(auth: &AuthStatus<AuthData>) -> Success<String> {
	format!("{auth:?}").into()
}

fn main() {
	let auth: AuthMiddleware<AuthData, _> = AuthMiddleware::new(
		AuthSource::AuthorizationHeader,
		AuthValidation::default(),
		StaticAuthHandler::from_array(b"zlBsA2QXnkmpe0QTh8uCvtAEa4j33YAc")
	);
	let (chain, pipelines) = single_pipeline(new_pipeline().add(auth).build());
	gotham::start(
		"127.0.0.1:8080",
		build_router(chain, pipelines, |route| {
			route.resource::<AuthResource>("auth");
		})
	);
}

Implementations§

source§

impl<Data, Handler> AuthMiddleware<Data, Handler>
where Data: DeserializeOwned + Send, Handler: AuthHandler<Data> + Default,

source

pub fn from_source(source: AuthSource) -> Self

source§

impl<Data, Handler> AuthMiddleware<Data, Handler>
where Data: DeserializeOwned + Send, Handler: AuthHandler<Data>,

source

pub fn new( source: AuthSource, validation: AuthValidation, handler: Handler ) -> Self

Trait Implementations§

source§

impl<Data, Handler> Clone for AuthMiddleware<Data, Handler>
where Handler: Clone,

source§

fn clone(&self) -> Self

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl<Data: Debug, Handler: Debug> Debug for AuthMiddleware<Data, Handler>

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl<Data, Handler> Middleware for AuthMiddleware<Data, Handler>
where Data: DeserializeOwned + Send + 'static, Handler: AuthHandler<Data>,

source§

fn call<Chain>(self, state: State, chain: Chain) -> Pin<Box<HandlerFuture>>
where Chain: FnOnce(State) -> Pin<Box<HandlerFuture>>,

Entry point to the middleware. To pass the request on to the application, the middleware invokes the chain function with the provided state. Read more
source§

impl<Data, Handler> NewMiddleware for AuthMiddleware<Data, Handler>
where Self: Clone + Middleware + Sync + RefUnwindSafe,

§

type Instance = AuthMiddleware<Data, Handler>

The type of Middleware created by the NewMiddleware.
source§

fn new_middleware(&self) -> Result<Self>

Create and return a new Middleware value.

Auto Trait Implementations§

§

impl<Data, Handler> RefUnwindSafe for AuthMiddleware<Data, Handler>
where Data: RefUnwindSafe, Handler: RefUnwindSafe,

§

impl<Data, Handler> Send for AuthMiddleware<Data, Handler>
where Data: Send, Handler: Send,

§

impl<Data, Handler> Sync for AuthMiddleware<Data, Handler>
where Data: Sync, Handler: Sync,

§

impl<Data, Handler> Unpin for AuthMiddleware<Data, Handler>
where Data: Unpin, Handler: Unpin,

§

impl<Data, Handler> UnwindSafe for AuthMiddleware<Data, Handler>
where Data: UnwindSafe, Handler: UnwindSafe,

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

§

impl<T> Instrument for T

§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided [Span], returning an Instrumented wrapper. Read more
§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
source§

impl<T, U> Into<U> for T
where U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

source§

impl<T> IntoEither for T

source§

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 more
source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

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
§

impl<T> IntoSql for T

§

fn into_sql<T>(self) -> Self::Expression
where Self: AsExpression<T> + Sized, T: SqlType + TypedExpressionType,

Convert self to an expression for Diesel’s query builder. Read more
§

fn as_sql<'a, T>(&'a self) -> <&'a Self as AsExpression<T>>::Expression
where &'a Self: AsExpression<T>, T: SqlType + TypedExpressionType,

Convert &self to an expression for Diesel’s query builder. Read more
source§

impl<T> Same for T

§

type Output = T

Should always be Self
source§

impl<T> ToOwned for T
where T: Clone,

§

type Owned = T

The resulting type after obtaining ownership.
source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
§

impl<T> WithSubscriber for T

§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a [WithDispatch] wrapper. Read more
§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a [WithDispatch] wrapper. Read more