46 lines
1.2 KiB
Go
46 lines
1.2 KiB
Go
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
|
|
}
|