20#ifndef ORES_IAM_MESSAGING_AUTHORIZATION_PROTOCOL_HPP
21#define ORES_IAM_MESSAGING_AUTHORIZATION_PROTOCOL_HPP
28#include <boost/uuid/uuid.hpp>
29#include "ores.comms/messaging/message_types.hpp"
30#include "ores.comms/messaging/message_traits.hpp"
31#include "ores.iam/domain/role.hpp"
32#include "ores.iam/domain/permission.hpp"
54 static std::expected<list_roles_request, ores::utility::serialization::error_code>
64 std::vector<domain::role> roles;
92 static std::expected<list_roles_response, ores::utility::serialization::error_code>
111 std::vector<std::byte>
serialize()
const;
116 static std::expected<list_permissions_request, ores::utility::serialization::error_code>
126 std::vector<domain::permission> permissions;
140 std::vector<std::byte>
serialize()
const;
145 static std::expected<list_permissions_response, ores::utility::serialization::error_code>
161 boost::uuids::uuid account_id;
162 boost::uuids::uuid role_id;
171 std::vector<std::byte>
serialize()
const;
176 static std::expected<assign_role_request, ores::utility::serialization::error_code>
186 bool success =
false;
187 std::string error_message;
197 std::vector<std::byte>
serialize()
const;
202 static std::expected<assign_role_response, ores::utility::serialization::error_code>
218 boost::uuids::uuid account_id;
219 boost::uuids::uuid role_id;
228 std::vector<std::byte>
serialize()
const;
233 static std::expected<revoke_role_request, ores::utility::serialization::error_code>
243 bool success =
false;
244 std::string error_message;
254 std::vector<std::byte>
serialize()
const;
259 static std::expected<revoke_role_response, ores::utility::serialization::error_code>
273 boost::uuids::uuid account_id;
281 std::vector<std::byte>
serialize()
const;
286 static std::expected<get_account_roles_request, ores::utility::serialization::error_code>
296 std::vector<domain::role> roles;
303 std::vector<std::byte>
serialize()
const;
308 static std::expected<get_account_roles_response, ores::utility::serialization::error_code>
322 boost::uuids::uuid account_id;
330 std::vector<std::byte>
serialize()
const;
335 static std::expected<get_account_permissions_request, ores::utility::serialization::error_code>
345 std::vector<std::string> permission_codes;
356 std::vector<std::byte>
serialize()
const;
361 static std::expected<get_account_permissions_response, ores::utility::serialization::error_code>
379 std::string identifier;
388 std::vector<std::byte>
serialize()
const;
393 static std::expected<get_role_request, ores::utility::serialization::error_code>
404 std::optional<domain::role> role;
405 std::string error_message;
418 std::vector<std::byte>
serialize()
const;
423 static std::expected<get_role_response, ores::utility::serialization::error_code>
440 static constexpr message_type request_message_type =
441 message_type::list_roles_request;
451 static constexpr message_type request_message_type =
452 message_type::list_permissions_request;
462 static constexpr message_type request_message_type =
463 message_type::assign_role_request;
473 static constexpr message_type request_message_type =
474 message_type::revoke_role_request;
484 static constexpr message_type request_message_type =
485 message_type::get_account_roles_request;
495 static constexpr message_type request_message_type =
496 message_type::get_account_permissions_request;
506 static constexpr message_type request_message_type =
507 message_type::get_role_request;
Contains messaging related infrastructure in the comms library.
Definition assets_protocol.hpp:122
Network messaging infrastructure for the IAM module.
Definition account_history_protocol.hpp:33
Traits template for mapping request types to their response types and message type enum values.
Definition message_traits.hpp:66
Request to list all roles in the system.
Definition authorization_protocol.hpp:43
static std::expected< list_roles_request, ores::utility::serialization::error_code > deserialize(std::span< const std::byte > data)
Deserialize request from bytes.
Definition authorization_protocol.cpp:137
std::vector< std::byte > serialize() const
Serialize request to bytes.
Definition authorization_protocol.cpp:132
Response containing all roles.
Definition authorization_protocol.hpp:63
std::vector< std::byte > serialize() const
Serialize response to bytes.
Definition authorization_protocol.cpp:146
static std::expected< list_roles_response, ores::utility::serialization::error_code > deserialize(std::span< const std::byte > data)
Deserialize response from bytes.
Definition authorization_protocol.cpp:156
Request to list all permissions in the system.
Definition authorization_protocol.hpp:105
static std::expected< list_permissions_request, ores::utility::serialization::error_code > deserialize(std::span< const std::byte > data)
Deserialize request from bytes.
Definition authorization_protocol.cpp:187
std::vector< std::byte > serialize() const
Serialize request to bytes.
Definition authorization_protocol.cpp:182
Response containing all permissions.
Definition authorization_protocol.hpp:125
std::vector< std::byte > serialize() const
Serialize response to bytes.
Definition authorization_protocol.cpp:196
static std::expected< list_permissions_response, ores::utility::serialization::error_code > deserialize(std::span< const std::byte > data)
Deserialize response from bytes.
Definition authorization_protocol.cpp:208
Request to assign a role to an account.
Definition authorization_protocol.hpp:160
std::vector< std::byte > serialize() const
Serialize request to bytes.
Definition authorization_protocol.cpp:246
static std::expected< assign_role_request, ores::utility::serialization::error_code > deserialize(std::span< const std::byte > data)
Deserialize request from bytes.
Definition authorization_protocol.cpp:254
Response indicating whether role assignment succeeded.
Definition authorization_protocol.hpp:185
static std::expected< assign_role_response, ores::utility::serialization::error_code > deserialize(std::span< const std::byte > data)
Deserialize response from bytes.
Definition authorization_protocol.cpp:281
std::vector< std::byte > serialize() const
Serialize response to bytes.
Definition authorization_protocol.cpp:273
Request to revoke a role from an account.
Definition authorization_protocol.hpp:217
static std::expected< revoke_role_request, ores::utility::serialization::error_code > deserialize(std::span< const std::byte > data)
Deserialize request from bytes.
Definition authorization_protocol.cpp:312
std::vector< std::byte > serialize() const
Serialize request to bytes.
Definition authorization_protocol.cpp:304
Response indicating whether role revocation succeeded.
Definition authorization_protocol.hpp:242
std::vector< std::byte > serialize() const
Serialize response to bytes.
Definition authorization_protocol.cpp:331
static std::expected< revoke_role_response, ores::utility::serialization::error_code > deserialize(std::span< const std::byte > data)
Deserialize response from bytes.
Definition authorization_protocol.cpp:339
Request to get all roles assigned to an account.
Definition authorization_protocol.hpp:272
std::vector< std::byte > serialize() const
Serialize request to bytes.
Definition authorization_protocol.cpp:362
static std::expected< get_account_roles_request, ores::utility::serialization::error_code > deserialize(std::span< const std::byte > data)
Deserialize request from bytes.
Definition authorization_protocol.cpp:369
Response containing roles assigned to an account.
Definition authorization_protocol.hpp:295
std::vector< std::byte > serialize() const
Serialize response to bytes.
Definition authorization_protocol.cpp:384
static std::expected< get_account_roles_response, ores::utility::serialization::error_code > deserialize(std::span< const std::byte > data)
Deserialize response from bytes.
Definition authorization_protocol.cpp:394
Request to get effective permissions for an account.
Definition authorization_protocol.hpp:321
std::vector< std::byte > serialize() const
Serialize request to bytes.
Definition authorization_protocol.cpp:420
static std::expected< get_account_permissions_request, ores::utility::serialization::error_code > deserialize(std::span< const std::byte > data)
Deserialize request from bytes.
Definition authorization_protocol.cpp:427
Response containing effective permissions for an account.
Definition authorization_protocol.hpp:344
std::vector< std::byte > serialize() const
Serialize response to bytes.
Definition authorization_protocol.cpp:442
static std::expected< get_account_permissions_response, ores::utility::serialization::error_code > deserialize(std::span< const std::byte > data)
Deserialize response from bytes.
Definition authorization_protocol.cpp:453
Request to get a specific role by ID or name.
Definition authorization_protocol.hpp:378
std::vector< std::byte > serialize() const
Serialize request to bytes.
Definition authorization_protocol.cpp:479
static std::expected< get_role_request, ores::utility::serialization::error_code > deserialize(std::span< const std::byte > data)
Deserialize request from bytes.
Definition authorization_protocol.cpp:486
Response containing the requested role.
Definition authorization_protocol.hpp:402
std::vector< std::byte > serialize() const
Serialize response to bytes.
Definition authorization_protocol.cpp:501
static std::expected< get_role_response, ores::utility::serialization::error_code > deserialize(std::span< const std::byte > data)
Deserialize response from bytes.
Definition authorization_protocol.cpp:513