Fix GetIdProvider() bug.

This commit is contained in:
Gucheng Wang
2022-01-29 09:52:10 +08:00
parent 3c2f7b7fc8
commit a8502d1173
2 changed files with 24 additions and 18 deletions

View File

@ -221,7 +221,7 @@ func (c *ApiController) Login() {
clientSecret = provider.ClientSecret2 clientSecret = provider.ClientSecret2
} }
idProvider := idp.GetIdProvider(provider.Type, clientId, clientSecret, form.RedirectUri) idProvider := idp.GetIdProvider(provider.Type, provider.SubType, clientId, clientSecret, form.RedirectUri)
if idProvider == nil { if idProvider == nil {
c.ResponseError(fmt.Sprintf("The provider type: %s is not supported", provider.Type)) c.ResponseError(fmt.Sprintf("The provider type: %s is not supported", provider.Type))
return return

View File

@ -35,35 +35,41 @@ type IdProvider interface {
GetUserInfo(token *oauth2.Token) (*UserInfo, error) GetUserInfo(token *oauth2.Token) (*UserInfo, error)
} }
func GetIdProvider(providerType string, clientId string, clientSecret string, redirectUrl string) IdProvider { func GetIdProvider(typ string, subType string, clientId string, clientSecret string, redirectUrl string) IdProvider {
if providerType == "GitHub" { if typ == "GitHub" {
return NewGithubIdProvider(clientId, clientSecret, redirectUrl) return NewGithubIdProvider(clientId, clientSecret, redirectUrl)
} else if providerType == "Google" { } else if typ == "Google" {
return NewGoogleIdProvider(clientId, clientSecret, redirectUrl) return NewGoogleIdProvider(clientId, clientSecret, redirectUrl)
} else if providerType == "QQ" { } else if typ == "QQ" {
return NewQqIdProvider(clientId, clientSecret, redirectUrl) return NewQqIdProvider(clientId, clientSecret, redirectUrl)
} else if providerType == "WeChat" { } else if typ == "WeChat" {
return NewWeChatIdProvider(clientId, clientSecret, redirectUrl) return NewWeChatIdProvider(clientId, clientSecret, redirectUrl)
} else if providerType == "Facebook" { } else if typ == "Facebook" {
return NewFacebookIdProvider(clientId, clientSecret, redirectUrl) return NewFacebookIdProvider(clientId, clientSecret, redirectUrl)
} else if providerType == "DingTalk" { } else if typ == "DingTalk" {
return NewDingTalkIdProvider(clientId, clientSecret, redirectUrl) return NewDingTalkIdProvider(clientId, clientSecret, redirectUrl)
} else if providerType == "Weibo" { } else if typ == "Weibo" {
return NewWeiBoIdProvider(clientId, clientSecret, redirectUrl) return NewWeiBoIdProvider(clientId, clientSecret, redirectUrl)
} else if providerType == "Gitee" { } else if typ == "Gitee" {
return NewGiteeIdProvider(clientId, clientSecret, redirectUrl) return NewGiteeIdProvider(clientId, clientSecret, redirectUrl)
} else if providerType == "LinkedIn" { } else if typ == "LinkedIn" {
return NewLinkedInIdProvider(clientId, clientSecret, redirectUrl) return NewLinkedInIdProvider(clientId, clientSecret, redirectUrl)
} else if providerType == "WeCom" { } else if typ == "WeCom" {
if subType == "Internal" {
return NewWeComInternalIdProvider(clientId, clientSecret, redirectUrl)
} else if subType == "Third-party" {
return NewWeComIdProvider(clientId, clientSecret, redirectUrl) return NewWeComIdProvider(clientId, clientSecret, redirectUrl)
} else if providerType == "Lark" { } else {
return nil
}
} else if typ == "Lark" {
return NewLarkIdProvider(clientId, clientSecret, redirectUrl) return NewLarkIdProvider(clientId, clientSecret, redirectUrl)
} else if providerType == "GitLab" { } else if typ == "GitLab" {
return NewGitlabIdProvider(clientId, clientSecret, redirectUrl) return NewGitlabIdProvider(clientId, clientSecret, redirectUrl)
} else if providerType == "Baidu" { } else if typ == "Baidu" {
return NewBaiduIdProvider(clientId, clientSecret, redirectUrl) return NewBaiduIdProvider(clientId, clientSecret, redirectUrl)
} else if isGothSupport(providerType) { } else if isGothSupport(typ) {
return NewGothIdProvider(providerType, clientId, clientSecret, redirectUrl) return NewGothIdProvider(typ, clientId, clientSecret, redirectUrl)
} }
return nil return nil