Skip to main content

AuthAdapter

Trait AuthAdapter 

Source
pub trait AuthAdapter:
    Debug
    + Send
    + Sync {
Show 56 methods // Required methods fn validate_access_token<'life0, 'life1, 'life2, 'async_trait>( &'life0 self, tn_id: TnId, id_tag: &'life1 str, token: &'life2 str, ) -> Pin<Box<dyn Future<Output = ClResult<AuthCtx>> + Send + 'async_trait>> where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait, 'life2: 'async_trait; fn read_id_tag<'life0, 'async_trait>( &'life0 self, tn_id: TnId, ) -> Pin<Box<dyn Future<Output = ClResult<Box<str>>> + Send + 'async_trait>> where Self: 'async_trait, 'life0: 'async_trait; fn read_tn_id<'life0, 'life1, 'async_trait>( &'life0 self, id_tag: &'life1 str, ) -> Pin<Box<dyn Future<Output = ClResult<TnId>> + Send + 'async_trait>> where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait; fn read_tenant<'life0, 'life1, 'async_trait>( &'life0 self, id_tag: &'life1 str, ) -> Pin<Box<dyn Future<Output = ClResult<AuthProfile>> + Send + 'async_trait>> where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait; fn create_tenant_registration<'life0, 'life1, 'async_trait>( &'life0 self, email: &'life1 str, ) -> Pin<Box<dyn Future<Output = ClResult<()>> + Send + 'async_trait>> where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait; fn create_tenant<'life0, 'life1, 'life2, 'async_trait>( &'life0 self, id_tag: &'life1 str, data: CreateTenantData<'life2>, ) -> Pin<Box<dyn Future<Output = ClResult<TnId>> + Send + 'async_trait>> where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait, 'life2: 'async_trait; fn delete_tenant<'life0, 'life1, 'async_trait>( &'life0 self, id_tag: &'life1 str, ) -> Pin<Box<dyn Future<Output = ClResult<()>> + Send + 'async_trait>> where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait; fn list_tenants<'life0, 'life1, 'life2, 'async_trait>( &'life0 self, opts: &'life1 ListTenantsOptions<'life2>, ) -> Pin<Box<dyn Future<Output = ClResult<Vec<TenantListItem>>> + Send + 'async_trait>> where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait, 'life2: 'async_trait; fn count_tenants<'life0, 'life1, 'life2, 'async_trait>( &'life0 self, opts: &'life1 ListTenantsOptions<'life2>, ) -> Pin<Box<dyn Future<Output = ClResult<usize>> + Send + 'async_trait>> where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait, 'life2: 'async_trait; fn create_tenant_login<'life0, 'life1, 'async_trait>( &'life0 self, id_tag: &'life1 str, ) -> Pin<Box<dyn Future<Output = ClResult<AuthLogin>> + Send + 'async_trait>> where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait; fn check_tenant_password<'life0, 'life1, 'life2, 'async_trait>( &'life0 self, id_tag: &'life1 str, password: &'life2 str, ) -> Pin<Box<dyn Future<Output = ClResult<AuthLogin>> + Send + 'async_trait>> where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait, 'life2: 'async_trait; fn update_tenant_password<'life0, 'life1, 'life2, 'async_trait>( &'life0 self, id_tag: &'life1 str, password: &'life2 str, ) -> Pin<Box<dyn Future<Output = ClResult<()>> + Send + 'async_trait>> where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait, 'life2: 'async_trait; fn update_idp_api_key<'life0, 'life1, 'life2, 'async_trait>( &'life0 self, id_tag: &'life1 str, api_key: &'life2 str, ) -> Pin<Box<dyn Future<Output = ClResult<()>> + Send + 'async_trait>> where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait, 'life2: 'async_trait; fn create_cert<'life0, 'life1, 'async_trait>( &'life0 self, cert_data: &'life1 CertData, ) -> Pin<Box<dyn Future<Output = ClResult<()>> + Send + 'async_trait>> where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait; fn read_cert_by_tn_id<'life0, 'async_trait>( &'life0 self, tn_id: TnId, ) -> Pin<Box<dyn Future<Output = ClResult<CertData>> + Send + 'async_trait>> where Self: 'async_trait, 'life0: 'async_trait; fn read_cert_by_id_tag<'life0, 'life1, 'async_trait>( &'life0 self, id_tag: &'life1 str, ) -> Pin<Box<dyn Future<Output = ClResult<CertData>> + Send + 'async_trait>> where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait; fn read_cert_by_domain<'life0, 'life1, 'async_trait>( &'life0 self, domain: &'life1 str, ) -> Pin<Box<dyn Future<Output = ClResult<CertData>> + Send + 'async_trait>> where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait; fn list_all_certs<'life0, 'async_trait>( &'life0 self, ) -> Pin<Box<dyn Future<Output = ClResult<Vec<CertData>>> + Send + 'async_trait>> where Self: 'async_trait, 'life0: 'async_trait; fn list_tenants_needing_cert_renewal<'life0, 'async_trait>( &'life0 self, renewal_days: u32, ) -> Pin<Box<dyn Future<Output = ClResult<Vec<TenantCertRenewalRow>>> + Send + 'async_trait>> where Self: 'async_trait, 'life0: 'async_trait; fn record_cert_renewal_failure<'life0, 'life1, 'async_trait>( &'life0 self, tn_id: TnId, error: &'life1 str, ) -> Pin<Box<dyn Future<Output = ClResult<()>> + Send + 'async_trait>> where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait; fn record_cert_renewal_success<'life0, 'async_trait>( &'life0 self, tn_id: TnId, ) -> Pin<Box<dyn Future<Output = ClResult<()>> + Send + 'async_trait>> where Self: 'async_trait, 'life0: 'async_trait; fn record_cert_renewal_notification<'life0, 'async_trait>( &'life0 self, tn_id: TnId, ) -> Pin<Box<dyn Future<Output = ClResult<()>> + Send + 'async_trait>> where Self: 'async_trait, 'life0: 'async_trait; fn update_tenant_status<'life0, 'async_trait>( &'life0 self, tn_id: TnId, status: char, ) -> Pin<Box<dyn Future<Output = ClResult<()>> + Send + 'async_trait>> where Self: 'async_trait, 'life0: 'async_trait; fn list_profile_keys<'life0, 'async_trait>( &'life0 self, tn_id: TnId, ) -> Pin<Box<dyn Future<Output = ClResult<Vec<AuthKey>>> + Send + 'async_trait>> where Self: 'async_trait, 'life0: 'async_trait; fn read_profile_key<'life0, 'life1, 'async_trait>( &'life0 self, tn_id: TnId, key_id: &'life1 str, ) -> Pin<Box<dyn Future<Output = ClResult<AuthKey>> + Send + 'async_trait>> where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait; fn create_profile_key<'life0, 'async_trait>( &'life0 self, tn_id: TnId, expires_at: Option<Timestamp>, ) -> Pin<Box<dyn Future<Output = ClResult<AuthKey>> + Send + 'async_trait>> where Self: 'async_trait, 'life0: 'async_trait; fn create_access_token<'life0, 'life1, 'life2, 'async_trait>( &'life0 self, tn_id: TnId, data: &'life1 AccessToken<&'life2 str>, ) -> Pin<Box<dyn Future<Output = ClResult<Box<str>>> + Send + 'async_trait>> where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait, 'life2: 'async_trait; fn create_action_token<'life0, 'async_trait>( &'life0 self, tn_id: TnId, data: CreateAction, ) -> Pin<Box<dyn Future<Output = ClResult<Box<str>>> + Send + 'async_trait>> where Self: 'async_trait, 'life0: 'async_trait; fn verify_access_token<'life0, 'life1, 'async_trait>( &'life0 self, token: &'life1 str, ) -> Pin<Box<dyn Future<Output = ClResult<()>> + Send + 'async_trait>> where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait; fn read_vapid_key<'life0, 'async_trait>( &'life0 self, tn_id: TnId, ) -> Pin<Box<dyn Future<Output = ClResult<KeyPair>> + Send + 'async_trait>> where Self: 'async_trait, 'life0: 'async_trait; fn read_vapid_public_key<'life0, 'async_trait>( &'life0 self, tn_id: TnId, ) -> Pin<Box<dyn Future<Output = ClResult<Box<str>>> + Send + 'async_trait>> where Self: 'async_trait, 'life0: 'async_trait; fn create_vapid_key<'life0, 'async_trait>( &'life0 self, tn_id: TnId, ) -> Pin<Box<dyn Future<Output = ClResult<KeyPair>> + Send + 'async_trait>> where Self: 'async_trait, 'life0: 'async_trait; fn update_vapid_key<'life0, 'life1, 'async_trait>( &'life0 self, tn_id: TnId, key: &'life1 KeyPair, ) -> Pin<Box<dyn Future<Output = ClResult<()>> + Send + 'async_trait>> where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait; fn read_var<'life0, 'life1, 'async_trait>( &'life0 self, tn_id: TnId, var: &'life1 str, ) -> Pin<Box<dyn Future<Output = ClResult<Box<str>>> + Send + 'async_trait>> where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait; fn update_var<'life0, 'life1, 'life2, 'async_trait>( &'life0 self, tn_id: TnId, var: &'life1 str, value: &'life2 str, ) -> Pin<Box<dyn Future<Output = ClResult<()>> + Send + 'async_trait>> where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait, 'life2: 'async_trait; fn list_webauthn_credentials<'life0, 'async_trait>( &'life0 self, tn_id: TnId, ) -> Pin<Box<dyn Future<Output = ClResult<Box<[Webauthn<'_>]>>> + Send + 'async_trait>> where Self: 'async_trait, 'life0: 'async_trait; fn read_webauthn_credential<'life0, 'life1, 'async_trait>( &'life0 self, tn_id: TnId, credential_id: &'life1 str, ) -> Pin<Box<dyn Future<Output = ClResult<Webauthn<'_>>> + Send + 'async_trait>> where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait; fn create_webauthn_credential<'life0, 'life1, 'async_trait>( &'life0 self, tn_id: TnId, data: &'life1 Webauthn<'_>, ) -> Pin<Box<dyn Future<Output = ClResult<()>> + Send + 'async_trait>> where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait; fn update_webauthn_credential_counter<'life0, 'life1, 'async_trait>( &'life0 self, tn_id: TnId, credential_id: &'life1 str, counter: u32, ) -> Pin<Box<dyn Future<Output = ClResult<()>> + Send + 'async_trait>> where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait; fn delete_webauthn_credential<'life0, 'life1, 'async_trait>( &'life0 self, tn_id: TnId, credential_id: &'life1 str, ) -> Pin<Box<dyn Future<Output = ClResult<()>> + Send + 'async_trait>> where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait; fn create_api_key<'life0, 'life1, 'async_trait>( &'life0 self, tn_id: TnId, opts: CreateApiKeyOptions<'life1>, ) -> Pin<Box<dyn Future<Output = ClResult<CreatedApiKey>> + Send + 'async_trait>> where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait; fn validate_api_key<'life0, 'life1, 'async_trait>( &'life0 self, key: &'life1 str, ) -> Pin<Box<dyn Future<Output = ClResult<ApiKeyValidation>> + Send + 'async_trait>> where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait; fn list_api_keys<'life0, 'async_trait>( &'life0 self, tn_id: TnId, ) -> Pin<Box<dyn Future<Output = ClResult<Vec<ApiKeyInfo>>> + Send + 'async_trait>> where Self: 'async_trait, 'life0: 'async_trait; fn read_api_key<'life0, 'async_trait>( &'life0 self, tn_id: TnId, key_id: i64, ) -> Pin<Box<dyn Future<Output = ClResult<ApiKeyInfo>> + Send + 'async_trait>> where Self: 'async_trait, 'life0: 'async_trait; fn update_api_key<'life0, 'life1, 'life2, 'async_trait>( &'life0 self, tn_id: TnId, key_id: i64, name: Option<&'life1 str>, scopes: Option<&'life2 str>, expires_at: Option<Timestamp>, ) -> Pin<Box<dyn Future<Output = ClResult<ApiKeyInfo>> + Send + 'async_trait>> where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait, 'life2: 'async_trait; fn delete_api_key<'life0, 'async_trait>( &'life0 self, tn_id: TnId, key_id: i64, ) -> Pin<Box<dyn Future<Output = ClResult<()>> + Send + 'async_trait>> where Self: 'async_trait, 'life0: 'async_trait; fn cleanup_expired_api_keys<'life0, 'async_trait>( &'life0 self, ) -> Pin<Box<dyn Future<Output = ClResult<u32>> + Send + 'async_trait>> where Self: 'async_trait, 'life0: 'async_trait; fn cleanup_expired_verification_codes<'life0, 'async_trait>( &'life0 self, ) -> Pin<Box<dyn Future<Output = ClResult<u32>> + Send + 'async_trait>> where Self: 'async_trait, 'life0: 'async_trait; fn create_proxy_site<'life0, 'life1, 'life2, 'async_trait>( &'life0 self, data: &'life1 CreateProxySiteData<'life2>, ) -> Pin<Box<dyn Future<Output = ClResult<ProxySiteData>> + Send + 'async_trait>> where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait, 'life2: 'async_trait; fn read_proxy_site<'life0, 'async_trait>( &'life0 self, site_id: i64, ) -> Pin<Box<dyn Future<Output = ClResult<ProxySiteData>> + Send + 'async_trait>> where Self: 'async_trait, 'life0: 'async_trait; fn read_proxy_site_by_domain<'life0, 'life1, 'async_trait>( &'life0 self, domain: &'life1 str, ) -> Pin<Box<dyn Future<Output = ClResult<ProxySiteData>> + Send + 'async_trait>> where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait; fn update_proxy_site<'life0, 'life1, 'life2, 'async_trait>( &'life0 self, site_id: i64, data: &'life1 UpdateProxySiteData<'life2>, ) -> Pin<Box<dyn Future<Output = ClResult<ProxySiteData>> + Send + 'async_trait>> where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait, 'life2: 'async_trait; fn delete_proxy_site<'life0, 'async_trait>( &'life0 self, site_id: i64, ) -> Pin<Box<dyn Future<Output = ClResult<()>> + Send + 'async_trait>> where Self: 'async_trait, 'life0: 'async_trait; fn list_proxy_sites<'life0, 'async_trait>( &'life0 self, ) -> Pin<Box<dyn Future<Output = ClResult<Vec<ProxySiteData>>> + Send + 'async_trait>> where Self: 'async_trait, 'life0: 'async_trait; fn update_proxy_site_cert<'life0, 'life1, 'life2, 'async_trait>( &'life0 self, site_id: i64, cert: &'life1 str, key: &'life2 str, expires_at: Timestamp, ) -> Pin<Box<dyn Future<Output = ClResult<()>> + Send + 'async_trait>> where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait, 'life2: 'async_trait; fn list_proxy_sites_needing_cert_renewal<'life0, 'async_trait>( &'life0 self, renewal_days: u32, ) -> Pin<Box<dyn Future<Output = ClResult<Vec<ProxySiteData>>> + Send + 'async_trait>> where Self: 'async_trait, 'life0: 'async_trait;
}
Expand description

