mirror of
https://github.com/OMGeeky/yup-oauth2.git
synced 2026-01-24 19:00:27 +01:00
Merge pull request #146 from djrodgerspryor/custom_storage_options
Custom token storage
This commit is contained in:
@@ -5,7 +5,7 @@ use crate::error::Error;
|
||||
use crate::installed::{InstalledFlow, InstalledFlowReturnMethod};
|
||||
use crate::refresh::RefreshFlow;
|
||||
use crate::service_account::{ServiceAccountFlow, ServiceAccountFlowOpts, ServiceAccountKey};
|
||||
use crate::storage::{self, Storage};
|
||||
use crate::storage::{self, Storage, TokenStorage};
|
||||
use crate::types::{AccessToken, ApplicationSecret, TokenInfo};
|
||||
use private::AuthFlow;
|
||||
|
||||
@@ -238,6 +238,7 @@ impl<C, F> AuthenticatorBuilder<C, F> {
|
||||
tokens: Mutex::new(storage::JSONTokens::new()),
|
||||
},
|
||||
StorageType::Disk(path) => Storage::Disk(storage::DiskStorage::new(path).await?),
|
||||
StorageType::Custom(custom_store) => Storage::Custom(custom_store),
|
||||
};
|
||||
|
||||
Ok(Authenticator {
|
||||
@@ -257,6 +258,14 @@ impl<C, F> AuthenticatorBuilder<C, F> {
|
||||
}
|
||||
}
|
||||
|
||||
/// Use the provided token storage mechanism
|
||||
pub fn with_storage(self, storage: Box<dyn TokenStorage>) -> Self {
|
||||
AuthenticatorBuilder {
|
||||
storage_type: StorageType::Custom(storage),
|
||||
..self
|
||||
}
|
||||
}
|
||||
|
||||
/// Use the provided hyper client.
|
||||
pub fn hyper_client<NewC>(
|
||||
self,
|
||||
@@ -515,9 +524,14 @@ where
|
||||
}
|
||||
}
|
||||
|
||||
/// How should the acquired tokens be stored?
|
||||
enum StorageType {
|
||||
/// Store tokens in memory (and always log in again to acquire a new token on startup)
|
||||
Memory,
|
||||
/// Store tokens to disk in the given file. Warning, this may be insecure unless you configure your operating system to restrict read access to the file.
|
||||
Disk(PathBuf),
|
||||
/// Implement your own storage provider
|
||||
Custom(Box<dyn TokenStorage>),
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
|
||||
Reference in New Issue
Block a user