Struct gotham_restful::AuthMiddleware

source ·
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> !Freeze for AuthMiddleware<Data, Handler>

§

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

§

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

§

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

§

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

§

impl<Data, Handler> UnwindSafe for AuthMiddleware<Data, Handler>
where Handler: UnwindSafe, Data: 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.

source§

impl<T> Instrument for T

source§

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

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

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

impl<T> IntoSql for T

source§

fn into_sql<T>(self) -> Self::Expression

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

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

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

impl<T> WithSubscriber for T

source§

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

fn with_current_subscriber(self) -> WithDispatch<Self>

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