openauth_plugins/generic_oauth/providers/
mod.rs1pub 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}