Struct kvarn_auth::Config

source ·
pub struct Config<T: Serialize + DeserializeOwned + Send + Sync, F: Fn(&str, &str, SocketAddr, &FatRequest) -> Fut + Send + Sync, Fut: Future<Output = Validation<T>> + Send + Sync> { /* private fields */ }
Expand description

The configured authentication. This can be attached to a Kvarn host using the Self::mount method. You can call Self::login_status to get a function to use in your extensions to check for authentication status.

Implementations§

source§

impl<T: Serialize + DeserializeOwned + Send + Sync + 'static, F: Fn(&str, &str, SocketAddr, &FatRequest) -> Fut + Send + Sync + 'static, Fut: Future<Output = Validation<T>> + Send + Sync + 'static> Config<T, F, Fut>

source

pub fn login_status(&self) -> LoginStatusClosure<T>

Returns a closure that can be sent to a Kvarn extension to extract the data from the user’s JWT and validating the authenticity of the client.

This makes it easier to cross the boundary of the Kvarn extension (using the move || semantics). See LoginStatusClosure.

If the closure returns Validation::Unauthorized, redirect the user to your login page (Builder::with_auth_page_name).

source

pub fn mount(self: &Arc<Self>, extensions: &mut Extensions)

Create an API route at Builder::with_auth_page_name and make the JWT token automatically refresh.

To log in, use JavaScript’s fetch with method POST or PUT to the auth_page_name, with the username length on the first lines, then on the second line, the username concatenated with the password without any space. The rest of the body (after username length) is considered to be the password (it can contains newlines).

To log out, fetch DELETE to auth_page_name.

§Panics

Panics if this config was created using Builder::build_validate.

Auto Trait Implementations§

§

impl<T, F, Fut> Freeze for Config<T, F, Fut>

§

impl<T, F, Fut> RefUnwindSafe for Config<T, F, Fut>
where F: RefUnwindSafe,

§

impl<T, F, Fut> Send for Config<T, F, Fut>

§

impl<T, F, Fut> Sync for Config<T, F, Fut>

§

impl<T, F, Fut> Unpin for Config<T, F, Fut>

§

impl<T, F, Fut> UnwindSafe for Config<T, F, Fut>
where F: RefUnwindSafe,

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, 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.

§

impl<T> Pointable for T

§

const ALIGN: usize = _

The alignment of pointer.
§

type Init = T

The type for initializers.
§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
source§

impl<T> Same for T

§

type Output = T

Should always be Self
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<V, T> VZip<V> for T
where V: MultiLane<T>,

§

fn vzip(self) -> V