20#ifndef ORES_IAM_MESSAGING_ACCOUNT_PROTOCOL_HPP
21#define ORES_IAM_MESSAGING_ACCOUNT_PROTOCOL_HPP
27#include <boost/uuid/uuid.hpp>
28#include "ores.comms/messaging/message_types.hpp"
29#include "ores.comms/messaging/message_traits.hpp"
30#include "ores.iam/domain/account.hpp"
44 boost::uuids::uuid account_id;
47 std::string totp_secret;
49 std::string recorded_by;
50 std::string change_reason_code;
51 std::string change_commentary;
78 static std::expected<save_account_request, ores::utility::serialization::error_code>
90 boost::uuids::uuid account_id;
101 std::vector<std::byte>
serialize()
const;
106 static std::expected<save_account_response, ores::utility::serialization::error_code>
130 std::vector<std::byte>
serialize()
const;
135 static std::expected<get_accounts_request, ores::utility::serialization::error_code>
145 std::vector<domain::account> accounts;
176 std::vector<std::byte>
serialize()
const;
181 static std::expected<get_accounts_response, ores::utility::serialization::error_code>
195 std::vector<boost::uuids::uuid> account_ids;
205 std::vector<std::byte>
serialize()
const;
210 static std::expected<unlock_account_request, ores::utility::serialization::error_code>
220 boost::uuids::uuid account_id;
221 bool success =
false;
234 std::vector<unlock_account_result> results;
247 std::vector<std::byte>
serialize()
const;
252 static std::expected<unlock_account_response, ores::utility::serialization::error_code>
262 boost::uuids::uuid account_id;
270 std::vector<std::byte>
serialize()
const;
275 static std::expected<delete_account_request, ores::utility::serialization::error_code>
285 bool success =
false;
296 std::vector<std::byte>
serialize()
const;
301 static std::expected<delete_account_response, ores::utility::serialization::error_code>
315 std::vector<boost::uuids::uuid> account_ids;
325 std::vector<std::byte>
serialize()
const;
330 static std::expected<lock_account_request, ores::utility::serialization::error_code>
340 boost::uuids::uuid account_id;
341 bool success =
false;
354 std::vector<lock_account_result> results;
367 std::vector<std::byte>
serialize()
const;
372 static std::expected<lock_account_response, ores::utility::serialization::error_code>
386 std::vector<boost::uuids::uuid> account_ids;
396 std::vector<std::byte>
serialize()
const;
401 static std::expected<reset_password_request, ores::utility::serialization::error_code>
411 boost::uuids::uuid account_id;
412 bool success =
false;
425 std::vector<reset_password_result> results;
438 std::vector<std::byte>
serialize()
const;
443 static std::expected<reset_password_response, ores::utility::serialization::error_code>
456 std::string new_password;
465 std::vector<std::byte>
serialize()
const;
470 static std::expected<change_password_request, ores::utility::serialization::error_code>
480 bool success =
false;
491 std::vector<std::byte>
serialize()
const;
496 static std::expected<change_password_response, ores::utility::serialization::error_code>
509 std::string new_email;
518 std::vector<std::byte>
serialize()
const;
523 static std::expected<update_my_email_request, ores::utility::serialization::error_code>
533 bool success =
false;
544 std::vector<std::byte>
serialize()
const;
549 static std::expected<update_my_email_response, ores::utility::serialization::error_code>
566 static constexpr message_type request_message_type =
567 message_type::save_account_request;
577 static constexpr message_type request_message_type =
578 message_type::get_accounts_request;
588 static constexpr message_type request_message_type =
589 message_type::unlock_account_request;
599 static constexpr message_type request_message_type =
600 message_type::delete_account_request;
610 static constexpr message_type request_message_type =
611 message_type::lock_account_request;
621 static constexpr message_type request_message_type =
622 message_type::reset_password_request;
632 static constexpr message_type request_message_type =
633 message_type::change_password_request;
643 static constexpr message_type request_message_type =
644 message_type::update_my_email_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 save an account (create or update).
Definition account_protocol.hpp:43
std::vector< std::byte > serialize() const
Serialize request to bytes.
Definition account_protocol.cpp:58
static std::expected< save_account_request, ores::utility::serialization::error_code > deserialize(std::span< const std::byte > data)
Deserialize request from bytes.
Definition account_protocol.cpp:72
Response from saving an account.
Definition account_protocol.hpp:87
std::vector< std::byte > serialize() const
Serialize response to bytes.
Definition account_protocol.cpp:116
static std::expected< save_account_response, ores::utility::serialization::error_code > deserialize(std::span< const std::byte > data)
Deserialize response from bytes.
Definition account_protocol.cpp:125
Request to retrieve accounts with pagination support.
Definition account_protocol.hpp:117
std::uint32_t limit
Maximum number of records to return.
Definition account_protocol.hpp:121
static std::expected< get_accounts_request, ores::utility::serialization::error_code > deserialize(std::span< const std::byte > data)
Deserialize request from bytes.
Definition account_protocol.cpp:157
std::vector< std::byte > serialize() const
Serialize request to bytes.
Definition account_protocol.cpp:149
std::uint32_t offset
Number of records to skip (0-based)
Definition account_protocol.hpp:119
Response containing accounts with pagination metadata.
Definition account_protocol.hpp:144
std::uint32_t total_available_count
Total number of accounts available (not just in this page)
Definition account_protocol.hpp:147
std::vector< std::byte > serialize() const
Serialize response to bytes.
Definition account_protocol.cpp:177
static std::expected< get_accounts_response, ores::utility::serialization::error_code > deserialize(std::span< const std::byte > data)
Deserialize response from bytes.
Definition account_protocol.cpp:205
Request to unlock one or more locked accounts.
Definition account_protocol.hpp:194
std::vector< std::byte > serialize() const
Serialize request to bytes.
Definition account_protocol.cpp:282
static std::expected< unlock_account_request, ores::utility::serialization::error_code > deserialize(std::span< const std::byte > data)
Deserialize request from bytes.
Definition account_protocol.cpp:292
Result for a single account unlock operation.
Definition account_protocol.hpp:219
Response containing results for unlock operation(s).
Definition account_protocol.hpp:233
std::vector< std::byte > serialize() const
Serialize response to bytes.
Definition account_protocol.cpp:321
static std::expected< unlock_account_response, ores::utility::serialization::error_code > deserialize(std::span< const std::byte > data)
Deserialize response from bytes.
Definition account_protocol.cpp:333
Request to delete an account.
Definition account_protocol.hpp:261
std::vector< std::byte > serialize() const
Serialize request to bytes.
Definition account_protocol.cpp:368
static std::expected< delete_account_request, ores::utility::serialization::error_code > deserialize(std::span< const std::byte > data)
Deserialize request from bytes.
Definition account_protocol.cpp:375
Response confirming account deletion.
Definition account_protocol.hpp:284
static std::expected< delete_account_response, ores::utility::serialization::error_code > deserialize(std::span< const std::byte > data)
Deserialize response from bytes.
Definition account_protocol.cpp:396
std::vector< std::byte > serialize() const
Serialize response to bytes.
Definition account_protocol.cpp:388
Request to lock one or more accounts.
Definition account_protocol.hpp:314
static std::expected< lock_account_request, ores::utility::serialization::error_code > deserialize(std::span< const std::byte > data)
Deserialize request from bytes.
Definition account_protocol.cpp:429
std::vector< std::byte > serialize() const
Serialize request to bytes.
Definition account_protocol.cpp:419
Result for a single account lock operation.
Definition account_protocol.hpp:339
Response containing results for lock operation(s).
Definition account_protocol.hpp:353
std::vector< std::byte > serialize() const
Serialize response to bytes.
Definition account_protocol.cpp:458
static std::expected< lock_account_response, ores::utility::serialization::error_code > deserialize(std::span< const std::byte > data)
Deserialize response from bytes.
Definition account_protocol.cpp:470
Request to reset password for one or more accounts.
Definition account_protocol.hpp:385
std::vector< std::byte > serialize() const
Serialize request to bytes.
Definition account_protocol.cpp:505
static std::expected< reset_password_request, ores::utility::serialization::error_code > deserialize(std::span< const std::byte > data)
Deserialize request from bytes.
Definition account_protocol.cpp:515
Result for a single password reset operation.
Definition account_protocol.hpp:410
Response containing results for password reset operation(s).
Definition account_protocol.hpp:424
static std::expected< reset_password_response, ores::utility::serialization::error_code > deserialize(std::span< const std::byte > data)
Deserialize response from bytes.
Definition account_protocol.cpp:556
std::vector< std::byte > serialize() const
Serialize response to bytes.
Definition account_protocol.cpp:544
Request to change the current user's password.
Definition account_protocol.hpp:455
std::vector< std::byte > serialize() const
Serialize request to bytes.
Definition account_protocol.cpp:591
static std::expected< change_password_request, ores::utility::serialization::error_code > deserialize(std::span< const std::byte > data)
Deserialize request from bytes.
Definition account_protocol.cpp:598
Response indicating whether password change succeeded.
Definition account_protocol.hpp:479
std::vector< std::byte > serialize() const
Serialize response to bytes.
Definition account_protocol.cpp:615
static std::expected< change_password_response, ores::utility::serialization::error_code > deserialize(std::span< const std::byte > data)
Deserialize response from bytes.
Definition account_protocol.cpp:623
Request to update the current user's email address.
Definition account_protocol.hpp:508
static std::expected< update_my_email_request, ores::utility::serialization::error_code > deserialize(std::span< const std::byte > data)
Deserialize request from bytes.
Definition account_protocol.cpp:650
std::vector< std::byte > serialize() const
Serialize request to bytes.
Definition account_protocol.cpp:643
Response indicating whether email update succeeded.
Definition account_protocol.hpp:532
std::vector< std::byte > serialize() const
Serialize response to bytes.
Definition account_protocol.cpp:666
static std::expected< update_my_email_response, ores::utility::serialization::error_code > deserialize(std::span< const std::byte > data)
Deserialize response from bytes.
Definition account_protocol.cpp:674