package config // Config is auth module settings (embedded in gateway root config). type Config struct { AccessExpire int64 `json:",optional"` RefreshExpire int64 `json:",optional"` ActiveKID string `json:",optional"` AccessSecret string `json:",optional,env=JWT_ACCESS_SECRET"` RefreshSecret string `json:",optional,env=JWT_REFRESH_SECRET"` // RegistrationSessionTTLSeconds is used by register/social flow (PR 6). RegistrationSessionTTLSeconds int `json:",optional"` } // Defaults returns zero-value-safe defaults. func (c Config) Defaults() Config { if c.AccessExpire <= 0 { c.AccessExpire = 900 } if c.RefreshExpire <= 0 { c.RefreshExpire = 604800 } if c.ActiveKID == "" { c.ActiveKID = "v1" } if c.RegistrationSessionTTLSeconds <= 0 { c.RegistrationSessionTTLSeconds = 600 } return c } // Enabled reports whether JWT signing is configured. func (c Config) Enabled() bool { c = c.Defaults() return c.AccessSecret != "" && c.RefreshSecret != "" }