mirror of
https://github.com/OMGeeky/yup-oauth2.git
synced 2025-12-31 08:30:05 +01:00
feat(GetToken): Add application_secret method to GetToken trait.
This makes decoupling Authenticator and individual flows easier while allowing for refreshing tokens.
This commit is contained in:
@@ -55,6 +55,9 @@ impl<
|
||||
fn api_key(&mut self) -> Option<String> {
|
||||
None
|
||||
}
|
||||
fn application_secret(&self) -> ApplicationSecret {
|
||||
self.application_secret.clone()
|
||||
}
|
||||
}
|
||||
|
||||
impl<FD, C> DeviceFlow<FD, C>
|
||||
|
||||
@@ -61,10 +61,8 @@ where
|
||||
})
|
||||
}
|
||||
|
||||
impl<
|
||||
FD: FlowDelegate + 'static + Send + Clone,
|
||||
C: hyper::client::connect::Connect + 'static,
|
||||
> GetToken for InstalledFlow<FD, C>
|
||||
impl<FD: FlowDelegate + 'static + Send + Clone, C: hyper::client::connect::Connect + 'static>
|
||||
GetToken for InstalledFlow<FD, C>
|
||||
{
|
||||
fn token<'b, I, T>(
|
||||
&mut self,
|
||||
@@ -79,6 +77,9 @@ impl<
|
||||
fn api_key(&mut self) -> Option<String> {
|
||||
None
|
||||
}
|
||||
fn application_secret(&self) -> ApplicationSecret {
|
||||
self.appsecret.clone()
|
||||
}
|
||||
}
|
||||
|
||||
pub struct InstalledFlow<FD: FlowDelegate, C: hyper::client::connect::Connect + 'static> {
|
||||
@@ -99,11 +100,8 @@ pub enum InstalledFlowReturnMethod {
|
||||
HTTPRedirect(u16),
|
||||
}
|
||||
|
||||
impl<
|
||||
'c,
|
||||
FD: 'static + FlowDelegate + Clone + Send,
|
||||
C: 'c + hyper::client::connect::Connect,
|
||||
> InstalledFlow<FD, C>
|
||||
impl<'c, FD: 'static + FlowDelegate + Clone + Send, C: 'c + hyper::client::connect::Connect>
|
||||
InstalledFlow<FD, C>
|
||||
{
|
||||
/// Starts a new Installed App auth flow.
|
||||
/// If HTTPRedirect is chosen as method and the server can't be started, the flow falls
|
||||
|
||||
@@ -16,7 +16,7 @@ use std::error;
|
||||
use std::sync::{Arc, Mutex};
|
||||
|
||||
use crate::storage::{hash_scopes, MemoryStorage, TokenStorage};
|
||||
use crate::types::{GetToken, StringError, Token};
|
||||
use crate::types::{ApplicationSecret, GetToken, StringError, Token};
|
||||
|
||||
use futures::stream::Stream;
|
||||
use futures::{future, prelude::*};
|
||||
@@ -358,6 +358,12 @@ where
|
||||
)
|
||||
}
|
||||
|
||||
/// Returns an empty ApplicationSecret as tokens for service accounts don't need to be
|
||||
/// refreshed (they are simply reissued).
|
||||
fn application_secret(&self) -> ApplicationSecret {
|
||||
Default::default()
|
||||
}
|
||||
|
||||
fn api_key(&mut self) -> Option<String> {
|
||||
None
|
||||
}
|
||||
|
||||
@@ -205,6 +205,10 @@ pub trait GetToken {
|
||||
I: Iterator<Item = &'b T>;
|
||||
|
||||
fn api_key(&mut self) -> Option<String>;
|
||||
|
||||
/// Return an application secret with at least token_uri, client_secret, and client_id filled
|
||||
/// in. This is used for refreshing tokens without interaction from the flow.
|
||||
fn application_secret(&self) -> ApplicationSecret;
|
||||
}
|
||||
|
||||
/// Represents a token as returned by OAuth2 servers.
|
||||
|
||||
Reference in New Issue
Block a user