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"`
|
||||
IsActived bool `xorm:"NOT NULL 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:"-"`
|
||||
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 {
|
||||
return LoginNames[s.Type]
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue