authelia/internal/configuration/validator/identity_validation.go

42 lines
2.0 KiB
Go

package validator
import (
"errors"
"fmt"
"github.com/authelia/authelia/v4/internal/configuration/schema"
"github.com/authelia/authelia/v4/internal/utils"
)
// ValidateIdentityValidation validates and updates the IdentityValidation configuration.
func ValidateIdentityValidation(config *schema.Configuration, validator *schema.StructValidator) {
if config.IdentityValidation.ResetPassword.JWTExpiration <= 0 {
config.IdentityValidation.ResetPassword.JWTExpiration = schema.DefaultIdentityValidation.ResetPassword.JWTExpiration
}
switch {
case len(config.IdentityValidation.ResetPassword.JWTAlgorithm) == 0:
config.IdentityValidation.ResetPassword.JWTAlgorithm = schema.DefaultIdentityValidation.ResetPassword.JWTAlgorithm
case !utils.IsStringInSlice(config.IdentityValidation.ResetPassword.JWTAlgorithm, validIdentityValidationJWTAlgorithms):
validator.Push(fmt.Errorf(errFmtIdentityValidationResetPasswordJWTAlgorithm, utils.StringJoinOr(validIdentityValidationJWTAlgorithms), config.IdentityValidation.ResetPassword.JWTAlgorithm))
}
if !config.AuthenticationBackend.PasswordReset.Disable && len(config.IdentityValidation.ResetPassword.JWTSecret) == 0 {
validator.Push(errors.New(errFmtIdentityValidationResetPasswordJWTSecret))
}
if config.IdentityValidation.ElevatedSession.CodeLifespan <= 0 {
config.IdentityValidation.ElevatedSession.CodeLifespan = schema.DefaultIdentityValidation.ElevatedSession.CodeLifespan
}
if config.IdentityValidation.ElevatedSession.ElevationLifespan <= 0 {
config.IdentityValidation.ElevatedSession.ElevationLifespan = schema.DefaultIdentityValidation.ElevatedSession.ElevationLifespan
}
if config.IdentityValidation.ElevatedSession.Characters <= 0 {
config.IdentityValidation.ElevatedSession.Characters = schema.DefaultIdentityValidation.ElevatedSession.Characters
} else if config.IdentityValidation.ElevatedSession.Characters > 20 {
validator.Push(fmt.Errorf(errFmtIdentityValidationElevatedSessionCharacterLength, config.IdentityValidation.ElevatedSession.Characters))
}
}