pub struct UserFromOAuthToken(User);Expand description
Authenticated user extracted from a courses.mooc.fi OAuth 2.0 access token.
The client sends an opaque access token issued by this backend’s own OAuth
provider (via the device-authorization flow) as Authorization: Bearer <token>.
The token is hashed to a digest, looked up in oauth_access_tokens, gated on
the exercise-services scope, and mapped to the local user that owns it.
The exact error bodies and status codes are a contract with the tmc-langs client, which keys its error mapping on them:
- a missing / invalid / expired / revoked token, a token whose client may
not use Bearer tokens, a sender-constrained (DPoP) token, or a token whose
user no longer exists all yield
401with anunauthorizedbody; - a valid token that lacks the
exercise-servicesscope yields403with aforbiddenbody.
Tuple Fields§
§0: UserTrait Implementations§
Source§impl Clone for UserFromOAuthToken
impl Clone for UserFromOAuthToken
Source§fn clone(&self) -> UserFromOAuthToken
fn clone(&self) -> UserFromOAuthToken
Returns a duplicate of the value. Read more
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreSource§impl Debug for UserFromOAuthToken
impl Debug for UserFromOAuthToken
Source§impl Deref for UserFromOAuthToken
impl Deref for UserFromOAuthToken
Source§impl DerefMut for UserFromOAuthToken
impl DerefMut for UserFromOAuthToken
Source§impl FromRequest for UserFromOAuthToken
impl FromRequest for UserFromOAuthToken
Source§type Error = ControllerError
type Error = ControllerError
The associated error which can be returned.
Source§type Future = Pin<Box<dyn Future<Output = Result<UserFromOAuthToken, ControllerError>>>>
type Future = Pin<Box<dyn Future<Output = Result<UserFromOAuthToken, ControllerError>>>>
Future that resolves to a
Self. Read moreSource§fn from_request(req: &HttpRequest, _payload: &mut Payload) -> Self::Future
fn from_request(req: &HttpRequest, _payload: &mut Payload) -> Self::Future
Create a
Self from request parts asynchronously.§fn extract(req: &HttpRequest) -> Self::Future
fn extract(req: &HttpRequest) -> Self::Future
Create a
Self from request head asynchronously. Read moreAuto Trait Implementations§
impl Freeze for UserFromOAuthToken
impl RefUnwindSafe for UserFromOAuthToken
impl Send for UserFromOAuthToken
impl Sync for UserFromOAuthToken
impl Unpin for UserFromOAuthToken
impl UnsafeUnpin for UserFromOAuthToken
impl UnwindSafe for UserFromOAuthToken
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
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
§impl<T> FutureExt for T
impl<T> FutureExt for T
§fn with_context(self, otel_cx: Context) -> WithContext<Self> ⓘ
fn with_context(self, otel_cx: Context) -> WithContext<Self> ⓘ
§fn with_current_context(self) -> WithContext<Self> ⓘ
fn with_current_context(self) -> WithContext<Self> ⓘ
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> 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§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
Wrap the input message
T in a tonic::Request§impl<L> LayerExt<L> for L
impl<L> LayerExt<L> for L
§fn named_layer<S>(&self, service: S) -> Layered<<L as Layer<S>>::Service, S>where
L: Layer<S>,
fn named_layer<S>(&self, service: S) -> Layered<<L as Layer<S>>::Service, S>where
L: Layer<S>,
Applies the layer to a service and wraps it in [
Layered].§impl<T> PolicyExt for Twhere
T: ?Sized,
impl<T> PolicyExt for Twhere
T: ?Sized,
§impl<T> ServiceExt for T
impl<T> ServiceExt for T
§fn map_response_body<F>(self, f: F) -> MapResponseBody<Self, F>where
Self: Sized,
fn map_response_body<F>(self, f: F) -> MapResponseBody<Self, F>where
Self: Sized,
Apply a transformation to the response body. Read more
§fn decompression(self) -> Decompression<Self>where
Self: Sized,
fn decompression(self) -> Decompression<Self>where
Self: Sized,
Decompress response bodies. Read more
§fn trace_for_http(self) -> Trace<Self, SharedClassifier<ServerErrorsAsFailures>>where
Self: Sized,
fn trace_for_http(self) -> Trace<Self, SharedClassifier<ServerErrorsAsFailures>>where
Self: Sized,
High level tracing that classifies responses using HTTP status codes. Read more
§fn trace_for_grpc(self) -> Trace<Self, SharedClassifier<GrpcErrorsAsFailures>>where
Self: Sized,
fn trace_for_grpc(self) -> Trace<Self, SharedClassifier<GrpcErrorsAsFailures>>where
Self: Sized,
High level tracing that classifies responses using gRPC headers. Read more