Change JWT TTL config from duration to string for flexibility
- The mapstructure library is no longer needed for direct duration parsing since we now store TTLs as string durations (e.g., "15m", "168h") and parse them on demand via helper methods. - This allows more flexible duration formats in configuration and moves the parsing responsibility to the JWT config struct itself.
This commit is contained in:
@@ -34,9 +34,19 @@ type LocalStorageConfig struct {
|
||||
}
|
||||
|
||||
type JWTConfig struct {
|
||||
Secret string `mapstructure:"secret"`
|
||||
AccessTTL time.Duration `mapstructure:"access_ttl"`
|
||||
RefreshTTL time.Duration `mapstructure:"refresh_ttl"`
|
||||
Secret string `mapstructure:"secret"`
|
||||
AccessTTL string `mapstructure:"access_ttl"`
|
||||
RefreshTTL string `mapstructure:"refresh_ttl"`
|
||||
}
|
||||
|
||||
func (j JWTConfig) AccessDuration() time.Duration {
|
||||
d, _ := time.ParseDuration(j.AccessTTL)
|
||||
return d
|
||||
}
|
||||
|
||||
func (j JWTConfig) RefreshDuration() time.Duration {
|
||||
d, _ := time.ParseDuration(j.RefreshTTL)
|
||||
return d
|
||||
}
|
||||
|
||||
func (c *Config) Validate() error {
|
||||
@@ -62,12 +72,12 @@ func (c *Config) Validate() error {
|
||||
errs = append(errs, errors.New("jwt.secret: must not be empty"))
|
||||
}
|
||||
|
||||
if c.JWT.AccessTTL <= 0 {
|
||||
errs = append(errs, fmt.Errorf("jwt.access_ttl: %v must be positive", c.JWT.AccessTTL))
|
||||
if _, err := time.ParseDuration(c.JWT.AccessTTL); err != nil {
|
||||
errs = append(errs, fmt.Errorf("jwt.access_ttl: %w", err))
|
||||
}
|
||||
|
||||
if c.JWT.RefreshTTL <= 0 {
|
||||
errs = append(errs, fmt.Errorf("jwt.refresh_ttl: %v must be positive", c.JWT.RefreshTTL))
|
||||
if _, err := time.ParseDuration(c.JWT.RefreshTTL); err != nil {
|
||||
errs = append(errs, fmt.Errorf("jwt.refresh_ttl: %w", err))
|
||||
}
|
||||
|
||||
return errors.Join(errs...)
|
||||
|
||||
Reference in New Issue
Block a user