pub enum MfaOutcome {
Accepted {
via: MfaMethod,
recovery_codes_left: i64,
},
Rejected,
Replayed,
NotEnrolled,
}Expand description
The result of checking a second-factor submission.
Every variant but MfaOutcome::Accepted must reach the client as one
invalid_credentials, exactly as crate::admin::users::AuthOutcome’s
three failures do – they are kept apart here so the log can say which.
Variants§
Accepted
Fields
Rejected
Neither a valid code for this moment nor an unspent recovery code.
Replayed
A correct TOTP code, resubmitted inside its own 30-second window (RFC 6238 §5.2). Refused, and worth its own name: it is what somebody replaying an observed code looks like.
NotEnrolled
No confirmed factor to verify against. Reachable only if a factor was removed between the password step and this one.
Implementations§
Trait Implementations§
Source§impl Clone for MfaOutcome
impl Clone for MfaOutcome
Source§impl Debug for MfaOutcome
impl Debug for MfaOutcome
impl Eq for MfaOutcome
Source§impl PartialEq for MfaOutcome
impl PartialEq for MfaOutcome
impl StructuralPartialEq for MfaOutcome
Auto Trait Implementations§
impl Freeze for MfaOutcome
impl RefUnwindSafe for MfaOutcome
impl Send for MfaOutcome
impl Sync for MfaOutcome
impl Unpin for MfaOutcome
impl UnsafeUnpin for MfaOutcome
impl UnwindSafe for MfaOutcome
Blanket Implementations§
Source§impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
Source§impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
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
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
Compare self to
key and return true if they are equal.Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
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