✨ feat(user): magic-link expired-token cleanup loop (ADR-0028 Phase A consequence) (#65)
Co-authored-by: Gabriel Radureau <arcodange@gmail.com> Co-committed-by: Gabriel Radureau <arcodange@gmail.com>
This commit was merged in pull request #65.
This commit is contained in:
@@ -114,8 +114,9 @@ type AuthConfig struct {
|
||||
|
||||
// MagicLinkConfig holds passwordless-auth magic-link parameters (ADR-0028 Phase A).
|
||||
type MagicLinkConfig struct {
|
||||
TTL time.Duration `mapstructure:"ttl"`
|
||||
BaseURL string `mapstructure:"base_url"`
|
||||
TTL time.Duration `mapstructure:"ttl"`
|
||||
BaseURL string `mapstructure:"base_url"`
|
||||
CleanupInterval time.Duration `mapstructure:"cleanup_interval"`
|
||||
}
|
||||
|
||||
// OIDCConfig holds OpenID Connect provider configuration (ADR-0028 Phase B).
|
||||
@@ -300,6 +301,7 @@ func LoadConfig() (*Config, error) {
|
||||
// Magic-link defaults (ADR-0028 Phase A).
|
||||
v.SetDefault("auth.magic_link.ttl", 15*time.Minute)
|
||||
v.SetDefault("auth.magic_link.base_url", "http://localhost:8080")
|
||||
v.SetDefault("auth.magic_link.cleanup_interval", 1*time.Hour)
|
||||
|
||||
// OIDC defaults (ADR-0028 Phase B). Providers map is empty by default;
|
||||
// configured per environment via config file or env vars.
|
||||
@@ -361,6 +363,7 @@ func LoadConfig() (*Config, error) {
|
||||
// Magic-link environment variables (ADR-0028 Phase A).
|
||||
v.BindEnv("auth.magic_link.ttl", "DLC_AUTH_MAGIC_LINK_TTL")
|
||||
v.BindEnv("auth.magic_link.base_url", "DLC_AUTH_MAGIC_LINK_BASE_URL")
|
||||
v.BindEnv("auth.magic_link.cleanup_interval", "DLC_AUTH_MAGIC_LINK_CLEANUP_INTERVAL")
|
||||
|
||||
// OIDC environment variables (ADR-0028 Phase B). One canonical "default"
|
||||
// provider is bindable via env; additional providers must be defined in config.yaml.
|
||||
@@ -528,6 +531,14 @@ func (c *Config) GetOIDCProviders() map[string]OIDCProvider {
|
||||
return c.Auth.OIDC.Providers
|
||||
}
|
||||
|
||||
// GetMagicLinkCleanupInterval returns the magic-link cleanup interval (ADR-0028 Phase A consequence).
|
||||
func (c *Config) GetMagicLinkCleanupInterval() time.Duration {
|
||||
if c.Auth.MagicLink.CleanupInterval <= 0 {
|
||||
return 1 * time.Hour
|
||||
}
|
||||
return c.Auth.MagicLink.CleanupInterval
|
||||
}
|
||||
|
||||
// GetJWTTTL returns the JWT TTL
|
||||
func (c *Config) GetJWTTTL() time.Duration {
|
||||
if c.Auth.JWT.TTL == 0 {
|
||||
|
||||
Reference in New Issue
Block a user