// // Copyright (C) 2024 veypi // 2025-03-04 16:08:06 // Distributed under terms of the MIT license. // package models import ( "github.com/veypi/vigo" ) // OAuthProvider 动态 OAuth 提供商配置 type OAuthProvider struct { vigo.Model Code string `gorm:"uniqueIndex;size:50;not null" json:"code"` // 唯一标识: google/github/feishu/... Name string `gorm:"size:50" json:"name"` // 显示名称 Icon string `gorm:"size:100" json:"icon"` // 图标 Enabled bool `json:"enabled"` // 是否启用 SortOrder int `json:"sort_order" gorm:"default:0"` // 排序权重 // OAuth 配置 ClientID string `json:"client_id" gorm:"size:200"` ClientSecret string `json:"client_secret" gorm:"size:200"` // 建议加密存储 AuthURL string `json:"auth_url" gorm:"size:500"` TokenURL string `json:"token_url" gorm:"size:500"` UserInfoURL string `json:"user_info_url" gorm:"size:500"` Scopes []string `json:"scopes" gorm:"serializer:json"` RedirectURI string `json:"redirect_uri" gorm:"size:500"` // 为空则使用默认 /auth/callback/{code} // 用户信息字段映射(JSON Path) UserIDPath string `json:"user_id_path" gorm:"size:100;default:'id'"` UserNamePath string `json:"user_name_path" gorm:"size:100;default:'name'"` UserEmailPath string `json:"user_email_path" gorm:"size:100;default:'email'"` UserAvatarPath string `json:"user_avatar_path" gorm:"size:100"` // 特殊平台配置 ExtraConfig map[string]string `json:"extra_config" gorm:"serializer:json"` // 如: {"appid_param": "appid"} // 是否内置(内置的不可删除,只能禁用) IsBuiltIn bool `json:"is_built_in" gorm:"default:false"` } // TableName 表名 func (OAuthProvider) TableName() string { return "oauth_providers" } // OAuthProviderExtra 常用特殊配置键 const ( OAuthExtraAppIDParam = "appid_param" // 微信: appid 参数名不同 OAuthExtraUsePostToken = "use_post_token" // 是否 POST 获取 token OAuthExtraTokenInBody = "token_in_body" // token 是否在 body 中返回 OAuthExtraStateParam = "state_param" // 自定义 state 参数名 )