mirror of
https://github.com/casdoor/casdoor.git
synced 2025-05-23 02:35:49 +08:00
feat: failed to sync keycloak users in the PostgreSQL database (#886)
Signed-off-by: Yixiang Zhao <seriouszyx@foxmail.com>
This commit is contained in:
parent
895cdd024d
commit
117dec4542
@ -151,6 +151,8 @@ func (syncer *Syncer) initAdapter() {
|
|||||||
var dataSourceName string
|
var dataSourceName string
|
||||||
if syncer.DatabaseType == "mssql" {
|
if syncer.DatabaseType == "mssql" {
|
||||||
dataSourceName = fmt.Sprintf("sqlserver://%s:%s@%s:%d?database=%s", syncer.User, syncer.Password, syncer.Host, syncer.Port, syncer.Database)
|
dataSourceName = fmt.Sprintf("sqlserver://%s:%s@%s:%d?database=%s", syncer.User, syncer.Password, syncer.Host, syncer.Port, syncer.Database)
|
||||||
|
} else if syncer.DatabaseType == "postgres" {
|
||||||
|
dataSourceName = fmt.Sprintf("user=%s password=%s host=%s port=%d sslmode=disable dbname=%s", syncer.User, syncer.Password, syncer.Host, syncer.Port, syncer.Database)
|
||||||
} else {
|
} else {
|
||||||
dataSourceName = fmt.Sprintf("%s:%s@tcp(%s:%d)/", syncer.User, syncer.Password, syncer.Host, syncer.Port)
|
dataSourceName = fmt.Sprintf("%s:%s@tcp(%s:%d)/", syncer.User, syncer.Password, syncer.Host, syncer.Port)
|
||||||
}
|
}
|
||||||
|
@ -173,16 +173,21 @@ func (syncer *Syncer) getOriginalUsersFromMap(results []map[string]string) []*Or
|
|||||||
}
|
}
|
||||||
|
|
||||||
for _, tableColumn := range syncer.TableColumns {
|
for _, tableColumn := range syncer.TableColumns {
|
||||||
|
tableColumnName := tableColumn.Name
|
||||||
|
if syncer.Type == "Keycloak" && syncer.DatabaseType == "postgres" {
|
||||||
|
tableColumnName = strings.ToLower(tableColumnName)
|
||||||
|
}
|
||||||
|
|
||||||
value := ""
|
value := ""
|
||||||
if strings.Contains(tableColumn.Name, "+") {
|
if strings.Contains(tableColumnName, "+") {
|
||||||
names := strings.Split(tableColumn.Name, "+")
|
names := strings.Split(tableColumnName, "+")
|
||||||
var values []string
|
var values []string
|
||||||
for _, name := range names {
|
for _, name := range names {
|
||||||
values = append(values, result[strings.Trim(name, " ")])
|
values = append(values, result[strings.Trim(name, " ")])
|
||||||
}
|
}
|
||||||
value = strings.Join(values, " ")
|
value = strings.Join(values, " ")
|
||||||
} else {
|
} else {
|
||||||
value = result[tableColumn.Name]
|
value = result[tableColumnName]
|
||||||
}
|
}
|
||||||
syncer.setUserByKeyValue(originalUser, tableColumn.CasdoorName, value)
|
syncer.setUserByKeyValue(originalUser, tableColumn.CasdoorName, value)
|
||||||
}
|
}
|
||||||
@ -198,7 +203,7 @@ func (syncer *Syncer) getOriginalUsersFromMap(results []map[string]string) []*Or
|
|||||||
originalUser.PasswordSalt = credential.Salt
|
originalUser.PasswordSalt = credential.Salt
|
||||||
}
|
}
|
||||||
// query and set signup application from user group table
|
// query and set signup application from user group table
|
||||||
sql = fmt.Sprintf("select name from keycloak_group where id = " +
|
sql = fmt.Sprintf("select name from keycloak_group where id = "+
|
||||||
"(select group_id as gid from user_group_membership where user_id = '%s')", originalUser.Id)
|
"(select group_id as gid from user_group_membership where user_id = '%s')", originalUser.Id)
|
||||||
groupResult, _ := syncer.Adapter.Engine.QueryString(sql)
|
groupResult, _ := syncer.Adapter.Engine.QueryString(sql)
|
||||||
if len(groupResult) > 0 {
|
if len(groupResult) > 0 {
|
||||||
@ -209,7 +214,12 @@ func (syncer *Syncer) getOriginalUsersFromMap(results []map[string]string) []*Or
|
|||||||
tm := time.Unix(i/int64(1000), 0)
|
tm := time.Unix(i/int64(1000), 0)
|
||||||
originalUser.CreatedTime = tm.Format("2006-01-02T15:04:05+08:00")
|
originalUser.CreatedTime = tm.Format("2006-01-02T15:04:05+08:00")
|
||||||
// enable
|
// enable
|
||||||
originalUser.IsForbidden = !(result["ENABLED"] == "\x01")
|
value, ok := result["ENABLED"]
|
||||||
|
if ok {
|
||||||
|
originalUser.IsForbidden = !util.ParseBool(value)
|
||||||
|
} else {
|
||||||
|
originalUser.IsForbidden = !util.ParseBool(result["enabled"])
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
users = append(users, originalUser)
|
users = append(users, originalUser)
|
||||||
|
@ -52,8 +52,10 @@ func ParseFloat(s string) float64 {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func ParseBool(s string) bool {
|
func ParseBool(s string) bool {
|
||||||
if s == "\x01" {
|
if s == "\x01" || s == "true" {
|
||||||
return true
|
return true
|
||||||
|
} else if s == "false" {
|
||||||
|
return false
|
||||||
}
|
}
|
||||||
|
|
||||||
i := ParseInt(s)
|
i := ParseInt(s)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user