diff options
Diffstat (limited to 'models')
-rw-r--r-- | models/login.go | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/models/login.go b/models/login.go index e36171a3..dc620e1b 100644 --- a/models/login.go +++ b/models/login.go @@ -105,10 +105,21 @@ type LoginSource struct { Updated time.Time `xorm:"UPDATED"` } +// Cell2Int64 converts a xorm.Cell type to int64, +// and handles possible irregular cases. +func Cell2Int64(val xorm.Cell) int64 { + switch (*val).(type) { + case []int8: + log.Trace("Cell2Int64 ([]int8): %v", *val) + return int64((*val).([]int8)[0]) + } + return (*val).(int64) +} + func (source *LoginSource) BeforeSet(colName string, val xorm.Cell) { switch colName { case "type": - switch LoginType((*val).(int64)) { + switch LoginType(Cell2Int64(val)) { case LOGIN_LDAP, LOGIN_DLDAP: source.Cfg = new(LDAPConfig) case LOGIN_SMTP: |