wae_authentication/oauth2/providers/
mod.rs1mod dingtalk;
4mod feishu;
5mod github;
6mod google;
7mod wechat;
8
9pub use dingtalk::*;
10pub use feishu::*;
11pub use github::*;
12pub use google::*;
13pub use wechat::*;
14
15use crate::oauth2::OAuth2ProviderConfig;
16
17#[derive(Debug, Clone, Copy, PartialEq, Eq)]
19pub enum OAuth2ProviderType {
20 Google,
22 GitHub,
24 WeChat,
26 DingTalk,
28 Feishu,
30 Custom,
32}
33
34pub fn create_provider_config(
36 provider_type: OAuth2ProviderType,
37 client_id: impl Into<String> + Clone,
38 client_secret: impl Into<String> + Clone,
39 redirect_uri: impl Into<String> + Clone,
40) -> OAuth2ProviderConfig {
41 match provider_type {
42 OAuth2ProviderType::Google => google_config(client_id, client_secret, redirect_uri),
43 OAuth2ProviderType::GitHub => github_config(client_id, client_secret, redirect_uri),
44 OAuth2ProviderType::WeChat => wechat_config(client_id, client_secret, redirect_uri),
45 OAuth2ProviderType::DingTalk => dingtalk_config(client_id, client_secret, redirect_uri),
46 OAuth2ProviderType::Feishu => feishu_config(client_id, client_secret, redirect_uri),
47 OAuth2ProviderType::Custom => OAuth2ProviderConfig::new("custom", client_id, client_secret, redirect_uri),
48 }
49}