package api import ( "errors" "fmt" "strings" log "github.com/go-admin-team/go-admin-core/logger" "github.com/go-admin-team/go-admin-core/sdk/config" ) const minimumProductionJWTSecretLength = 32 func validateRuntimeConfig() { err := validateConfigValues( config.ApplicationConfig.Mode, config.JwtConfig.Secret, config.DatabaseConfig.Driver, config.DatabaseConfig.Source, ) if err != nil { log.Fatal(err) } } func validateConfigValues(mode, jwtSecret, databaseDriver, databaseSource string) error { if !strings.EqualFold(strings.TrimSpace(databaseDriver), "postgres") { return errors.New("Sense requires PostgreSQL as its database driver") } if strings.TrimSpace(databaseSource) == "" { return errors.New("Sense database source is required") } if strings.EqualFold(strings.TrimSpace(mode), "prod") { secret := strings.TrimSpace(jwtSecret) if len(secret) < minimumProductionJWTSecretLength { return fmt.Errorf("Sense production JWT secret must contain at least %d characters", minimumProductionJWTSecretLength) } if strings.EqualFold(secret, "go-admin") { return errors.New("Sense production JWT secret must not use the upstream default") } } return nil }