]> git.apps.os.sepia.ceph.com Git - ceph-ci.git/commitdiff
rgw: move public access conf to perm_state_base
authorAbhishek Lekshmanan <abhishek@suse.com>
Wed, 29 Jan 2020 18:18:24 +0000 (19:18 +0100)
committerAbhishek Lekshmanan <abhishek@suse.com>
Mon, 3 Feb 2020 16:53:34 +0000 (17:53 +0100)
Signed-off-by: Abhishek Lekshmanan <abhishek@suse.com>
src/rgw/rgw_common.cc
src/rgw/rgw_common.h

index 350de785bd965a33c6af48a1f65eebe3f76f1f05..f440bb2261227bf699431c1060082adc487e4284 100644 (file)
@@ -1006,7 +1006,9 @@ struct perm_state_from_req_state : public perm_state_base {
                                                                     _s->auth.identity.get(),
                                                                     _s->bucket_info,
                                                                     _s->perm_mask,
-                                                                    _s->defer_to_bucket_acls), s(_s) {}
+                                                                    _s->defer_to_bucket_acls,
+                                                                    _s->bucket_access_conf),
+                                                                    s(_s) {}
   std::optional<bool> get_request_payer() const override {
     const char *request_payer = s->info.env->get("HTTP_X_AMZ_REQUEST_PAYER");
     if (!request_payer) {
@@ -1198,8 +1200,8 @@ bool verify_bucket_permission_no_policy(const DoutPrefixProvider* dpp, struct pe
   if ((perm & (int)s->perm_mask) != perm)
     return false;
 
-  if (bucket_acl->verify_permission(dpp, *s->auth.identity, perm, perm,
-                                    s->info.env->get("HTTP_REFERER"),
+  if (bucket_acl->verify_permission(dpp, *s->identity, perm, perm,
+                                    s->get_referer(),
                                     s->bucket_access_conf &&
                                     s->bucket_access_conf->ignore_public_acls()))
     return true;
@@ -1334,7 +1336,7 @@ bool verify_object_permission(const DoutPrefixProvider* dpp, struct perm_state_b
     return false;
   }
 
-  bool ret = object_acl->verify_permission(dpp, *s->auth.identity, s->perm_mask, perm,
+  bool ret = object_acl->verify_permission(dpp, *s->identity, s->perm_mask, perm,
                                           nullptr, /* http_referrer */
                                           s->bucket_access_conf &&
                                           s->bucket_access_conf->ignore_public_acls());
@@ -1401,7 +1403,7 @@ bool verify_object_permission_no_policy(const DoutPrefixProvider* dpp,
     return false;
   }
 
-  bool ret = object_acl->verify_permission(dpp, *s->auth.identity, s->perm_mask, perm,
+  bool ret = object_acl->verify_permission(dpp, *s->identity, s->perm_mask, perm,
                                           nullptr, /* http referrer */
                                           s->bucket_access_conf &&
                                           s->bucket_access_conf->ignore_public_acls());
index 1eb40997d1bc5a38e95925b1750c729a2ee96128..c7677b83991f3f4e4d16de6f3f691944a903efbc 100644 (file)
@@ -2122,18 +2122,24 @@ struct perm_state_base {
   const RGWBucketInfo& bucket_info;
   int perm_mask;
   bool defer_to_bucket_acls;
+  boost::optional<PublicAccessBlockConfiguration> bucket_access_conf;
 
   perm_state_base(CephContext *_cct,
                   const rgw::IAM::Environment& _env,
                   rgw::auth::Identity *_identity,
                   const RGWBucketInfo& _bucket_info,
                   int _perm_mask,
-                  bool _defer_to_bucket_acls) : cct(_cct),
+                  bool _defer_to_bucket_acls,
+                  boost::optional<PublicAccessBlockConfiguration> _bucket_acess_conf = boost::none) :
+                                                cct(_cct),
                                                 env(_env),
                                                 identity(_identity),
                                                 bucket_info(_bucket_info),
                                                 perm_mask(_perm_mask),
-                                                defer_to_bucket_acls(_defer_to_bucket_acls) {}
+                                                defer_to_bucket_acls(_defer_to_bucket_acls),
+                                                bucket_access_conf(_bucket_acess_conf)
+  {}
+
   virtual ~perm_state_base() {}
 
   virtual const char *get_referer() const = 0;