]> git.proxmox.com Git - ceph.git/blob - ceph/src/rgw/rgw_rest_role.h
import 15.2.0 Octopus source
[ceph.git] / ceph / src / rgw / rgw_rest_role.h
1 // -*- mode:C++; tab-width:8; c-basic-offset:2; indent-tabs-mode:t -*-
2 // vim: ts=8 sw=2 smarttab ft=cpp
3
4 #pragma once
5
6 #include "rgw_role.h"
7
8 class RGWRestRole : public RGWRESTOp {
9 protected:
10 string role_name;
11 string role_path;
12 string trust_policy;
13 string policy_name;
14 string perm_policy;
15 string path_prefix;
16 string max_session_duration;
17 RGWRole _role;
18 public:
19 int verify_permission() override;
20 void send_response() override;
21 virtual uint64_t get_op() = 0;
22 };
23
24 class RGWRoleRead : public RGWRestRole {
25 public:
26 RGWRoleRead() = default;
27 int check_caps(const RGWUserCaps& caps) override;
28 };
29
30 class RGWRoleWrite : public RGWRestRole {
31 public:
32 RGWRoleWrite() = default;
33 int check_caps(const RGWUserCaps& caps) override;
34 };
35
36 class RGWCreateRole : public RGWRoleWrite {
37 public:
38 RGWCreateRole() = default;
39 int verify_permission() override;
40 void execute() override;
41 int get_params();
42 const char* name() const override { return "create_role"; }
43 RGWOpType get_type() override { return RGW_OP_CREATE_ROLE; }
44 uint64_t get_op() { return rgw::IAM::iamCreateRole; }
45 };
46
47 class RGWDeleteRole : public RGWRoleWrite {
48 public:
49 RGWDeleteRole() = default;
50 void execute() override;
51 int get_params();
52 const char* name() const override { return "delete_role"; }
53 RGWOpType get_type() override { return RGW_OP_DELETE_ROLE; }
54 uint64_t get_op() { return rgw::IAM::iamDeleteRole; }
55 };
56
57 class RGWGetRole : public RGWRoleRead {
58 int _verify_permission(const RGWRole& role);
59 public:
60 RGWGetRole() = default;
61 int verify_permission() override;
62 void execute() override;
63 int get_params();
64 const char* name() const override { return "get_role"; }
65 RGWOpType get_type() override { return RGW_OP_GET_ROLE; }
66 uint64_t get_op() { return rgw::IAM::iamGetRole; }
67 };
68
69 class RGWModifyRole : public RGWRoleWrite {
70 public:
71 RGWModifyRole() = default;
72 void execute() override;
73 int get_params();
74 const char* name() const override { return "modify_role"; }
75 RGWOpType get_type() override { return RGW_OP_MODIFY_ROLE; }
76 uint64_t get_op() { return rgw::IAM::iamModifyRole; }
77 };
78
79 class RGWListRoles : public RGWRoleRead {
80 public:
81 RGWListRoles() = default;
82 int verify_permission() override;
83 void execute() override;
84 int get_params();
85 const char* name() const override { return "list_roles"; }
86 RGWOpType get_type() override { return RGW_OP_LIST_ROLES; }
87 uint64_t get_op() { return rgw::IAM::iamListRoles; }
88 };
89
90 class RGWPutRolePolicy : public RGWRoleWrite {
91 public:
92 RGWPutRolePolicy() = default;
93 void execute() override;
94 int get_params();
95 const char* name() const override { return "put_role_policy"; }
96 RGWOpType get_type() override { return RGW_OP_PUT_ROLE_POLICY; }
97 uint64_t get_op() { return rgw::IAM::iamPutRolePolicy; }
98 };
99
100 class RGWGetRolePolicy : public RGWRoleRead {
101 public:
102 RGWGetRolePolicy() = default;
103 void execute() override;
104 int get_params();
105 const char* name() const override { return "get_role_policy"; }
106 RGWOpType get_type() override { return RGW_OP_GET_ROLE_POLICY; }
107 uint64_t get_op() { return rgw::IAM::iamGetRolePolicy; }
108 };
109
110 class RGWListRolePolicies : public RGWRoleRead {
111 public:
112 RGWListRolePolicies() = default;
113 void execute() override;
114 int get_params();
115 const char* name() const override { return "list_role_policies"; }
116 RGWOpType get_type() override { return RGW_OP_LIST_ROLE_POLICIES; }
117 uint64_t get_op() { return rgw::IAM::iamListRolePolicies; }
118 };
119
120 class RGWDeleteRolePolicy : public RGWRoleWrite {
121 public:
122 RGWDeleteRolePolicy() = default;
123 void execute() override;
124 int get_params();
125 const char* name() const override { return "delete_role_policy"; }
126 RGWOpType get_type() override { return RGW_OP_DELETE_ROLE_POLICY; }
127 uint64_t get_op() { return rgw::IAM::iamDeleteRolePolicy; }
128 };