forked from casdoor/casdoor
feat: bind provider IDs in WeCom/DingTalk/Lark syncers (#5033)
This commit is contained in:
@@ -426,6 +426,7 @@ func (p *DingtalkSyncerProvider) dingtalkUserToOriginalUser(dingtalkUser *Dingta
|
||||
Address: []string{},
|
||||
Properties: map[string]string{},
|
||||
Groups: []string{},
|
||||
DingTalk: dingtalkUser.UserId, // Link DingTalk provider account
|
||||
}
|
||||
|
||||
// Add department IDs to Groups field
|
||||
|
||||
@@ -376,6 +376,7 @@ func (p *LarkSyncerProvider) larkUserToOriginalUser(larkUser *LarkUser) *Origina
|
||||
Address: []string{},
|
||||
Properties: map[string]string{},
|
||||
Groups: []string{},
|
||||
Lark: larkUser.UserId, // Link Lark provider account
|
||||
}
|
||||
|
||||
// Set avatar if available
|
||||
|
||||
@@ -70,6 +70,18 @@ func (syncer *Syncer) updateUserForOriginalFields(user *User, key string) (bool,
|
||||
|
||||
columns := syncer.getCasdoorColumns()
|
||||
columns = append(columns, "affiliation", "hash", "pre_hash")
|
||||
|
||||
// Add provider-specific field for API-based syncers to enable login binding
|
||||
// This allows synced users to login via their provider accounts
|
||||
switch syncer.Type {
|
||||
case "WeCom":
|
||||
columns = append(columns, "wecom")
|
||||
case "DingTalk":
|
||||
columns = append(columns, "dingtalk")
|
||||
case "Lark":
|
||||
columns = append(columns, "lark")
|
||||
}
|
||||
|
||||
affected, err := ormer.Engine.Where(key+" = ? and owner = ?", syncer.getUserValue(&oldUser, key), oldUser.Owner).Cols(columns...).Update(user)
|
||||
if err != nil {
|
||||
return false, err
|
||||
|
||||
@@ -275,6 +275,7 @@ func (p *WecomSyncerProvider) wecomUserToOriginalUser(wecomUser *WecomUser) *Ori
|
||||
Address: []string{},
|
||||
Properties: map[string]string{},
|
||||
Groups: []string{},
|
||||
Wecom: wecomUser.UserId, // Link WeCom provider account
|
||||
}
|
||||
|
||||
// Set gender
|
||||
|
||||
Reference in New Issue
Block a user