Skip to main content

ClientMode

Enum ClientMode 

Source
pub enum ClientMode {
    Live,
    Emulator {
        host: String,
    },
}
Expand description

Selects whether an crate::auth::AuthClient talks to production Firebase or a local emulator instance.

Variants§

§

Live

Talk to production Firebase Authentication.

§

Emulator

Talk to a local Firebase Auth Emulator at host (e.g. localhost:9099).

Fields

§host: String

The emulator’s host and port.

Implementations§

Source§

impl ClientMode

Source

pub fn resolve(explicit_emulator_host: Option<String>) -> Self

Resolves the mode to use: an explicitly-requested emulator host takes priority, then the FIREBASE_AUTH_EMULATOR_HOST environment variable, and otherwise ClientMode::Live.

Source

pub fn endpoints(&self, project_id: &str) -> IdentityToolkitEndpoints

Builds the Identity Toolkit endpoint set for this mode.

Source

pub fn requires_bearer_token(&self) -> bool

Whether requests in this mode require an OAuth2 bearer token.

The Firebase Auth Emulator does not enforce authentication.

Source

pub fn emulator_api_key(&self) -> Option<&'static str>

The dummy key= query parameter value to attach to Identity Toolkit REST calls in emulator mode, or None in live mode.

Every Identity Toolkit v1 accounts:* endpoint requires an API key query parameter to be present, even on the emulator — it isn’t validated there, but its absence produces the same PERMISSION_DENIED / “The request is missing a valid API key.” error the production API returns for unauthenticated calls. Production calls instead rely solely on the OAuth2 bearer token (see Self::requires_bearer_token) and must not send this parameter.

Source

pub fn emulator_bearer_token(&self) -> Option<&'static str>

The magic Authorization: Bearer token value the Firebase Auth Emulator recognizes as a privileged/admin caller, or None in live mode (where a real OAuth2 token is required instead — see Self::requires_bearer_token).

Confirmed against the emulator’s own source (firebase-tools/src/emulator/auth/operations.ts): several operations, including user creation, branch on whether the request carries recognized OAuth2 credentials (ctx.security?.Oauth2) to decide whether to treat the caller as an admin. The literal string "owner" is what the official Admin SDKs send as the bearer token when FIREBASE_AUTH_EMULATOR_HOST is set, and is the value the emulator’s Exegesis-based request validator recognizes for this purpose. Without it, admin-only operations are instead evaluated on the unprivileged/client path and fail with errors like MISSING_ID_TOKEN that only make sense for that path.

Trait Implementations§

Source§

impl Clone for ClientMode

Source§

fn clone(&self) -> ClientMode

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for ClientMode

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. 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<'a, T, E> AsTaggedExplicit<'a, E> for T
where T: 'a,

Source§

fn explicit(self, class: Class, tag: u32) -> TaggedParser<'a, Explicit, Self, E>

Source§

impl<'a, T, E> AsTaggedImplicit<'a, E> for T
where T: 'a,

Source§

fn implicit( self, class: Class, constructed: bool, tag: u32, ) -> TaggedParser<'a, Implicit, Self, E>

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<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. 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> PolicyExt for T
where T: ?Sized,

Source§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: Sized + Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow only if self and other return Action::Follow. Read more
Source§

fn or<P, B, E>(self, other: P) -> Or<T, P>
where T: Sized + Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow if either self or other returns Action::Follow. Read more
Source§

impl<T> Read<Exclusive, BecauseExclusive> for T
where T: ?Sized,

Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

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

Source§

type Error = Infallible

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

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

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<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

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