github.com/go-email-validator/go-email-validator@v0.0.0-20230409163946-b8b9e6a0552e/pkg/ev/validator_role.go (about)

     1  package ev
     2  
     3  import (
     4  	"github.com/go-email-validator/go-email-validator/pkg/ev/contains"
     5  	"github.com/go-email-validator/go-email-validator/pkg/ev/utils"
     6  )
     7  
     8  // RoleValidatorName is name of role validator
     9  const RoleValidatorName ValidatorName = "RoleValidator"
    10  
    11  // RoleErr is text for RoleError.Error
    12  const RoleErr = "RoleError"
    13  
    14  // RoleError is error of RoleValidatorName
    15  type RoleError struct{}
    16  
    17  func (RoleError) Error() string {
    18  	return RoleErr
    19  }
    20  
    21  // NewRoleValidator instantiates RoleValidatorName
    22  func NewRoleValidator(r contains.InSet) Validator {
    23  	return roleValidator{r: r}
    24  }
    25  
    26  type roleValidator struct {
    27  	AValidatorWithoutDeps
    28  	r contains.InSet
    29  }
    30  
    31  func (r roleValidator) Validate(input Input, _ ...ValidationResult) ValidationResult {
    32  	var err error
    33  	var hasRole = r.r.Contains(input.Email().Username())
    34  	if hasRole {
    35  		err = RoleError{}
    36  	}
    37  
    38  	return NewResult(!hasRole, utils.Errs(err), nil, RoleValidatorName)
    39  }