mirror of
https://github.com/chaitin/MonkeyCode.git
synced 2026-02-02 06:43:23 +08:00
84 lines
3.0 KiB
Go
84 lines
3.0 KiB
Go
package domain
|
|
|
|
import "github.com/chaitin/MonkeyCode/backend/consts"
|
|
|
|
type OAuther interface {
|
|
GetAuthorizeURL() (state string, url string)
|
|
GetUserInfo(code string) (*OAuthUserInfo, error)
|
|
}
|
|
|
|
type OAuthConfig struct {
|
|
Debug bool
|
|
Platform consts.UserPlatform
|
|
ClientID string
|
|
ClientSecret string
|
|
RedirectURI string
|
|
Scopes []string
|
|
AuthorizeURL string
|
|
TokenURL string
|
|
UserInfoURL string
|
|
IDField string
|
|
NameField string
|
|
AvatarField string
|
|
EmailField string
|
|
}
|
|
|
|
type OAuthUserInfo struct {
|
|
ID string `json:"id"`
|
|
UnionID string `json:"union_id"`
|
|
Name string `json:"name"`
|
|
Email string `json:"email"`
|
|
AvatarURL string `json:"avatar_url"`
|
|
}
|
|
|
|
type OAuthSignUpOrInReq struct {
|
|
Source consts.LoginSource `json:"source" query:"source" validate:"required" default:"plugin"` // 登录来源 plugin: 插件 browser: 浏览器; 默认为 plugin
|
|
Platform consts.UserPlatform `json:"platform" query:"platform" validate:"required"` // 第三方平台 dingtalk
|
|
SessionID string `json:"session_id" query:"session_id"` // 会话ID
|
|
RedirectURL string `json:"redirect_url" query:"redirect_url"` // 登录成功后跳转的 URL
|
|
InviteCode string `json:"inviate_code" query:"inviate_code"` // 邀请码
|
|
BaseURL string `json:"-"`
|
|
}
|
|
|
|
func (o OAuthSignUpOrInReq) OAuthKind() consts.OAuthKind {
|
|
if o.InviteCode == "" {
|
|
return consts.OAuthKindLogin
|
|
}
|
|
return consts.OAuthKindInvite
|
|
}
|
|
|
|
type OAuthCallbackReq struct {
|
|
State string `json:"state" query:"state" validate:"required"`
|
|
Code string `json:"code" query:"code" validate:"required"`
|
|
IP string `json:"-"`
|
|
BaseURL string `json:"-"`
|
|
}
|
|
|
|
type OAuthURLResp struct {
|
|
URL string `json:"url"`
|
|
}
|
|
|
|
type OAuthState struct {
|
|
Source consts.LoginSource `json:"source"` // 登录来源 plugin: 插件 browser: 浏览器; 默认为 plugin
|
|
Kind consts.OAuthKind `json:"kind" query:"kind" validate:"required"` // invite: 邀请登录 login: 登录
|
|
SessionID string `json:"session_id"` // 会话ID
|
|
Platform consts.UserPlatform `json:"platform" query:"platform" validate:"required"` // 第三方平台 dingtalk
|
|
RedirectURL string `json:"redirect_url" query:"redirect_url"` // 登录成功后跳转的 URL
|
|
InviteCode string `json:"inviate_code"` // 邀请码
|
|
}
|
|
|
|
type OAuthAccessToken struct {
|
|
AccessToken string `json:"access_token"`
|
|
RefreshToken string `json:"refresh_token"`
|
|
ExpiresIn int64 `json:"expires_in"`
|
|
Scope string `json:"scope"`
|
|
}
|
|
|
|
type GetAccessTokenReq struct {
|
|
GrantType string `json:"grant_type"`
|
|
ClientID string `json:"client_id"`
|
|
ClientSecret string `json:"client_secret"`
|
|
Code string `json:"code"`
|
|
RedirectURL string `json:"redirect_uri"`
|
|
}
|