github.com/treeverse/lakefs@v1.24.1-0.20240520134607-95648127bfb0/pkg/auth/model/validation.go (about)

     1  package model
     2  
     3  import (
     4  	"errors"
     5  	"fmt"
     6  	"strings"
     7  
     8  	"github.com/aws/aws-sdk-go-v2/aws/arn"
     9  	"github.com/treeverse/lakefs/pkg/kv"
    10  	"github.com/treeverse/lakefs/pkg/permissions"
    11  )
    12  
    13  var ErrValidationError = errors.New("validation error")
    14  
    15  func ValidateAuthEntityID(name string) error {
    16  	if len(name) == 0 {
    17  		return fmt.Errorf("empty name: %w", ErrValidationError)
    18  	}
    19  	if strings.Contains(name, kv.PathDelimiter) {
    20  		return fmt.Errorf("name contains delimiter %s: %w", kv.PathDelimiter, ErrValidationError)
    21  	}
    22  	return nil
    23  }
    24  
    25  func ValidateActionName(name string) error {
    26  	return permissions.IsValidAction(name)
    27  }
    28  
    29  func ValidateArn(name string) error {
    30  	if !arn.IsARN(name) && name != permissions.All {
    31  		return fmt.Errorf("%w: ARN '%s'", ErrValidationError, name)
    32  	}
    33  	return nil
    34  }
    35  
    36  func ValidateStatementEffect(effect string) error {
    37  	if effect != StatementEffectDeny && effect != StatementEffectAllow {
    38  		return fmt.Errorf("%w: effect '%s'", ErrValidationError, effect)
    39  	}
    40  	return nil
    41  }