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);
+ }} />
+
+
+ )
}
)