mirror of
https://github.com/casdoor/casdoor.git
synced 2025-05-23 10:45:47 +08:00
Add getCasdoorColumns().
This commit is contained in:
parent
db56f54b8c
commit
e64f181e28
@ -41,7 +41,7 @@ func (syncer *Syncer) syncUsers() {
|
|||||||
updatedUser := syncer.createUserFromOriginalUser(oUser, affiliationMap)
|
updatedUser := syncer.createUserFromOriginalUser(oUser, affiliationMap)
|
||||||
updatedUser.Hash = oHash
|
updatedUser.Hash = oHash
|
||||||
updatedUser.PreHash = oHash
|
updatedUser.PreHash = oHash
|
||||||
UpdateUserForOriginalFields(updatedUser)
|
syncer.updateUserForOriginalFields(updatedUser)
|
||||||
fmt.Printf("Update from oUser to user: %v\n", updatedUser)
|
fmt.Printf("Update from oUser to user: %v\n", updatedUser)
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
@ -62,7 +62,7 @@ func (syncer *Syncer) syncUsers() {
|
|||||||
updatedUser := syncer.createUserFromOriginalUser(oUser, affiliationMap)
|
updatedUser := syncer.createUserFromOriginalUser(oUser, affiliationMap)
|
||||||
updatedUser.Hash = oHash
|
updatedUser.Hash = oHash
|
||||||
updatedUser.PreHash = oHash
|
updatedUser.PreHash = oHash
|
||||||
UpdateUserForOriginalFields(updatedUser)
|
syncer.updateUserForOriginalFields(updatedUser)
|
||||||
fmt.Printf("Update from oUser to user (2nd condition): %v\n", updatedUser)
|
fmt.Printf("Update from oUser to user (2nd condition): %v\n", updatedUser)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -21,6 +21,7 @@ import (
|
|||||||
|
|
||||||
"github.com/astaxie/beego"
|
"github.com/astaxie/beego"
|
||||||
"github.com/casbin/casdoor/util"
|
"github.com/casbin/casdoor/util"
|
||||||
|
"xorm.io/core"
|
||||||
)
|
)
|
||||||
|
|
||||||
type OriginalUser = User
|
type OriginalUser = User
|
||||||
@ -55,7 +56,7 @@ func (syncer *Syncer) addUser(user *OriginalUser) bool {
|
|||||||
return affected != 0
|
return affected != 0
|
||||||
}
|
}
|
||||||
|
|
||||||
func (syncer *Syncer) getActiveColumns() []string {
|
func (syncer *Syncer) getOriginalColumns() []string {
|
||||||
res := []string{}
|
res := []string{}
|
||||||
for _, tableColumn := range syncer.TableColumns {
|
for _, tableColumn := range syncer.TableColumns {
|
||||||
if tableColumn.CasdoorName != "Id" {
|
if tableColumn.CasdoorName != "Id" {
|
||||||
@ -65,9 +66,20 @@ func (syncer *Syncer) getActiveColumns() []string {
|
|||||||
return res
|
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 {
|
func (syncer *Syncer) updateUser(user *OriginalUser) bool {
|
||||||
m := syncer.getMapFromOriginalUser(user)
|
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)
|
affected, err := syncer.Adapter.Engine.Table(syncer.Table).ID(syncer.TablePrimaryKey).Cols(columns...).Update(m)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
panic(err)
|
panic(err)
|
||||||
@ -76,12 +88,33 @@ func (syncer *Syncer) updateUser(user *OriginalUser) bool {
|
|||||||
return affected != 0
|
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 {
|
func (syncer *Syncer) calculateHash(user *OriginalUser) string {
|
||||||
values := []string{}
|
values := []string{}
|
||||||
m := syncer.getMapFromOriginalUser(user)
|
m := syncer.getMapFromOriginalUser(user)
|
||||||
for _, tableColumn := range syncer.TableColumns {
|
for _, tableColumn := range syncer.TableColumns {
|
||||||
if tableColumn.IsHashed {
|
if tableColumn.IsHashed {
|
||||||
values = append(values, m[tableColumn.CasdoorName])
|
values = append(values, m[tableColumn.Name])
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -52,6 +52,7 @@ func (syncer *Syncer) createUserFromOriginalUser(originalUser *OriginalUser, aff
|
|||||||
if user.Type == "" {
|
if user.Type == "" {
|
||||||
user.Type = "normal-user"
|
user.Type = "normal-user"
|
||||||
}
|
}
|
||||||
|
user.Avatar = syncer.getFullAvatarUrl(user.Avatar)
|
||||||
if originalUser.Score != 0 {
|
if originalUser.Score != 0 {
|
||||||
affiliation, ok := affiliationMap[originalUser.Score]
|
affiliation, ok := affiliationMap[originalUser.Score]
|
||||||
if !ok {
|
if !ok {
|
||||||
@ -196,7 +197,7 @@ func (syncer *Syncer) getMapFromOriginalUser(user *OriginalUser) map[string]stri
|
|||||||
|
|
||||||
m2 := map[string]string{}
|
m2 := map[string]string{}
|
||||||
for _, tableColumn := range syncer.TableColumns {
|
for _, tableColumn := range syncer.TableColumns {
|
||||||
m2[tableColumn.CasdoorName] = m[tableColumn.CasdoorName]
|
m2[tableColumn.Name] = m[tableColumn.CasdoorName]
|
||||||
}
|
}
|
||||||
|
|
||||||
return m2
|
return m2
|
||||||
|
@ -289,25 +289,6 @@ func UpdateUserForAllFields(id string, user *User) bool {
|
|||||||
return affected != 0
|
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 {
|
func AddUser(user *User) bool {
|
||||||
if user.Id == "" {
|
if user.Id == "" {
|
||||||
user.Id = util.GenerateId()
|
user.Id = util.GenerateId()
|
||||||
|
@ -15,6 +15,7 @@
|
|||||||
package util
|
package util
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"bytes"
|
||||||
"crypto/md5"
|
"crypto/md5"
|
||||||
"encoding/hex"
|
"encoding/hex"
|
||||||
"errors"
|
"errors"
|
||||||
@ -52,6 +53,22 @@ func BoolToString(b bool) string {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func CamelToSnakeCase(camel string) string {
|
||||||
|
var buf bytes.Buffer
|
||||||
|
for _, c := range camel {
|
||||||
|
if 'A' <= c && c <= 'Z' {
|
||||||
|
// just convert [A-Z] to _[a-z]
|
||||||
|
if buf.Len() > 0 {
|
||||||
|
buf.WriteRune('_')
|
||||||
|
}
|
||||||
|
buf.WriteRune(c - 'A' + 'a')
|
||||||
|
} else {
|
||||||
|
buf.WriteRune(c)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return buf.String()
|
||||||
|
}
|
||||||
|
|
||||||
func GetOwnerAndNameFromId(id string) (string, string) {
|
func GetOwnerAndNameFromId(id string) (string, string) {
|
||||||
tokens := strings.Split(id, "/")
|
tokens := strings.Split(id, "/")
|
||||||
if len(tokens) != 2 {
|
if len(tokens) != 2 {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user