mirror of
https://github.com/casdoor/casdoor.git
synced 2025-05-23 02:35:49 +08:00
feat: add useIdAsName field for WeCom OAuth provider (#3797)
This commit is contained in:
parent
d772b0b7a8
commit
4260efcfd0
@ -44,6 +44,7 @@ type ProviderInfo struct {
|
|||||||
AppId string
|
AppId string
|
||||||
HostUrl string
|
HostUrl string
|
||||||
RedirectUrl string
|
RedirectUrl string
|
||||||
|
DisableSsl bool
|
||||||
|
|
||||||
TokenURL string
|
TokenURL string
|
||||||
AuthURL string
|
AuthURL string
|
||||||
@ -79,9 +80,9 @@ func GetIdProvider(idpInfo *ProviderInfo, redirectUrl string) (IdProvider, error
|
|||||||
return NewLinkedInIdProvider(idpInfo.ClientId, idpInfo.ClientSecret, redirectUrl), nil
|
return NewLinkedInIdProvider(idpInfo.ClientId, idpInfo.ClientSecret, redirectUrl), nil
|
||||||
case "WeCom":
|
case "WeCom":
|
||||||
if idpInfo.SubType == "Internal" {
|
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" {
|
} 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 {
|
} else {
|
||||||
return nil, fmt.Errorf("WeCom provider subType: %s is not supported", idpInfo.SubType)
|
return nil, fmt.Errorf("WeCom provider subType: %s is not supported", idpInfo.SubType)
|
||||||
}
|
}
|
||||||
|
@ -29,13 +29,16 @@ import (
|
|||||||
type WeComInternalIdProvider struct {
|
type WeComInternalIdProvider struct {
|
||||||
Client *http.Client
|
Client *http.Client
|
||||||
Config *oauth2.Config
|
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{}
|
idp := &WeComInternalIdProvider{}
|
||||||
|
|
||||||
config := idp.getConfig(clientId, clientSecret, redirectUrl)
|
config := idp.getConfig(clientId, clientSecret, redirectUrl)
|
||||||
idp.Config = config
|
idp.Config = config
|
||||||
|
idp.UseIdAsName = useIdAsName
|
||||||
|
|
||||||
return idp
|
return idp
|
||||||
}
|
}
|
||||||
@ -169,5 +172,9 @@ func (idp *WeComInternalIdProvider) GetUserInfo(token *oauth2.Token) (*UserInfo,
|
|||||||
userInfo.Id = userInfo.Username
|
userInfo.Id = userInfo.Username
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if idp.UseIdAsName {
|
||||||
|
userInfo.Username = userInfo.Id
|
||||||
|
}
|
||||||
|
|
||||||
return &userInfo, nil
|
return &userInfo, nil
|
||||||
}
|
}
|
||||||
|
@ -28,13 +28,16 @@ import (
|
|||||||
type WeComIdProvider struct {
|
type WeComIdProvider struct {
|
||||||
Client *http.Client
|
Client *http.Client
|
||||||
Config *oauth2.Config
|
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{}
|
idp := &WeComIdProvider{}
|
||||||
|
|
||||||
config := idp.getConfig(clientId, clientSecret, redirectUrl)
|
config := idp.getConfig(clientId, clientSecret, redirectUrl)
|
||||||
idp.Config = config
|
idp.Config = config
|
||||||
|
idp.UseIdAsName = useIdAsName
|
||||||
|
|
||||||
return idp
|
return idp
|
||||||
}
|
}
|
||||||
@ -183,6 +186,10 @@ func (idp *WeComIdProvider) GetUserInfo(token *oauth2.Token) (*UserInfo, error)
|
|||||||
DisplayName: wecomUserInfo.UserInfo.Name,
|
DisplayName: wecomUserInfo.UserInfo.Name,
|
||||||
AvatarUrl: wecomUserInfo.UserInfo.Avatar,
|
AvatarUrl: wecomUserInfo.UserInfo.Avatar,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if idp.UseIdAsName {
|
||||||
|
userInfo.Username = userInfo.Id
|
||||||
|
}
|
||||||
return &userInfo, nil
|
return &userInfo, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -475,6 +475,7 @@ func FromProviderToIdpInfo(ctx *context.Context, provider *Provider) *idp.Provid
|
|||||||
AuthURL: provider.CustomAuthUrl,
|
AuthURL: provider.CustomAuthUrl,
|
||||||
UserInfoURL: provider.CustomUserInfoUrl,
|
UserInfoURL: provider.CustomUserInfoUrl,
|
||||||
UserMapping: provider.UserMapping,
|
UserMapping: provider.UserMapping,
|
||||||
|
DisableSsl: provider.DisableSsl,
|
||||||
}
|
}
|
||||||
|
|
||||||
if provider.Type == "WeChat" {
|
if provider.Type == "WeChat" {
|
||||||
|
@ -692,6 +692,7 @@ class ProviderEditPage extends React.Component {
|
|||||||
</Row>
|
</Row>
|
||||||
{
|
{
|
||||||
this.state.provider.type !== "WeCom" ? null : (
|
this.state.provider.type !== "WeCom" ? null : (
|
||||||
|
<React.Fragment>
|
||||||
<Row style={{marginTop: "20px"}} >
|
<Row style={{marginTop: "20px"}} >
|
||||||
<Col style={{marginTop: "5px"}} span={2}>
|
<Col style={{marginTop: "5px"}} span={2}>
|
||||||
{Setting.getLabel(i18next.t("general:Method"), i18next.t("provider:Method - Tooltip"))} :
|
{Setting.getLabel(i18next.t("general:Method"), i18next.t("provider:Method - Tooltip"))} :
|
||||||
@ -708,7 +709,18 @@ class ProviderEditPage extends React.Component {
|
|||||||
}
|
}
|
||||||
</Select>
|
</Select>
|
||||||
</Col>
|
</Col>
|
||||||
</Row>)
|
</Row>
|
||||||
|
<Row style={{marginTop: "20px"}} >
|
||||||
|
<Col style={{marginTop: "5px"}} span={2}>
|
||||||
|
{Setting.getLabel(i18next.t("provider:Use id as name"), i18next.t("provider:Use id as name - Tooltip"))} :
|
||||||
|
</Col>
|
||||||
|
<Col span={22} >
|
||||||
|
<Switch checked={this.state.provider.disableSsl} onChange={checked => {
|
||||||
|
this.updateProviderField("disableSsl", checked);
|
||||||
|
}} />
|
||||||
|
</Col>
|
||||||
|
</Row>
|
||||||
|
</React.Fragment>)
|
||||||
}
|
}
|
||||||
</React.Fragment>
|
</React.Fragment>
|
||||||
)
|
)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user