Files
yovision/Sense/server/cmd/api/security.go
T

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
}