Add getCasdoorColumns().

This commit is contained in:
Yang Luo
2021-12-20 00:26:46 +08:00
parent db56f54b8c
commit e64f181e28
5 changed files with 57 additions and 25 deletions

View File

@ -41,7 +41,7 @@ func (syncer *Syncer) syncUsers() {
updatedUser := syncer.createUserFromOriginalUser(oUser, affiliationMap)
updatedUser.Hash = oHash
updatedUser.PreHash = oHash
UpdateUserForOriginalFields(updatedUser)
syncer.updateUserForOriginalFields(updatedUser)
fmt.Printf("Update from oUser to user: %v\n", updatedUser)
}
} else {
@ -62,7 +62,7 @@ func (syncer *Syncer) syncUsers() {
updatedUser := syncer.createUserFromOriginalUser(oUser, affiliationMap)
updatedUser.Hash = oHash
updatedUser.PreHash = oHash
UpdateUserForOriginalFields(updatedUser)
syncer.updateUserForOriginalFields(updatedUser)
fmt.Printf("Update from oUser to user (2nd condition): %v\n", updatedUser)
}
}

View File

@ -21,6 +21,7 @@ import (
"github.com/astaxie/beego"
"github.com/casbin/casdoor/util"
"xorm.io/core"
)
type OriginalUser = User
@ -55,7 +56,7 @@ func (syncer *Syncer) addUser(user *OriginalUser) bool {
return affected != 0
}
func (syncer *Syncer) getActiveColumns() []string {
func (syncer *Syncer) getOriginalColumns() []string {
res := []string{}
for _, tableColumn := range syncer.TableColumns {
if tableColumn.CasdoorName != "Id" {
@ -65,9 +66,20 @@ func (syncer *Syncer) getActiveColumns() []string {
return res
}
func (syncer *Syncer) getCasdoorColumns() []string {
res := []string{}
for _, tableColumn := range syncer.TableColumns {
if tableColumn.CasdoorName != "Id" {
v := util.CamelToSnakeCase(tableColumn.CasdoorName)
res = append(res, v)
}
}
return res
}
func (syncer *Syncer) updateUser(user *OriginalUser) bool {
m := syncer.getMapFromOriginalUser(user)
columns := syncer.getActiveColumns()
columns := syncer.getOriginalColumns()
affected, err := syncer.Adapter.Engine.Table(syncer.Table).ID(syncer.TablePrimaryKey).Cols(columns...).Update(m)
if err != nil {
panic(err)
@ -76,12 +88,33 @@ func (syncer *Syncer) updateUser(user *OriginalUser) bool {
return affected != 0
}
func (syncer *Syncer) updateUserForOriginalFields(user *User) bool {
owner, name := util.GetOwnerAndNameFromId(user.GetId())
oldUser := getUser(owner, name)
if oldUser == nil {
return false
}
if user.Avatar != oldUser.Avatar && user.Avatar != "" {
user.PermanentAvatar = getPermanentAvatarUrl(user.Owner, user.Name, user.Avatar)
}
columns := syncer.getCasdoorColumns()
columns = append(columns, "affiliation", "hash", "pre_hash")
affected, err := adapter.Engine.ID(core.PK{user.Owner, user.Name}).Cols(columns...).Update(user)
if err != nil {
panic(err)
}
return affected != 0
}
func (syncer *Syncer) calculateHash(user *OriginalUser) string {
values := []string{}
m := syncer.getMapFromOriginalUser(user)
for _, tableColumn := range syncer.TableColumns {
if tableColumn.IsHashed {
values = append(values, m[tableColumn.CasdoorName])
values = append(values, m[tableColumn.Name])
}
}

View File

@ -52,6 +52,7 @@ func (syncer *Syncer) createUserFromOriginalUser(originalUser *OriginalUser, aff
if user.Type == "" {
user.Type = "normal-user"
}
user.Avatar = syncer.getFullAvatarUrl(user.Avatar)
if originalUser.Score != 0 {
affiliation, ok := affiliationMap[originalUser.Score]
if !ok {
@ -196,7 +197,7 @@ func (syncer *Syncer) getMapFromOriginalUser(user *OriginalUser) map[string]stri
m2 := map[string]string{}
for _, tableColumn := range syncer.TableColumns {
m2[tableColumn.CasdoorName] = m[tableColumn.CasdoorName]
m2[tableColumn.Name] = m[tableColumn.CasdoorName]
}
return m2

View File

@ -289,25 +289,6 @@ func UpdateUserForAllFields(id string, user *User) bool {
return affected != 0
}
func UpdateUserForOriginalFields(user *User) bool {
owner, name := util.GetOwnerAndNameFromId(user.GetId())
oldUser := getUser(owner, name)
if oldUser == nil {
return false
}
if user.Avatar != oldUser.Avatar && user.Avatar != "" {
user.PermanentAvatar = getPermanentAvatarUrl(user.Owner, user.Name, user.Avatar)
}
affected, err := adapter.Engine.ID(core.PK{user.Owner, user.Name}).Cols("display_name", "password", "phone", "avatar", "affiliation", "score", "is_forbidden", "hash", "pre_hash").Update(user)
if err != nil {
panic(err)
}
return affected != 0
}
func AddUser(user *User) bool {
if user.Id == "" {
user.Id = util.GenerateId()