75 lines
2.1 KiB
Go
75 lines
2.1 KiB
Go
package validator
|
|
|
|
import (
|
|
"fmt"
|
|
"os"
|
|
|
|
"github.com/authelia/authelia/v4/internal/configuration/schema"
|
|
"github.com/authelia/authelia/v4/internal/utils"
|
|
)
|
|
|
|
// ValidateConfiguration and adapt the configuration read from file.
|
|
func ValidateConfiguration(configuration *schema.Configuration, validator *schema.StructValidator) {
|
|
if configuration.CertificatesDirectory != "" {
|
|
info, err := os.Stat(configuration.CertificatesDirectory)
|
|
if err != nil {
|
|
validator.Push(fmt.Errorf("Error checking certificate directory: %v", err))
|
|
} else if !info.IsDir() {
|
|
validator.Push(fmt.Errorf("The path %s specified for certificate_directory is not a directory", configuration.CertificatesDirectory))
|
|
}
|
|
}
|
|
|
|
if configuration.JWTSecret == "" {
|
|
validator.Push(fmt.Errorf("Provide a JWT secret using \"jwt_secret\" key"))
|
|
}
|
|
|
|
if configuration.DefaultRedirectionURL != "" {
|
|
err := utils.IsStringAbsURL(configuration.DefaultRedirectionURL)
|
|
if err != nil {
|
|
validator.Push(fmt.Errorf("Value for \"default_redirection_url\" is invalid: %+v", err))
|
|
}
|
|
}
|
|
|
|
ValidateTheme(configuration, validator)
|
|
|
|
if configuration.TOTP == nil {
|
|
configuration.TOTP = &schema.DefaultTOTPConfiguration
|
|
}
|
|
|
|
ValidateLogging(configuration, validator)
|
|
|
|
ValidateTOTP(configuration.TOTP, validator)
|
|
|
|
ValidateAuthenticationBackend(&configuration.AuthenticationBackend, validator)
|
|
|
|
ValidateAccessControl(&configuration.AccessControl, validator)
|
|
|
|
ValidateRules(configuration.AccessControl, validator)
|
|
|
|
ValidateSession(&configuration.Session, validator)
|
|
|
|
if configuration.Regulation == nil {
|
|
configuration.Regulation = &schema.DefaultRegulationConfiguration
|
|
}
|
|
|
|
ValidateRegulation(configuration.Regulation, validator)
|
|
|
|
ValidateServer(configuration, validator)
|
|
|
|
ValidateStorage(configuration.Storage, validator)
|
|
|
|
if configuration.Notifier == nil {
|
|
validator.Push(fmt.Errorf("A notifier configuration must be provided"))
|
|
} else {
|
|
ValidateNotifier(configuration.Notifier, validator)
|
|
}
|
|
|
|
ValidateIdentityProviders(&configuration.IdentityProviders, validator)
|
|
|
|
if configuration.NTP == nil {
|
|
configuration.NTP = &schema.DefaultNTPConfiguration
|
|
}
|
|
|
|
ValidateNTP(configuration.NTP, validator)
|
|
}
|