resource.append(o);
}
-ARN::ARN(const string& resource_name, const string& type, const string& tenant)
+ARN::ARN(const string& resource_name, const string& type, const string& tenant, bool has_path)
: partition(Partition::aws),
service(Service::iam),
region(),
account(tenant),
resource(type) {
- resource.push_back('/');
+ if (! has_path)
+ resource.push_back('/');
resource.append(resource_name);
}
ARN(const rgw_obj& o);
ARN(const rgw_bucket& b);
ARN(const rgw_bucket& b, const std::string& o);
- ARN(const string& resource_name, const string& type, const string& tenant);
+ ARN(const string& resource_name, const string& type, const string& tenant, bool has_path=false);
static boost::optional<ARN> parse(const std::string& s,
bool wildcard = false);
if (!verify_user_permission(s,
rgw::IAM::ARN(resource_name,
"role",
- s->user->user_id.tenant),
+ s->user->user_id.tenant, true),
op)) {
return -EACCES;
}
if (!verify_user_permission(s,
rgw::IAM::ARN(resource_name,
"role",
- s->user->user_id.tenant),
+ s->user->user_id.tenant, true),
get_op())) {
return -EACCES;
}
if (!verify_user_permission(s,
rgw::IAM::ARN(resource_name,
"role",
- s->user->user_id.tenant),
+ s->user->user_id.tenant, true),
get_op())) {
return -EACCES;
}