feat: bind provider IDs in WeCom/DingTalk/Lark syncers (#5033)

This commit is contained in:
Yang Luo
2026-02-11 01:04:26 +08:00
parent bed01b31f1
commit 090ca97dcd
4 changed files with 15 additions and 0 deletions

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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