Skip to main content

openauth_plugins/generic_oauth/providers/
mod.rs

1//! Generic OAuth provider helpers.
2
3pub mod auth0;
4pub mod gumroad;
5pub mod hubspot;
6pub mod keycloak;
7pub mod line;
8pub mod microsoft_entra_id;
9pub mod okta;
10pub mod patreon;
11pub mod slack;
12mod user_info;
13
14use crate::generic_oauth::GenericOAuthConfig;
15
16pub const PROVIDER_IDS: &[&str] = &[
17    "auth0",
18    "gumroad",
19    "hubspot",
20    "keycloak",
21    "line",
22    "microsoft-entra-id",
23    "okta",
24    "patreon",
25    "slack",
26];
27
28pub use auth0::{auth0, Auth0Options};
29pub use gumroad::{gumroad, GumroadOptions};
30pub use hubspot::{hubspot, HubSpotOptions};
31pub use keycloak::{keycloak, KeycloakOptions};
32pub use line::{line, LineOptions};
33pub use microsoft_entra_id::{microsoft_entra_id, MicrosoftEntraIdOptions};
34pub use okta::{okta, OktaOptions};
35pub use patreon::{patreon, PatreonOptions};
36pub use slack::{slack, SlackOptions};
37
38#[derive(Debug, Clone, Default, PartialEq, Eq)]
39pub struct BaseOAuthProviderOptions {
40    pub client_id: String,
41    pub client_secret: Option<String>,
42    pub scopes: Option<Vec<String>>,
43    pub redirect_uri: Option<String>,
44    pub pkce: bool,
45    pub disable_implicit_sign_up: bool,
46    pub disable_sign_up: bool,
47    pub override_user_info: bool,
48}
49
50pub(crate) fn apply_base_options(
51    config: &mut GenericOAuthConfig,
52    base: BaseOAuthProviderOptions,
53    default_scopes: Vec<String>,
54) {
55    config.client_id = base.client_id;
56    config.client_secret = base.client_secret;
57    config.scopes = base.scopes.unwrap_or(default_scopes);
58    config.redirect_uri = base.redirect_uri;
59    config.pkce = base.pkce;
60    config.disable_implicit_sign_up = base.disable_implicit_sign_up;
61    config.disable_sign_up = base.disable_sign_up;
62    config.override_user_info = base.override_user_info;
63}