A Cloudillo auth adapter

Every AuthAdapter implementation is required to implement this trait. An AuthAdapter is responsible for storing and managing all sensitive data used for authentication and authorization.

Required Methods§

Source

fn validate_access_token<'life0, 'life1, 'life2, 'async_trait>( &'life0 self, tn_id: TnId, id_tag: &'life1 str, token: &'life2 str, ) -> Pin<Box<dyn Future<Output = ClResult<AuthCtx>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait, 'life2: 'async_trait,

Validates an access token and returns the user context

Source

fn read_id_tag<'life0, 'async_trait>( &'life0 self, tn_id: TnId, ) -> Pin<Box<dyn Future<Output = ClResult<Box<str>>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

§Profiles

Reads the ID tag of the given tenant, referenced by its ID

Source

fn read_tn_id<'life0, 'life1, 'async_trait>( &'life0 self, id_tag: &'life1 str, ) -> Pin<Box<dyn Future<Output = ClResult<TnId>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait,

Reads the ID the given tenant, referenced by its ID tag

Source

fn read_tenant<'life0, 'life1, 'async_trait>( &'life0 self, id_tag: &'life1 str, ) -> Pin<Box<dyn Future<Output = ClResult<AuthProfile>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait,

Reads a tenant profile

Source

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

Creates a tenant registration

Source

fn create_tenant<'life0, 'life1, 'life2, 'async_trait>( &'life0 self, id_tag: &'life1 str, data: CreateTenantData<'life2>, ) -> Pin<Box<dyn Future<Output = ClResult<TnId>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait, 'life2: 'async_trait,

Creates a new tenant

Source

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

Deletes a tenant

Source

fn list_tenants<'life0, 'life1, 'life2, 'async_trait>( &'life0 self, opts: &'life1 ListTenantsOptions<'life2>, ) -> Pin<Box<dyn Future<Output = ClResult<Vec<TenantListItem>>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait, 'life2: 'async_trait,

Lists all tenants (for admin use)

Source

fn count_tenants<'life0, 'life1, 'life2, 'async_trait>( &'life0 self, opts: &'life1 ListTenantsOptions<'life2>, ) -> Pin<Box<dyn Future<Output = ClResult<usize>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait, 'life2: 'async_trait,

Returns the total number of tenants matching the filter (ignoring limit/offset)

Source

fn create_tenant_login<'life0, 'life1, 'async_trait>( &'life0 self, id_tag: &'life1 str, ) -> Pin<Box<dyn Future<Output = ClResult<AuthLogin>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait,

Source

fn check_tenant_password<'life0, 'life1, 'life2, 'async_trait>( &'life0 self, id_tag: &'life1 str, password: &'life2 str, ) -> Pin<Box<dyn Future<Output = ClResult<AuthLogin>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait, 'life2: 'async_trait,

Source

fn update_tenant_password<'life0, 'life1, 'life2, 'async_trait>( &'life0 self, id_tag: &'life1 str, password: &'life2 str, ) -> Pin<Box<dyn Future<Output = ClResult<()>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait, 'life2: 'async_trait,

Source

fn update_idp_api_key<'life0, 'life1, 'life2, 'async_trait>( &'life0 self, id_tag: &'life1 str, api_key: &'life2 str, ) -> Pin<Box<dyn Future<Output = ClResult<()>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait, 'life2: 'async_trait,

Source

fn create_cert<'life0, 'life1, 'async_trait>( &'life0 self, cert_data: &'life1 CertData, ) -> Pin<Box<dyn Future<Output = ClResult<()>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait,

Source

fn read_cert_by_tn_id<'life0, 'async_trait>( &'life0 self, tn_id: TnId, ) -> Pin<Box<dyn Future<Output = ClResult<CertData>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Source

fn read_cert_by_id_tag<'life0, 'life1, 'async_trait>( &'life0 self, id_tag: &'life1 str, ) -> Pin<Box<dyn Future<Output = ClResult<CertData>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait,

Source

fn read_cert_by_domain<'life0, 'life1, 'async_trait>( &'life0 self, domain: &'life1 str, ) -> Pin<Box<dyn Future<Output = ClResult<CertData>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait,

Source

fn list_all_certs<'life0, 'async_trait>( &'life0 self, ) -> Pin<Box<dyn Future<Output = ClResult<Vec<CertData>>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Source

fn list_tenants_needing_cert_renewal<'life0, 'async_trait>( &'life0 self, renewal_days: u32, ) -> Pin<Box<dyn Future<Output = ClResult<Vec<TenantCertRenewalRow>>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Source

fn record_cert_renewal_failure<'life0, 'life1, 'async_trait>( &'life0 self, tn_id: TnId, error: &'life1 str, ) -> Pin<Box<dyn Future<Output = ClResult<()>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait,

Record an ACME renewal failure for the given tenant: increments failure_count, sets last_renewal_error, and stamps last_renewal_attempt_at. No-op if no cert row exists for the tenant.

Source

fn record_cert_renewal_success<'life0, 'async_trait>( &'life0 self, tn_id: TnId, ) -> Pin<Box<dyn Future<Output = ClResult<()>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Record a successful ACME renewal: clears last_renewal_error, resets failure_count to 0, clears notified_at.

Source

fn record_cert_renewal_notification<'life0, 'async_trait>( &'life0 self, tn_id: TnId, ) -> Pin<Box<dyn Future<Output = ClResult<()>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Stamp notified_at after sending a renewal-failure notification email.

Source

fn update_tenant_status<'life0, 'async_trait>( &'life0 self, tn_id: TnId, status: char, ) -> Pin<Box<dyn Future<Output = ClResult<()>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Update tenant status. Known statuses: 'A' = Active, 'S' = Suspended (cert-related, set/cleared automatically by the ACME renewal task when an expired cert keeps failing renewal), 'X' = Purging (soft-deleted; admin force-purge has begun. Auth is blocked and a retry of the purge endpoint resumes destructive cleanup).

Source

fn list_profile_keys<'life0, 'async_trait>( &'life0 self, tn_id: TnId, ) -> Pin<Box<dyn Future<Output = ClResult<Vec<AuthKey>>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Source

fn read_profile_key<'life0, 'life1, 'async_trait>( &'life0 self, tn_id: TnId, key_id: &'life1 str, ) -> Pin<Box<dyn Future<Output = ClResult<AuthKey>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait,

Source

fn create_profile_key<'life0, 'async_trait>( &'life0 self, tn_id: TnId, expires_at: Option<Timestamp>, ) -> Pin<Box<dyn Future<Output = ClResult<AuthKey>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Source

fn create_access_token<'life0, 'life1, 'life2, 'async_trait>( &'life0 self, tn_id: TnId, data: &'life1 AccessToken<&'life2 str>, ) -> Pin<Box<dyn Future<Output = ClResult<Box<str>>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait, 'life2: 'async_trait,

Source

fn create_action_token<'life0, 'async_trait>( &'life0 self, tn_id: TnId, data: CreateAction, ) -> Pin<Box<dyn Future<Output = ClResult<Box<str>>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Source

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

Source

fn read_vapid_key<'life0, 'async_trait>( &'life0 self, tn_id: TnId, ) -> Pin<Box<dyn Future<Output = ClResult<KeyPair>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Source

fn read_vapid_public_key<'life0, 'async_trait>( &'life0 self, tn_id: TnId, ) -> Pin<Box<dyn Future<Output = ClResult<Box<str>>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Source

fn create_vapid_key<'life0, 'async_trait>( &'life0 self, tn_id: TnId, ) -> Pin<Box<dyn Future<Output = ClResult<KeyPair>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Source

fn update_vapid_key<'life0, 'life1, 'async_trait>( &'life0 self, tn_id: TnId, key: &'life1 KeyPair, ) -> Pin<Box<dyn Future<Output = ClResult<()>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait,

Source

fn read_var<'life0, 'life1, 'async_trait>( &'life0 self, tn_id: TnId, var: &'life1 str, ) -> Pin<Box<dyn Future<Output = ClResult<Box<str>>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait,

Source

fn update_var<'life0, 'life1, 'life2, 'async_trait>( &'life0 self, tn_id: TnId, var: &'life1 str, value: &'life2 str, ) -> Pin<Box<dyn Future<Output = ClResult<()>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait, 'life2: 'async_trait,

Source

fn list_webauthn_credentials<'life0, 'async_trait>( &'life0 self, tn_id: TnId, ) -> Pin<Box<dyn Future<Output = ClResult<Box<[Webauthn<'_>]>>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Source

fn read_webauthn_credential<'life0, 'life1, 'async_trait>( &'life0 self, tn_id: TnId, credential_id: &'life1 str, ) -> Pin<Box<dyn Future<Output = ClResult<Webauthn<'_>>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait,

Source

fn create_webauthn_credential<'life0, 'life1, 'async_trait>( &'life0 self, tn_id: TnId, data: &'life1 Webauthn<'_>, ) -> Pin<Box<dyn Future<Output = ClResult<()>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait,

Source

fn update_webauthn_credential_counter<'life0, 'life1, 'async_trait>( &'life0 self, tn_id: TnId, credential_id: &'life1 str, counter: u32, ) -> Pin<Box<dyn Future<Output = ClResult<()>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait,

Source

fn delete_webauthn_credential<'life0, 'life1, 'async_trait>( &'life0 self, tn_id: TnId, credential_id: &'life1 str, ) -> Pin<Box<dyn Future<Output = ClResult<()>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait,

Source

fn create_api_key<'life0, 'life1, 'async_trait>( &'life0 self, tn_id: TnId, opts: CreateApiKeyOptions<'life1>, ) -> Pin<Box<dyn Future<Output = ClResult<CreatedApiKey>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait,

Source

fn validate_api_key<'life0, 'life1, 'async_trait>( &'life0 self, key: &'life1 str, ) -> Pin<Box<dyn Future<Output = ClResult<ApiKeyValidation>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait,

Source

fn list_api_keys<'life0, 'async_trait>( &'life0 self, tn_id: TnId, ) -> Pin<Box<dyn Future<Output = ClResult<Vec<ApiKeyInfo>>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Source

fn read_api_key<'life0, 'async_trait>( &'life0 self, tn_id: TnId, key_id: i64, ) -> Pin<Box<dyn Future<Output = ClResult<ApiKeyInfo>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Source

fn update_api_key<'life0, 'life1, 'life2, 'async_trait>( &'life0 self, tn_id: TnId, key_id: i64, name: Option<&'life1 str>, scopes: Option<&'life2 str>, expires_at: Option<Timestamp>, ) -> Pin<Box<dyn Future<Output = ClResult<ApiKeyInfo>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait, 'life2: 'async_trait,

Source

fn delete_api_key<'life0, 'async_trait>( &'life0 self, tn_id: TnId, key_id: i64, ) -> Pin<Box<dyn Future<Output = ClResult<()>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Source

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

Source

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

Source

fn create_proxy_site<'life0, 'life1, 'life2, 'async_trait>( &'life0 self, data: &'life1 CreateProxySiteData<'life2>, ) -> Pin<Box<dyn Future<Output = ClResult<ProxySiteData>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait, 'life2: 'async_trait,

Source

fn read_proxy_site<'life0, 'async_trait>( &'life0 self, site_id: i64, ) -> Pin<Box<dyn Future<Output = ClResult<ProxySiteData>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Source

fn read_proxy_site_by_domain<'life0, 'life1, 'async_trait>( &'life0 self, domain: &'life1 str, ) -> Pin<Box<dyn Future<Output = ClResult<ProxySiteData>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait,

Source

fn update_proxy_site<'life0, 'life1, 'life2, 'async_trait>( &'life0 self, site_id: i64, data: &'life1 UpdateProxySiteData<'life2>, ) -> Pin<Box<dyn Future<Output = ClResult<ProxySiteData>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait, 'life2: 'async_trait,

Source

fn delete_proxy_site<'life0, 'async_trait>( &'life0 self, site_id: i64, ) -> Pin<Box<dyn Future<Output = ClResult<()>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Source

fn list_proxy_sites<'life0, 'async_trait>( &'life0 self, ) -> Pin<Box<dyn Future<Output = ClResult<Vec<ProxySiteData>>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Source

fn update_proxy_site_cert<'life0, 'life1, 'life2, 'async_trait>( &'life0 self, site_id: i64, cert: &'life1 str, key: &'life2 str, expires_at: Timestamp, ) -> Pin<Box<dyn Future<Output = ClResult<()>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait, 'life2: 'async_trait,

Source

fn list_proxy_sites_needing_cert_renewal<'life0, 'async_trait>( &'life0 self, renewal_days: u32, ) -> Pin<Box<dyn Future<Output = ClResult<Vec<ProxySiteData>>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Dyn Compatibility§

This trait is dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety".

Implementors§