use serde::Deserialize;
#[non_exhaustive]
#[derive(Debug, Clone, Deserialize, Default)]
#[serde(default)]
pub struct OAuthConfig {
pub google: Option<OAuthProviderConfig>,
pub github: Option<OAuthProviderConfig>,
}
#[non_exhaustive]
#[derive(Debug, Clone, Deserialize)]
pub struct OAuthProviderConfig {
pub client_id: String,
pub client_secret: String,
pub redirect_uri: String,
#[serde(default)]
pub scopes: Vec<String>,
}
impl OAuthProviderConfig {
pub fn new(
client_id: impl Into<String>,
client_secret: impl Into<String>,
redirect_uri: impl Into<String>,
) -> Self {
Self {
client_id: client_id.into(),
client_secret: client_secret.into(),
redirect_uri: redirect_uri.into(),
scopes: Vec::new(),
}
}
}
#[non_exhaustive]
#[derive(Debug, Clone, Deserialize)]
pub struct CallbackParams {
pub code: String,
pub state: String,
}