Changeset 0.6.0 (#36)
This commit is contained in:
@@ -12,6 +12,12 @@ type Config struct {
|
||||
DatabaseURL string
|
||||
JWTSecret string
|
||||
Environment string
|
||||
BasePath string // URL path prefix (e.g. "/dev", "/test", or "" for root)
|
||||
|
||||
// Admin bootstrap (optional — set via K8s secret)
|
||||
AdminUsername string
|
||||
AdminPassword string
|
||||
AdminEmail string
|
||||
}
|
||||
|
||||
// Load reads configuration from environment variables.
|
||||
@@ -21,13 +27,34 @@ func Load() *Config {
|
||||
_ = godotenv.Load()
|
||||
|
||||
return &Config{
|
||||
Port: getEnv("PORT", "8080"),
|
||||
DatabaseURL: getEnv("DATABASE_URL", ""),
|
||||
JWTSecret: getEnv("JWT_SECRET", "dev-secret-change-me"),
|
||||
Environment: getEnv("ENVIRONMENT", "development"),
|
||||
Port: getEnv("PORT", "8080"),
|
||||
DatabaseURL: getEnv("DATABASE_URL", ""),
|
||||
JWTSecret: getEnv("JWT_SECRET", "dev-secret-change-me"),
|
||||
Environment: getEnv("ENVIRONMENT", "development"),
|
||||
BasePath: sanitizeBasePath(getEnv("BASE_PATH", "")),
|
||||
AdminUsername: getEnv("SWITCHBOARD_ADMIN_USERNAME", ""),
|
||||
AdminPassword: getEnv("SWITCHBOARD_ADMIN_PASSWORD", ""),
|
||||
AdminEmail: getEnv("SWITCHBOARD_ADMIN_EMAIL", ""),
|
||||
}
|
||||
}
|
||||
|
||||
// sanitizeBasePath ensures the path starts with / and doesn't end with /.
|
||||
// Empty string means root (no prefix).
|
||||
func sanitizeBasePath(p string) string {
|
||||
if p == "" || p == "/" {
|
||||
return ""
|
||||
}
|
||||
// Ensure leading slash
|
||||
if p[0] != '/' {
|
||||
p = "/" + p
|
||||
}
|
||||
// Strip trailing slash
|
||||
for len(p) > 1 && p[len(p)-1] == '/' {
|
||||
p = p[:len(p)-1]
|
||||
}
|
||||
return p
|
||||
}
|
||||
|
||||
func getEnv(key, fallback string) string {
|
||||
if v := os.Getenv(key); v != "" {
|
||||
return v
|
||||
|
||||
Reference in New Issue
Block a user