diff --git a/idp/provider.go b/idp/provider.go index a858414b..be058af0 100644 --- a/idp/provider.go +++ b/idp/provider.go @@ -44,6 +44,7 @@ type ProviderInfo struct { AppId string HostUrl string RedirectUrl string + DisableSsl bool TokenURL string AuthURL string @@ -79,9 +80,9 @@ func GetIdProvider(idpInfo *ProviderInfo, redirectUrl string) (IdProvider, error return NewLinkedInIdProvider(idpInfo.ClientId, idpInfo.ClientSecret, redirectUrl), nil case "WeCom": if idpInfo.SubType == "Internal" { - return NewWeComInternalIdProvider(idpInfo.ClientId, idpInfo.ClientSecret, redirectUrl), nil + return NewWeComInternalIdProvider(idpInfo.ClientId, idpInfo.ClientSecret, redirectUrl, idpInfo.DisableSsl), nil } else if idpInfo.SubType == "Third-party" { - return NewWeComIdProvider(idpInfo.ClientId, idpInfo.ClientSecret, redirectUrl), nil + return NewWeComIdProvider(idpInfo.ClientId, idpInfo.ClientSecret, redirectUrl, idpInfo.DisableSsl), nil } else { return nil, fmt.Errorf("WeCom provider subType: %s is not supported", idpInfo.SubType) } diff --git a/idp/wecom_internal.go b/idp/wecom_internal.go index afaddc32..1bc0d904 100644 --- a/idp/wecom_internal.go +++ b/idp/wecom_internal.go @@ -29,13 +29,16 @@ import ( type WeComInternalIdProvider struct { Client *http.Client Config *oauth2.Config + + UseIdAsName bool } -func NewWeComInternalIdProvider(clientId string, clientSecret string, redirectUrl string) *WeComInternalIdProvider { +func NewWeComInternalIdProvider(clientId string, clientSecret string, redirectUrl string, useIdAsName bool) *WeComInternalIdProvider { idp := &WeComInternalIdProvider{} config := idp.getConfig(clientId, clientSecret, redirectUrl) idp.Config = config + idp.UseIdAsName = useIdAsName return idp } @@ -169,5 +172,9 @@ func (idp *WeComInternalIdProvider) GetUserInfo(token *oauth2.Token) (*UserInfo, userInfo.Id = userInfo.Username } + if idp.UseIdAsName { + userInfo.Username = userInfo.Id + } + return &userInfo, nil } diff --git a/idp/wecom_third_party.go b/idp/wecom_third_party.go index ff19c099..652731a4 100644 --- a/idp/wecom_third_party.go +++ b/idp/wecom_third_party.go @@ -28,13 +28,16 @@ import ( type WeComIdProvider struct { Client *http.Client Config *oauth2.Config + + UseIdAsName bool } -func NewWeComIdProvider(clientId string, clientSecret string, redirectUrl string) *WeComIdProvider { +func NewWeComIdProvider(clientId string, clientSecret string, redirectUrl string, useIdAsName bool) *WeComIdProvider { idp := &WeComIdProvider{} config := idp.getConfig(clientId, clientSecret, redirectUrl) idp.Config = config + idp.UseIdAsName = useIdAsName return idp } @@ -183,6 +186,10 @@ func (idp *WeComIdProvider) GetUserInfo(token *oauth2.Token) (*UserInfo, error) DisplayName: wecomUserInfo.UserInfo.Name, AvatarUrl: wecomUserInfo.UserInfo.Avatar, } + + if idp.UseIdAsName { + userInfo.Username = userInfo.Id + } return &userInfo, nil } diff --git a/object/provider.go b/object/provider.go index d358a592..2d0c33a5 100644 --- a/object/provider.go +++ b/object/provider.go @@ -475,6 +475,7 @@ func FromProviderToIdpInfo(ctx *context.Context, provider *Provider) *idp.Provid AuthURL: provider.CustomAuthUrl, UserInfoURL: provider.CustomUserInfoUrl, UserMapping: provider.UserMapping, + DisableSsl: provider.DisableSsl, } if provider.Type == "WeChat" { diff --git a/web/src/ProviderEditPage.js b/web/src/ProviderEditPage.js index e94a58a2..9eb94396 100644 --- a/web/src/ProviderEditPage.js +++ b/web/src/ProviderEditPage.js @@ -692,23 +692,35 @@ class ProviderEditPage extends React.Component { { this.state.provider.type !== "WeCom" ? null : ( - - - {Setting.getLabel(i18next.t("general:Method"), i18next.t("provider:Method - Tooltip"))} : - - - - - ) + + + + {Setting.getLabel(i18next.t("general:Method"), i18next.t("provider:Method - Tooltip"))} : + + + + + + + + {Setting.getLabel(i18next.t("provider:Use id as name"), i18next.t("provider:Use id as name - Tooltip"))} : + + + { + this.updateProviderField("disableSsl", checked); + }} /> + + + ) } )