pub trait OAuth2AccessTokenRepository: Send + Sync {
    type Error;

    // Required methods
    fn lookup<'life0, 'async_trait>(
        &'life0 mut self,
        id: Ulid,
    ) -> Pin<Box<dyn Future<Output = Result<Option<AccessToken>, Self::Error>> + Send + 'async_trait>>
       where Self: 'async_trait,
             'life0: 'async_trait;
    fn find_by_token<'life0, 'life1, 'async_trait>(
        &'life0 mut self,
        access_token: &'life1 str,
    ) -> Pin<Box<dyn Future<Output = Result<Option<AccessToken>, Self::Error>> + Send + 'async_trait>>
       where Self: 'async_trait,
             'life0: 'async_trait,
             'life1: 'async_trait;
    fn add<'life0, 'life1, 'life2, 'life3, 'async_trait>(
        &'life0 mut self,
        rng: &'life1 mut (dyn RngCore + Send),
        clock: &'life2 dyn Clock,
        session: &'life3 Session,
        access_token: String,
        expires_after: Option<Duration>,
    ) -> Pin<Box<dyn Future<Output = Result<AccessToken, Self::Error>> + Send + 'async_trait>>
       where Self: 'async_trait,
             'life0: 'async_trait,
             'life1: 'async_trait,
             'life2: 'async_trait,
             'life3: 'async_trait;
    fn revoke<'life0, 'life1, 'async_trait>(
        &'life0 mut self,
        clock: &'life1 dyn Clock,
        access_token: AccessToken,
    ) -> Pin<Box<dyn Future<Output = Result<AccessToken, Self::Error>> + Send + 'async_trait>>
       where Self: 'async_trait,
             'life0: 'async_trait,
             'life1: 'async_trait;
    fn cleanup_expired<'life0, 'life1, 'async_trait>(
        &'life0 mut self,
        clock: &'life1 dyn Clock,
    ) -> Pin<Box<dyn Future<Output = Result<usize, Self::Error>> + Send + 'async_trait>>
       where Self: 'async_trait,
             'life0: 'async_trait,
             'life1: 'async_trait;
}
Expand description

An OAuth2AccessTokenRepository helps interacting with AccessToken saved in the storage backend

Required Associated Types§

source

type Error

The error type returned by the repository

Required Methods§

source

fn lookup<'life0, 'async_trait>( &'life0 mut self, id: Ulid, ) -> Pin<Box<dyn Future<Output = Result<Option<AccessToken>, Self::Error>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Lookup an access token by its ID

Returns the access token if it exists, None otherwise

§Parameters
  • id: The ID of the access token to lookup
§Errors

Returns Self::Error if the underlying repository fails

source

fn find_by_token<'life0, 'life1, 'async_trait>( &'life0 mut self, access_token: &'life1 str, ) -> Pin<Box<dyn Future<Output = Result<Option<AccessToken>, Self::Error>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait,

Find an access token by its token

Returns the access token if it exists, None otherwise

§Parameters
  • access_token: The token of the access token to lookup
§Errors

Returns Self::Error if the underlying repository fails

source

fn add<'life0, 'life1, 'life2, 'life3, 'async_trait>( &'life0 mut self, rng: &'life1 mut (dyn RngCore + Send), clock: &'life2 dyn Clock, session: &'life3 Session, access_token: String, expires_after: Option<Duration>, ) -> Pin<Box<dyn Future<Output = Result<AccessToken, Self::Error>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait, 'life2: 'async_trait, 'life3: 'async_trait,

Add a new access token to the database

Returns the newly created access token

§Parameters
  • rng: A random number generator
  • clock: The clock used to generate timestamps
  • session: The session the access token is associated with
  • access_token: The access token to add
  • expires_after: The duration after which the access token expires. If None the access token never expires
§Errors

Returns Self::Error if the underlying repository fails

source

fn revoke<'life0, 'life1, 'async_trait>( &'life0 mut self, clock: &'life1 dyn Clock, access_token: AccessToken, ) -> Pin<Box<dyn Future<Output = Result<AccessToken, Self::Error>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait,

Revoke an access token

Returns the revoked access token

§Parameters
  • clock: The clock used to generate timestamps
  • access_token: The access token to revoke
§Errors

Returns Self::Error if the underlying repository fails

source

fn cleanup_expired<'life0, 'life1, 'async_trait>( &'life0 mut self, clock: &'life1 dyn Clock, ) -> Pin<Box<dyn Future<Output = Result<usize, Self::Error>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait,

Cleanup expired access tokens

Returns the number of access tokens that were cleaned up

§Parameters
  • clock: The clock used to get the current time
§Errors

Returns Self::Error if the underlying repository fails

Implementations on Foreign Types§

source§

impl<R> OAuth2AccessTokenRepository for Box<R>

source§

type Error = <R as OAuth2AccessTokenRepository>::Error

source§

fn lookup<'life0, 'async_trait>( &'life0 mut self, id: Ulid, ) -> Pin<Box<dyn Future<Output = Result<Option<AccessToken>, Self::Error>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

source§

fn find_by_token<'life0, 'life1, 'async_trait>( &'life0 mut self, access_token: &'life1 str, ) -> Pin<Box<dyn Future<Output = Result<Option<AccessToken>, Self::Error>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait,

source§

fn add<'life0, 'life1, 'life2, 'life3, 'async_trait>( &'life0 mut self, rng: &'life1 mut (dyn RngCore + Send), clock: &'life2 dyn Clock, session: &'life3 Session, access_token: String, expires_after: Option<Duration>, ) -> Pin<Box<dyn Future<Output = Result<AccessToken, Self::Error>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait, 'life2: 'async_trait, 'life3: 'async_trait,

source§

fn revoke<'life0, 'life1, 'async_trait>( &'life0 mut self, clock: &'life1 dyn Clock, access_token: AccessToken, ) -> Pin<Box<dyn Future<Output = Result<AccessToken, Self::Error>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait,

source§

fn cleanup_expired<'life0, 'life1, 'async_trait>( &'life0 mut self, clock: &'life1 dyn Clock, ) -> Pin<Box<dyn Future<Output = Result<usize, Self::Error>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait,

Implementors§