int RGWGetRequestPayment::verify_permission()
{
+ if (s->iam_policy &&
+ s->iam_policy->eval(s->env, *s->auth.identity,
+ rgw::IAM::s3GetBucketRequestPayment,
+ ARN(s->bucket)) != Effect::Allow) {
+ return -EACCES;
+ }
return 0;
}
int RGWSetRequestPayment::verify_permission()
{
- if (false == s->auth.identity->is_owner_of(s->bucket_owner.get_id())) {
- return -EACCES;
+ if (s->iam_policy) {
+ if (s->iam_policy->eval(s->env, *s->auth.identity,
+ rgw::IAM::s3PutBucketRequestPayment,
+ ARN(s->bucket)) == Effect::Allow) {
+ return 0;
+ }
+ } else if (s->auth.identity->is_owner_of(s->bucket_owner.get_id())) {
+ return 0;
}
-
- return 0;
+ return -EACCES;
}
void RGWSetRequestPayment::pre_exec()