feat: 从冻结 GoAdmin 源码重建 Sense 骨架 (#61)
This commit is contained in:
@@ -0,0 +1,45 @@
|
||||
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
|
||||
}
|
||||
Reference in New Issue
Block a user