if (s->auth.identity->is_anonymous()) {
return -EACCES;
}
-
+
string role_name = s->info.args.get("RoleName");
- std::unique_ptr<rgw::sal::RGWRole> role = driver->get_role(role_name,
- s->user->get_tenant());
- if (op_ret = role->get(s, y); op_ret < 0) {
- if (op_ret == -ENOENT) {
- op_ret = -ERR_NO_ROLE_FOUND;
- }
- return op_ret;
- }
-
if (int ret = check_caps(s->user->get_caps()); ret == 0) {
- _role = std::move(role);
return ret;
}
- string resource_name = role->get_path() + role_name;
+ string resource_name = _role->get_path() + role_name;
uint64_t op = get_op();
if (!verify_user_permission(this,
s,
return -EACCES;
}
- _role = std::move(role);
+ return 0;
+}
+int RGWRestRole::init_processing(optional_yield y)
+{
+ string role_name = s->info.args.get("RoleName");
+ std::unique_ptr<rgw::sal::RGWRole> role = driver->get_role(role_name,
+ s->user->get_tenant());
+ if (int ret = role->get(s, y); ret < 0) {
+ if (ret == -ENOENT) {
+ return -ERR_NO_ROLE_FOUND;
+ }
+ return ret;
+ }
+ _role = std::move(role);
return 0;
}
return 0;
}
+int RGWCreateRole::init_processing(optional_yield y)
+{
+ return 0; // avoid calling RGWRestRole::init_processing()
+}
+
int RGWCreateRole::get_params()
{
role_name = s->info.args.get("RoleName");
return 0;
}
+int RGWGetRole::init_processing(optional_yield y)
+{
+ return 0; // avoid calling RGWRestRole::init_processing()
+}
+
int RGWGetRole::get_params()
{
role_name = s->info.args.get("RoleName");
return 0;
}
+int RGWListRoles::init_processing(optional_yield y)
+{
+ return 0; // avoid calling RGWRestRole::init_processing()
+}
+
int RGWListRoles::get_params()
{
path_prefix = s->info.args.get("PathPrefix");
std::vector<std::string> tagKeys;
std::unique_ptr<rgw::sal::RGWRole> _role;
int verify_permission(optional_yield y) override;
+ int init_processing(optional_yield y) override;
void send_response() override;
virtual uint64_t get_op() = 0;
int parse_tags();
public:
RGWCreateRole(const bufferlist& bl_post_body) : bl_post_body(bl_post_body) {};
int verify_permission(optional_yield y) override;
+ int init_processing(optional_yield y) override;
void execute(optional_yield y) override;
int get_params();
const char* name() const override { return "create_role"; }
public:
RGWGetRole() = default;
int verify_permission(optional_yield y) override;
+ int init_processing(optional_yield y) override;
void execute(optional_yield y) override;
int get_params();
const char* name() const override { return "get_role"; }
public:
RGWListRoles() = default;
int verify_permission(optional_yield y) override;
+ int init_processing(optional_yield y) override;
void execute(optional_yield y) override;
int get_params();
const char* name() const override { return "list_roles"; }