Browse Source

Add enabled field to authentication settings

feature/make-middlewares-optional
Fabian Vowie 3 years ago
parent
commit
4b2195d174
No known key found for this signature in database GPG Key ID: C27317C33B27C410
  1. 18
      main.go
  2. 18
      settings/settings.go
  3. 7
      settings/settings_test.go

18
main.go

@ -63,16 +63,20 @@ func main() {
pipes := pipelines.LoadPipelines() pipes := pipelines.LoadPipelines()
authMiddleware := middlewares.CreateAuthenticationMiddleware(appSettings.Token)
rateLimiterMiddleware, err := middlewares.CreateRateLimiterMiddleware(appSettings.RateLimiter.RequestsPerMinute, appSettings.RateLimiter.AllowedBurst)
if err != nil {
panic(err)
}
r := mux.NewRouter() r := mux.NewRouter()
r.Use(authMiddleware.Middleware)
if appSettings.Authentication.Enabled {
authMiddleware := middlewares.CreateAuthenticationMiddleware(appSettings.Authentication.Token)
r.Use(authMiddleware.Middleware)
}
if appSettings.RateLimiter.Enabled { if appSettings.RateLimiter.Enabled {
rateLimiterMiddleware, err := middlewares.CreateRateLimiterMiddleware(appSettings.RateLimiter.RequestsPerMinute, appSettings.RateLimiter.AllowedBurst)
if err != nil {
panic(err)
}
r.Use(rateLimiterMiddleware.Middleware) r.Use(rateLimiterMiddleware.Middleware)
} }

18
settings/settings.go

@ -15,10 +15,10 @@ const (
type FileSystemType int type FileSystemType int
type Settings struct { type Settings struct {
Endpoint string `json:"endpoint"`
Token string `json:"token"`
RateLimiter RateLimiterSettings `json:"rate_limiter"`
StorageProvider StorageSettings `json:"storage_provider"`
Endpoint string `json:"endpoint"`
Authentication AuthenticationSettings `json:"authentication"`
RateLimiter RateLimiterSettings `json:"rate_limiter"`
StorageProvider StorageSettings `json:"storage_provider"`
} }
type StorageSettings struct { type StorageSettings struct {
@ -26,6 +26,11 @@ type StorageSettings struct {
BasePath string `json:"base_path"` BasePath string `json:"base_path"`
} }
type AuthenticationSettings struct {
Enabled bool `json:"enabled"`
Token string `json:"token"`
}
type RateLimiterSettings struct { type RateLimiterSettings struct {
Enabled bool `json:"enabled"` Enabled bool `json:"enabled"`
RequestsPerMinute int `json:"requests_per_minute"` RequestsPerMinute int `json:"requests_per_minute"`
@ -57,7 +62,10 @@ func LoadSettings(fileSystem afero.Fs) (Settings, error) {
// If file does not exist, create default settings // If file does not exist, create default settings
defaultSettings := Settings{ defaultSettings := Settings{
Endpoint: "127.0.0.1:8000", Endpoint: "127.0.0.1:8000",
Token: "changeme",
Authentication: AuthenticationSettings{
Enabled: true,
Token: "changeme",
},
RateLimiter: RateLimiterSettings{ RateLimiter: RateLimiterSettings{
Enabled: true, Enabled: true,
RequestsPerMinute: 20, RequestsPerMinute: 20,

7
settings/settings_test.go

@ -12,7 +12,10 @@ import (
func TestSettingsParsing(t *testing.T) { func TestSettingsParsing(t *testing.T) {
const file string = `{ const file string = `{
"endpoint": "0.0.0.0:8000", "endpoint": "0.0.0.0:8000",
"token": "foobar",
"authentication": {
"enabled": true,
"token": "foobar"
},
"rate_limiter": { "rate_limiter": {
"enabled": true, "enabled": true,
"requests_per_minute": 20, "requests_per_minute": 20,
@ -28,7 +31,7 @@ func TestSettingsParsing(t *testing.T) {
settings := parseSettings([]byte(file)) settings := parseSettings([]byte(file))
assert.Equal(t, "0.0.0.0:8000", settings.Endpoint) assert.Equal(t, "0.0.0.0:8000", settings.Endpoint)
assert.Equal(t, "foobar", settings.Token)
assert.Equal(t, "foobar", settings.Authentication.Token)
assert.Equal(t, "assets", settings.StorageProvider.BasePath) assert.Equal(t, "assets", settings.StorageProvider.BasePath)
}) })
} }

Loading…
Cancel
Save