Skip to main content

rustauth_plugins/generic_oauth/providers/
slack.rs

1//! Slack generic OAuth provider helper.
2
3use crate::generic_oauth::GenericOAuthConfig;
4use std::sync::Arc;
5
6pub const PROVIDER_ID: &str = "slack";
7
8#[derive(Debug, Clone, PartialEq, Eq)]
9pub struct SlackOptions {
10    pub base: super::BaseOAuthProviderOptions,
11}
12
13pub fn slack(options: SlackOptions) -> GenericOAuthConfig {
14    let mut config = GenericOAuthConfig::new(
15        PROVIDER_ID,
16        "",
17        None::<String>,
18        "https://slack.com/openid/connect/authorize",
19        "https://slack.com/api/openid.connect.token",
20    );
21    config.user_info_url = Some("https://slack.com/api/openid.connect.userInfo".to_owned());
22    super::apply_base_options(
23        &mut config,
24        options.base,
25        vec![
26            "openid".to_owned(),
27            "profile".to_owned(),
28            "email".to_owned(),
29        ],
30    );
31    config.get_user_info = Some(Arc::new(|tokens| Box::pin(super::user_info::slack(tokens))));
32    config
33}