#[non_exhaustive]pub struct AuthContext {
pub user_id: UserId,
pub session_id: Option<i64>,
pub roles: Vec<String>,
pub session_started_at: Option<UnixMillis>,
}Expand description
Who is calling: attached to a request by an Authenticator.
Fields (Non-exhaustive)§
This struct is marked as non-exhaustive
Non-exhaustive structs could have additional fields added in future. Therefore, non-exhaustive structs cannot be constructed in external crates using the traditional
Struct { .. } syntax; cannot be matched against without a wildcard ..; and struct update syntax will not work.user_id: UserIdThe authenticated user.
session_id: Option<i64>The session (token family) the request’s token belongs to; None for authenticators
without sessions (e.g. a game’s API key).
roles: Vec<String>The user’s roles (admin, a game’s own); empty for a normal player.
session_started_at: Option<UnixMillis>When the session was started (the login); for “log in again first” checks.
Implementations§
Source§impl AuthContext
impl AuthContext
Sourcepub fn with_session_started_at(self, at: UnixMillis) -> Self
pub fn with_session_started_at(self, at: UnixMillis) -> Self
The same context with the session’s start (login) time.
Sourcepub fn is_recent_login(&self, now: UnixMillis, max_age_ms: i64) -> bool
pub fn is_recent_login(&self, now: UnixMillis, max_age_ms: i64) -> bool
Whether the session was started (logged in) at most max_age_ms before now.
Sourcepub fn with_session(self, session_id: i64) -> Self
pub fn with_session(self, session_id: i64) -> Self
The same context with a session id.
Sourcepub fn with_roles(self, roles: Vec<String>) -> Self
pub fn with_roles(self, roles: Vec<String>) -> Self
The same context with these roles.
Sourcepub fn require_role(&self, role: &str) -> Result<(), AppError>
pub fn require_role(&self, role: &str) -> Result<(), AppError>
Ok if the user has this role, else 403 forbidden (for roles chosen at run time; the
RequireRole extractor covers fixed ones).
Trait Implementations§
Source§impl Clone for AuthContext
impl Clone for AuthContext
Source§impl Debug for AuthContext
impl Debug for AuthContext
impl Eq for AuthContext
Source§impl<S: Send + Sync> FromRequestParts<S> for AuthContext
impl<S: Send + Sync> FromRequestParts<S> for AuthContext
Source§impl<S: Send + Sync> OptionalFromRequestParts<S> for AuthContext
impl<S: Send + Sync> OptionalFromRequestParts<S> for AuthContext
Source§impl PartialEq for AuthContext
impl PartialEq for AuthContext
impl StructuralPartialEq for AuthContext
Auto Trait Implementations§
impl Freeze for AuthContext
impl RefUnwindSafe for AuthContext
impl Send for AuthContext
impl Sync for AuthContext
impl Unpin for AuthContext
impl UnsafeUnpin for AuthContext
impl UnwindSafe for AuthContext
Blanket Implementations§
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
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
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§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<S, T> FromRequest<S, ViaParts> for T
impl<S, T> FromRequest<S, ViaParts> for T
Source§type Rejection = <T as FromRequestParts<S>>::Rejection
type Rejection = <T as FromRequestParts<S>>::Rejection
If the extractor fails it’ll use this “rejection” type. A rejection is
a kind of error that can be converted into a response.
Source§fn from_request(
req: Request<Body>,
state: &S,
) -> impl Future<Output = Result<T, <T as FromRequest<S, ViaParts>>::Rejection>>
fn from_request( req: Request<Body>, state: &S, ) -> impl Future<Output = Result<T, <T as FromRequest<S, ViaParts>>::Rejection>>
Perform the extraction.
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