mirror of
https://github.com/Wei-Shaw/sub2api.git
synced 2026-09-24 16:05:44 +08:00
Merge pull request #2492 from DaydreamCoding/feat/dingtalk-login
feat(dingtalk): 钉钉 OAuth 登录接入 + internal_only 用户属性同步
This commit is contained in:
@@ -22,7 +22,8 @@ export type AuthSourceType =
|
||||
| "oidc"
|
||||
| "wechat"
|
||||
| "github"
|
||||
| "google";
|
||||
| "google"
|
||||
| "dingtalk";
|
||||
|
||||
export interface AuthSourceDefaultsValue {
|
||||
balance: number;
|
||||
@@ -64,6 +65,7 @@ const AUTH_SOURCE_TYPES: AuthSourceType[] = [
|
||||
"wechat",
|
||||
"github",
|
||||
"google",
|
||||
"dingtalk",
|
||||
];
|
||||
const AUTH_SOURCE_DEFAULT_BALANCE = 0;
|
||||
const AUTH_SOURCE_DEFAULT_CONCURRENCY = 5;
|
||||
@@ -352,6 +354,11 @@ export interface SystemSettings {
|
||||
auth_source_default_wechat_subscriptions?: DefaultSubscriptionSetting[];
|
||||
auth_source_default_wechat_grant_on_signup?: boolean;
|
||||
auth_source_default_wechat_grant_on_first_bind?: boolean;
|
||||
auth_source_default_dingtalk_balance?: number;
|
||||
auth_source_default_dingtalk_concurrency?: number;
|
||||
auth_source_default_dingtalk_subscriptions?: DefaultSubscriptionSetting[];
|
||||
auth_source_default_dingtalk_grant_on_signup?: boolean;
|
||||
auth_source_default_dingtalk_grant_on_first_bind?: boolean;
|
||||
auth_source_default_github_balance?: number;
|
||||
auth_source_default_github_concurrency?: number;
|
||||
auth_source_default_github_subscriptions?: DefaultSubscriptionSetting[];
|
||||
@@ -396,6 +403,24 @@ export interface SystemSettings {
|
||||
linuxdo_connect_client_secret_configured: boolean;
|
||||
linuxdo_connect_redirect_url: string;
|
||||
|
||||
// DingTalk Connect OAuth settings
|
||||
dingtalk_connect_enabled: boolean;
|
||||
dingtalk_connect_client_id: string;
|
||||
dingtalk_connect_client_secret_configured: boolean;
|
||||
dingtalk_connect_redirect_url: string;
|
||||
dingtalk_connect_corp_restriction_policy: string;
|
||||
dingtalk_connect_internal_corp_id: string;
|
||||
dingtalk_connect_bypass_registration: boolean;
|
||||
dingtalk_connect_sync_corp_email: boolean;
|
||||
dingtalk_connect_sync_display_name: boolean;
|
||||
dingtalk_connect_sync_dept: boolean;
|
||||
dingtalk_connect_sync_corp_email_attr_key: string;
|
||||
dingtalk_connect_sync_display_name_attr_key: string;
|
||||
dingtalk_connect_sync_dept_attr_key: string;
|
||||
dingtalk_connect_sync_corp_email_attr_name: string;
|
||||
dingtalk_connect_sync_display_name_attr_name: string;
|
||||
dingtalk_connect_sync_dept_attr_name: string;
|
||||
|
||||
// WeChat Connect OAuth settings
|
||||
wechat_connect_enabled: boolean;
|
||||
wechat_connect_app_id: string;
|
||||
@@ -571,6 +596,11 @@ export interface UpdateSettingsRequest {
|
||||
auth_source_default_wechat_subscriptions?: DefaultSubscriptionSetting[];
|
||||
auth_source_default_wechat_grant_on_signup?: boolean;
|
||||
auth_source_default_wechat_grant_on_first_bind?: boolean;
|
||||
auth_source_default_dingtalk_balance?: number;
|
||||
auth_source_default_dingtalk_concurrency?: number;
|
||||
auth_source_default_dingtalk_subscriptions?: DefaultSubscriptionSetting[];
|
||||
auth_source_default_dingtalk_grant_on_signup?: boolean;
|
||||
auth_source_default_dingtalk_grant_on_first_bind?: boolean;
|
||||
auth_source_default_github_balance?: number;
|
||||
auth_source_default_github_concurrency?: number;
|
||||
auth_source_default_github_subscriptions?: DefaultSubscriptionSetting[];
|
||||
@@ -609,6 +639,22 @@ export interface UpdateSettingsRequest {
|
||||
linuxdo_connect_client_id?: string;
|
||||
linuxdo_connect_client_secret?: string;
|
||||
linuxdo_connect_redirect_url?: string;
|
||||
dingtalk_connect_enabled?: boolean;
|
||||
dingtalk_connect_client_id?: string;
|
||||
dingtalk_connect_client_secret?: string;
|
||||
dingtalk_connect_redirect_url?: string;
|
||||
dingtalk_connect_corp_restriction_policy?: string;
|
||||
dingtalk_connect_internal_corp_id?: string;
|
||||
dingtalk_connect_bypass_registration?: boolean;
|
||||
dingtalk_connect_sync_corp_email?: boolean;
|
||||
dingtalk_connect_sync_display_name?: boolean;
|
||||
dingtalk_connect_sync_dept?: boolean;
|
||||
dingtalk_connect_sync_corp_email_attr_key?: string;
|
||||
dingtalk_connect_sync_display_name_attr_key?: string;
|
||||
dingtalk_connect_sync_dept_attr_key?: string;
|
||||
dingtalk_connect_sync_corp_email_attr_name?: string;
|
||||
dingtalk_connect_sync_display_name_attr_name?: string;
|
||||
dingtalk_connect_sync_dept_attr_name?: string;
|
||||
wechat_connect_enabled?: boolean;
|
||||
wechat_connect_app_id?: string;
|
||||
wechat_connect_app_secret?: string;
|
||||
|
||||
@@ -592,7 +592,7 @@ export async function completeWeChatOAuthRegistration(
|
||||
}
|
||||
|
||||
async function createPendingOAuthAccount(
|
||||
provider: 'linuxdo' | 'oidc' | 'wechat',
|
||||
provider: 'linuxdo' | 'oidc' | 'wechat' | 'dingtalk',
|
||||
invitationCode: string,
|
||||
decision?: OAuthAdoptionDecision,
|
||||
affiliateCode?: string
|
||||
@@ -633,6 +633,14 @@ export async function createPendingWeChatOAuthAccount(
|
||||
return createPendingOAuthAccount('wechat', invitationCode, decision, affiliateCode)
|
||||
}
|
||||
|
||||
export async function createPendingDingTalkOAuthAccount(
|
||||
invitationCode: string,
|
||||
decision?: OAuthAdoptionDecision,
|
||||
affiliateCode?: string
|
||||
): Promise<PendingOAuthCreateAccountResponse> {
|
||||
return createPendingOAuthAccount('dingtalk', invitationCode, decision, affiliateCode)
|
||||
}
|
||||
|
||||
export async function completePendingOAuthBindLogin(
|
||||
decision?: OAuthAdoptionDecision
|
||||
): Promise<PendingOAuthBindLoginResponse> {
|
||||
@@ -683,7 +691,8 @@ export const authAPI = {
|
||||
exchangePendingOAuthCompletion,
|
||||
completeLinuxDoOAuthRegistration,
|
||||
completeOIDCOAuthRegistration,
|
||||
completeWeChatOAuthRegistration
|
||||
completeWeChatOAuthRegistration,
|
||||
createPendingDingTalkOAuthAccount
|
||||
}
|
||||
|
||||
export default authAPI
|
||||
|
||||
Reference in New Issue
Block a user