fix: export policy.Resource for remote RPC policy updates (#5941)

This PR fixes a regression where the remote bucket policies
were not updated due to policy.Resource not having exported
fields, gob fails with unexported fields while marshalling.
master
Harshavardhana 7 years ago committed by kannappanr
parent 41496e1406
commit 64288d6eb5
  1. 24
      pkg/policy/resource.go

@ -29,26 +29,26 @@ const ResourceARNPrefix = "arn:aws:s3:::"
// Resource - resource in policy statement. // Resource - resource in policy statement.
type Resource struct { type Resource struct {
bucketName string BucketName string
pattern string Pattern string
} }
func (r Resource) isBucketPattern() bool { func (r Resource) isBucketPattern() bool {
return !strings.Contains(r.pattern, "/") return !strings.Contains(r.Pattern, "/")
} }
func (r Resource) isObjectPattern() bool { func (r Resource) isObjectPattern() bool {
return strings.Contains(r.pattern, "/") || strings.Contains(r.bucketName, "*") return strings.Contains(r.Pattern, "/") || strings.Contains(r.BucketName, "*")
} }
// IsValid - checks whether Resource is valid or not. // IsValid - checks whether Resource is valid or not.
func (r Resource) IsValid() bool { func (r Resource) IsValid() bool {
return r.bucketName != "" && r.pattern != "" return r.BucketName != "" && r.Pattern != ""
} }
// Match - matches object name with resource pattern. // Match - matches object name with resource pattern.
func (r Resource) Match(resource string) bool { func (r Resource) Match(resource string) bool {
return wildcard.Match(r.pattern, resource) return wildcard.Match(r.Pattern, resource)
} }
// MarshalJSON - encodes Resource to JSON data. // MarshalJSON - encodes Resource to JSON data.
@ -61,7 +61,7 @@ func (r Resource) MarshalJSON() ([]byte, error) {
} }
func (r Resource) String() string { func (r Resource) String() string {
return ResourceARNPrefix + r.pattern return ResourceARNPrefix + r.Pattern
} }
// UnmarshalJSON - decodes JSON data to Resource. // UnmarshalJSON - decodes JSON data to Resource.
@ -87,7 +87,7 @@ func (r Resource) Validate(bucketName string) error {
return fmt.Errorf("invalid resource") return fmt.Errorf("invalid resource")
} }
if !wildcard.Match(r.bucketName, bucketName) { if !wildcard.Match(r.BucketName, bucketName) {
return fmt.Errorf("bucket name does not match") return fmt.Errorf("bucket name does not match")
} }
@ -108,8 +108,8 @@ func parseResource(s string) (Resource, error) {
} }
return Resource{ return Resource{
bucketName: bucketName, BucketName: bucketName,
pattern: pattern, Pattern: pattern,
}, nil }, nil
} }
@ -125,7 +125,7 @@ func NewResource(bucketName, keyName string) Resource {
} }
return Resource{ return Resource{
bucketName: bucketName, BucketName: bucketName,
pattern: pattern, Pattern: pattern,
} }
} }

Loading…
Cancel
Save