summaryrefslogtreecommitdiff
path: root/config/config.go
blob: 236ed41ee72b91ec52821b9c627c1c07849e27d2 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
package config

import (
	"auth-proxy/types"
	"os"
	"strconv"

	"github.com/joho/godotenv"
)

// Paths holds the global configuration values.
var Paths types.PathConfig

// getEnv reads an environment variable or returns a fallback value.
func getEnv(key, fallback string) string {
	if value, ok := os.LookupEnv(key); ok {
		return value
	}
	return fallback
}

// getEnvAsBool reads an environment variable as a boolean or returns a fallback value.
func getEnvAsBool(key string, fallback bool) bool {
	if value, ok := os.LookupEnv(key); ok {
		if b, err := strconv.ParseBool(value); err == nil {
			return b
		}
	}
	return fallback
}

// Init loads path configurations from environment variables.
func Init() {
	// Load .env file. Errors are ignored, so variables from the environment can still be used.
	_ = godotenv.Load()

	Paths = types.PathConfig{
		Login:           getEnv("AUTH_PATH_LOGIN", "/login"),
		Register:        getEnv("AUTH_PATH_REGISTER", "/register"),
		Logout:          getEnv("AUTH_PATH_LOGOUT", "/logout"),
		Account:         getEnv("AUTH_PATH_ACCOUNT", "/account"),
		AccountPassword: getEnv("AUTH_PATH_ACCOUNT_PASSWORD", "/account/password"),
		Admin:           getEnv("AUTH_PATH_ADMIN", "/admin"),
		AdminUsersAPI:   getEnv("AUTH_PATH_ADMIN_USERS_API", "/api/admin/users"),
		Assets:          getEnv("AUTH_ASSETS_PATH", "/auth-proxy-assets"),
		ProtectFrontend: getEnvAsBool("PROTECT_FRONTEND", false),
		ProtectAPI:      getEnvAsBool("PROTECT_API", false),
		FrontPath:       getEnv("FRONT_PATH", "/"),
		APIPath:         getEnv("API_PATH", "/api/"),
	}
}