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 }