mirror of https://github.com/gogs/gogs.git
db: handle JSON conversion for `LoginSource` (#6075)
parent
2b3655fa11
commit
571be84e26
|
@ -151,7 +151,8 @@ type LoginSource struct {
|
||||||
Name string `xorm:"UNIQUE"`
|
Name string `xorm:"UNIQUE"`
|
||||||
IsActived bool `xorm:"NOT NULL DEFAULT false"`
|
IsActived bool `xorm:"NOT NULL DEFAULT false"`
|
||||||
IsDefault bool `xorm:"DEFAULT false"`
|
IsDefault bool `xorm:"DEFAULT false"`
|
||||||
Cfg core.Conversion `xorm:"TEXT"`
|
Cfg core.Conversion `xorm:"TEXT" gorm:"COLUMN:remove-me-when-migrated-to-gorm"`
|
||||||
|
RawCfg string `xorm:"-" gorm:"COLUMN:cfg"` // TODO: Remove me when migrated to GORM.
|
||||||
|
|
||||||
Created time.Time `xorm:"-" json:"-"`
|
Created time.Time `xorm:"-" json:"-"`
|
||||||
CreatedUnix int64
|
CreatedUnix int64
|
||||||
|
@ -208,6 +209,23 @@ func (s *LoginSource) AfterSet(colName string, _ xorm.Cell) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// NOTE: This is a GORM query hook.
|
||||||
|
func (s *LoginSource) AfterFind() error {
|
||||||
|
switch s.Type {
|
||||||
|
case LoginLDAP, LoginDLDAP:
|
||||||
|
s.Cfg = new(LDAPConfig)
|
||||||
|
case LoginSMTP:
|
||||||
|
s.Cfg = new(SMTPConfig)
|
||||||
|
case LoginPAM:
|
||||||
|
s.Cfg = new(PAMConfig)
|
||||||
|
case LoginGitHub:
|
||||||
|
s.Cfg = new(GitHubConfig)
|
||||||
|
default:
|
||||||
|
return fmt.Errorf("unrecognized login source type: %v", s.Type)
|
||||||
|
}
|
||||||
|
return jsoniter.UnmarshalFromString(s.RawCfg, s.Cfg)
|
||||||
|
}
|
||||||
|
|
||||||
func (s *LoginSource) TypeName() string {
|
func (s *LoginSource) TypeName() string {
|
||||||
return LoginNames[s.Type]
|
return LoginNames[s.Type]
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue