diff options
Diffstat (limited to 'weed/s3api/s3api_server.go')
| -rw-r--r-- | weed/s3api/s3api_server.go | 14 |
1 files changed, 8 insertions, 6 deletions
diff --git a/weed/s3api/s3api_server.go b/weed/s3api/s3api_server.go index 5a06be720..053d4f56a 100644 --- a/weed/s3api/s3api_server.go +++ b/weed/s3api/s3api_server.go @@ -86,10 +86,11 @@ func NewS3ApiServerWithStore(router *mux.Router, option *S3ApiServerOption, expl option.AllowedOrigins = domains } - var iam *IdentityAccessManagement - - iam = NewIdentityAccessManagementWithStore(option, explicitStore) + iam := NewIdentityAccessManagementWithStore(option, explicitStore) + // Initialize bucket policy engine first + policyEngine := NewBucketPolicyEngine() + s3ApiServer = &S3ApiServer{ option: option, iam: iam, @@ -98,11 +99,12 @@ func NewS3ApiServerWithStore(router *mux.Router, option *S3ApiServerOption, expl cb: NewCircuitBreaker(option), credentialManager: iam.credentialManager, bucketConfigCache: NewBucketConfigCache(60 * time.Minute), // Increased TTL since cache is now event-driven - policyEngine: NewBucketPolicyEngine(), // Initialize bucket policy engine + policyEngine: policyEngine, // Initialize bucket policy engine } - // Link IAM back to server for bucket policy evaluation - iam.s3ApiServer = s3ApiServer + // Pass policy engine to IAM for bucket policy evaluation + // This avoids circular dependency by not passing the entire S3ApiServer + iam.policyEngine = policyEngine // Initialize advanced IAM system if config is provided if option.IamConfig != "" { |
