Struct CfAuthProvider

Source
pub struct CfAuthProvider { /* private fields */ }
Available on crate feature cf-backend only.
Expand description

Registry auth based on Cloudflare Access, using JsonWebTokens for auth

It’s not possible to validate Service Auth tokens direclty. To use a token, you need to log in with it to an Access-protected URL, and obtain the JWT from the CF_Authorization cookie. This temporary cookie is the only way auth with this Freighter backend.

For personal account, you can call cloudflared access token to obtain the JWT.

Implementations§

Source§

impl CfAuthProvider

Source

pub fn new(config: Config) -> AuthResult<Self>

Trait Implementations§

Source§

impl AuthProvider for CfAuthProvider

Source§

fn auth_config<'life0, 'life1, 'async_trait>( &'life0 self, token: &'life1 str, ) -> Pin<Box<dyn Future<Output = AuthResult<()>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait,

Fetch of config.json.

Source§

type Config = Config

Source§

fn healthcheck<'life0, 'async_trait>( &'life0 self, ) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Source§

fn register<'life0, 'life1, 'async_trait>( &'life0 self, _username: &'life1 str, ) -> Pin<Box<dyn Future<Output = AuthResult<String>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait,

Register a new user, returning a token if successful.
Source§

fn list_owners<'life0, 'life1, 'life2, 'async_trait>( &'life0 self, token: &'life1 str, _crate_name: &'life2 str, ) -> Pin<Box<dyn Future<Output = AuthResult<Vec<ListedOwner>>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait, 'life2: 'async_trait,

List the owners of a crate.
Source§

fn add_owners<'life0, 'life1, 'life2, 'life3, 'life4, 'async_trait>( &'life0 self, token: &'life1 str, _users: &'life2 [&'life3 str], _crate_name: &'life4 str, ) -> Pin<Box<dyn Future<Output = AuthResult<()>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait, 'life2: 'async_trait, 'life3: 'async_trait, 'life4: 'async_trait,

Add a new owner to a crate.
Source§

fn remove_owners<'life0, 'life1, 'life2, 'life3, 'life4, 'async_trait>( &'life0 self, token: &'life1 str, _users: &'life2 [&'life3 str], _crate_name: &'life4 str, ) -> Pin<Box<dyn Future<Output = AuthResult<()>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait, 'life2: 'async_trait, 'life3: 'async_trait, 'life4: 'async_trait,

Remove an owner from a crate.
Source§

fn publish<'life0, 'life1, 'life2, 'async_trait>( &'life0 self, token: &'life1 str, _crate_name: &'life2 str, ) -> Pin<Box<dyn Future<Output = AuthResult<()>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait, 'life2: 'async_trait,

Verify that a user has permission to publish new versions of a crate. Read more
Source§

fn auth_yank<'life0, 'life1, 'life2, 'async_trait>( &'life0 self, token: &'life1 str, _crate_name: &'life2 str, ) -> Pin<Box<dyn Future<Output = AuthResult<()>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait, 'life2: 'async_trait,

Verify that a user has permission to yank or unyank versions of a crate.
Source§

fn auth_index_fetch<'life0, 'life1, 'life2, 'async_trait>( &'life0 self, token: &'life1 str, _all_users_can_read_crates: &'life2 str, ) -> Pin<Box<dyn Future<Output = AuthResult<()>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait, 'life2: 'async_trait,

Verify that a user is allowed to look at the index entry for a given crate. Read more
Source§

fn auth_crate_download<'life0, 'life1, 'life2, 'async_trait>( &'life0 self, token: &'life1 str, _all_users_can_read_crates: &'life2 str, ) -> Pin<Box<dyn Future<Output = AuthResult<()>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait, 'life2: 'async_trait,

Verify that a user is allowed to download a given crate. Read more
Source§

fn auth_view_full_index<'life0, 'life1, 'async_trait>( &'life0 self, token: &'life1 str, ) -> Pin<Box<dyn Future<Output = AuthResult<()>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait,

Verify that a user is allowed to view the full index. Read more
Source§

fn token_from_headers<'h>( &self, headers: &'h HeaderMap, ) -> Result<Option<&'h str>, StatusCode>

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<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<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> Same for T

Source§

type Output = T

Should always be Self
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
Source§

impl<T> ErasedDestructor for T
where T: 'static,