Skip to main content

wae_authentication/oauth2/providers/
mod.rs

1//! OAuth2 提供者预设配置
2
3mod 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/// OAuth2 提供者类型
18#[derive(Debug, Clone, Copy, PartialEq, Eq)]
19pub enum OAuth2ProviderType {
20    /// Google
21    Google,
22    /// GitHub
23    GitHub,
24    /// 微信
25    WeChat,
26    /// 钉钉
27    DingTalk,
28    /// 飞书
29    Feishu,
30    /// 自定义
31    Custom,
32}
33
34/// 创建提供者配置
35pub 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}