]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
rgw: support system requests over Swift API.
authorRadoslaw Zarzynski <rzarzynski@mirantis.com>
Tue, 16 Feb 2016 11:16:02 +0000 (12:16 +0100)
committerRadoslaw Zarzynski <rzarzynski@mirantis.com>
Tue, 16 Feb 2016 22:54:07 +0000 (23:54 +0100)
Signed-off-by: Radoslaw Zarzynski <rzarzynski@mirantis.com>
src/rgw/rgw_rest_swift.cc

index dda1f173a8789174f2b7f5c5385b8f4130f908b3..0df6200fc10708a49e17805ff68476c3edb92a02 100644 (file)
@@ -1298,6 +1298,25 @@ int RGWHandler_REST_SWIFT::authorize()
   if (!authorized)
     return -EPERM;
 
+  if (s->user->system) {
+    s->system_request = true;
+    ldout(s->cct, 20) << "system request over Swift API" << dendl;
+
+    rgw_user euid(s->info.args.sys_get(RGW_SYS_PARAM_PREFIX "uid"));
+    if (!euid.empty()) {
+      RGWUserInfo einfo;
+
+      const int ret = rgw_get_user_info_by_uid(store, euid, einfo);
+      if (ret < 0) {
+        ldout(s->cct, 0) << "User lookup failed, euid=" << euid
+                         << " ret=" << ret << dendl;
+        return -ENOENT;
+      }
+
+      *(s->user) = einfo;
+    }
+  }
+
   return 0;
 }