Skip to main content

UserPassAuth

Struct UserPassAuth 

Source
pub struct UserPassAuth;

Implementations§

Source§

impl UserPassAuth

Source

pub fn new() -> Self

Source

pub fn hash_password(password: &str) -> AuthResult<String>

Source

pub async fn user_exists( storage: &dyn StorageBackend, username: &str, ) -> AuthResult<bool>

Source

pub async fn create_user( storage: &dyn StorageBackend, username: &str, password: &str, policies: Vec<String>, ) -> AuthResult<()>

Writes a user without validating anything, overwriting any existing record. This is the bootstrap path: its credentials come from operator configuration, which predates the HTTP rules and may not meet them (a short password, an email-shaped name), and refusing them would stop an existing deployment from starting. Everything reachable over HTTP goes through Self::upsert_user instead.

Source

pub async fn upsert_user( storage: &dyn StorageBackend, username: &str, password: &str, policies: Vec<String>, ) -> AuthResult<()>

Creates the user, or replaces it outright: the password is re-hashed under a fresh salt and the policy list is swapped, not merged, so the caller always knows exactly what the identity can do afterwards.

Tokens already issued keep the policies they were minted with until they expire — a replace narrows future logins, not live sessions.

Source

pub async fn read_user( storage: &dyn StorageBackend, username: &str, ) -> AuthResult<Option<UserInfo>>

The user’s name and policies, or None if there is no such user. Never the hash: nothing outside login has any use for it.

Source

pub async fn delete_user( storage: &dyn StorageBackend, username: &str, ) -> AuthResult<bool>

Deletes the user, returning whether it existed. Tokens it already holds are not revoked — they are not indexed by owner — so they keep working until they expire, and a holder that renews them keeps them alive.

Trait Implementations§

Source§

impl AuthMethod for UserPassAuth

Source§

fn login<'life0, 'life1, 'async_trait>( &'life0 self, storage: &'life1 dyn StorageBackend, request: LoginRequest, ) -> Pin<Box<dyn Future<Output = AuthResult<AuthOutcome>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait,

Source§

impl Default for UserPassAuth

Source§

fn default() -> Self

Returns the “default value” for a type. Read more

Auto Trait Implementations§

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> Same for T

Source§

type Output = T

Should always be Self
Source§

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

Source§

type Error = !

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

fn try_from(value: U) -> Result<T, !>

Performs the conversion.
Source§

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

Source§

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