diff --git a/internal/config.go b/internal/config.go index 0f28d63..c95ad8b 100644 --- a/internal/config.go +++ b/internal/config.go @@ -25,17 +25,17 @@ type Config struct { AuthHost string `long:"auth-host" env:"AUTH_HOST" description:"Single host to use when returning from 3rd party auth"` Config func(s string) error `long:"config" env:"CONFIG" description:"Path to config file" json:"-"` - CookieDomains []CookieDomain `long:"cookie-domain" env:"COOKIE_DOMAIN" description:"Domain to set auth cookie on, can be set multiple times"` + CookieDomains []CookieDomain `long:"cookie-domain" env:"COOKIE_DOMAIN" env-delim:"," description:"Domain to set auth cookie on, can be set multiple times"` InsecureCookie bool `long:"insecure-cookie" env:"INSECURE_COOKIE" description:"Use insecure cookies"` CookieName string `long:"cookie-name" env:"COOKIE_NAME" default:"_forward_auth" description:"Cookie Name"` CSRFCookieName string `long:"csrf-cookie-name" env:"CSRF_COOKIE_NAME" default:"_forward_auth_csrf" description:"CSRF Cookie Name"` DefaultAction string `long:"default-action" env:"DEFAULT_ACTION" default:"auth" choice:"auth" choice:"allow" description:"Default action"` DefaultProvider string `long:"default-provider" env:"DEFAULT_PROVIDER" default:"google" choice:"google" choice:"oidc" description:"Default provider"` - Domains CommaSeparatedList `long:"domain" env:"DOMAIN" description:"Only allow given email domains, can be set multiple times"` + Domains CommaSeparatedList `long:"domain" env:"DOMAIN" env-delim:"," description:"Only allow given email domains, can be set multiple times"` LifetimeString int `long:"lifetime" env:"LIFETIME" default:"43200" description:"Lifetime in seconds"` Path string `long:"url-path" env:"URL_PATH" default:"/_oauth" description:"Callback URL Path"` SecretString string `long:"secret" env:"SECRET" description:"Secret used for signing (required)" json:"-"` - Whitelist CommaSeparatedList `long:"whitelist" env:"WHITELIST" description:"Only allow given email addresses, can be set multiple times"` + Whitelist CommaSeparatedList `long:"whitelist" env:"WHITELIST" env-delim:"," description:"Only allow given email addresses, can be set multiple times"` Providers provider.Providers `group:"providers" namespace:"providers" env-namespace:"PROVIDERS"` Rules map[string]*Rule `long:"rule.." description:"Rule definitions, param can be: \"action\", \"rule\" or \"provider\""` diff --git a/internal/config_test.go b/internal/config_test.go index bfe483a..5b4e4ba 100644 --- a/internal/config_test.go +++ b/internal/config_test.go @@ -197,14 +197,27 @@ func TestConfigParseEnvironment(t *testing.T) { assert := assert.New(t) os.Setenv("COOKIE_NAME", "env_cookie_name") os.Setenv("PROVIDERS_GOOGLE_CLIENT_ID", "env_client_id") + os.Setenv("COOKIE_DOMAIN", "test1.com,example.org") + os.Setenv("DOMAIN", "test2.com,example.org") + os.Setenv("WHITELIST", "test3.com,example.org") + c, err := NewConfig([]string{}) assert.Nil(err) assert.Equal("env_cookie_name", c.CookieName, "variable should be read from environment") assert.Equal("env_client_id", c.Providers.Google.ClientID, "namespace variable should be read from environment") + assert.Equal([]CookieDomain{ + *NewCookieDomain("test1.com"), + *NewCookieDomain("example.org"), + }, c.CookieDomains, "array variable should be read from environment COOKIE_DOMAIN") + assert.Equal(CommaSeparatedList{"test2.com", "example.org"}, c.Domains, "array variable should be read from environment DOMAIN") + assert.Equal(CommaSeparatedList{"test3.com", "example.org"}, c.Whitelist, "array variable should be read from environment WHITELIST") os.Unsetenv("COOKIE_NAME") os.Unsetenv("PROVIDERS_GOOGLE_CLIENT_ID") + os.Unsetenv("COOKIE_DOMAIN") + os.Unsetenv("DOMAIN") + os.Unsetenv("WHITELIST") } func TestConfigParseEnvironmentBackwardsCompatability(t *testing.T) {