rustauth_plugins/generic_oauth/providers/
slack.rs1use 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}