pub struct UpstreamProvider {
pub slug: String,
pub issuer: String,
pub client_id: String,
pub client_secret: String,
pub scopes: Vec<String>,
}Expand description
POD record describing one upstream identity provider. Mirrors the
planned auth.upstream_providers table shape (see plan 12d) so the
admin API can INSERT … RETURNING * and feed the row directly into
OidcRegistry::add without a translation step.
Fields§
§slug: StringStable slug used in routes (/login/{slug}) and as the
auth.user_upstream.provider column value. Lower-snake-case
matches the rest of the codebase’s naming.
issuer: StringIssuer URL — the value the discovery doc lives under
(<issuer>/.well-known/openid-configuration).
client_id: StringRP client id registered with the upstream.
client_secret: StringRP client secret registered with the upstream. Stored as plaintext here because phase 5 has no secret-at-rest envelope yet — admin CRUD lands with the encryption story.
scopes: Vec<String>Scopes requested at authorize time. Common set:
["openid", "email", "profile"]. openid is added implicitly
by openidconnect; we forward the rest unchanged.
Trait Implementations§
Source§impl Clone for UpstreamProvider
impl Clone for UpstreamProvider
Source§fn clone(&self) -> UpstreamProvider
fn clone(&self) -> UpstreamProvider
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for UpstreamProvider
impl Debug for UpstreamProvider
Source§impl PartialEq for UpstreamProvider
impl PartialEq for UpstreamProvider
impl Eq for UpstreamProvider
impl StructuralPartialEq for UpstreamProvider
Auto Trait Implementations§
impl Freeze for UpstreamProvider
impl RefUnwindSafe for UpstreamProvider
impl Send for UpstreamProvider
impl Sync for UpstreamProvider
impl Unpin for UpstreamProvider
impl UnsafeUnpin for UpstreamProvider
impl UnwindSafe for UpstreamProvider
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
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
key and return true if they are equal.Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
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>
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>
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