ORE Studio 0.0.4
Loading...
Searching...
No Matches
account_protocol.hpp
1/* -*- mode: c++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
2 *
3 * Copyright (C) 2025 Marco Craveiro <marco.craveiro@gmail.com>
4 *
5 * This program is free software; you can redistribute it and/or modify it under
6 * the terms of the GNU General Public License as published by the Free Software
7 * Foundation; either version 3 of the License, or (at your option) any later
8 * version.
9 *
10 * This program is distributed in the hope that it will be useful, but WITHOUT
11 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
12 * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
13 * details.
14 *
15 * You should have received a copy of the GNU General Public License along with
16 * this program; if not, write to the Free Software Foundation, Inc., 51
17 * Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
18 *
19 */
20#ifndef ORES_ACCOUNTS_MESSAGING_ACCOUNT_PROTOCOL_HPP
21#define ORES_ACCOUNTS_MESSAGING_ACCOUNT_PROTOCOL_HPP
22
23#include <span>
24#include <iosfwd>
25#include <vector>
26#include <expected>
27#include <boost/uuid/uuid.hpp>
28#include "ores.comms/messaging/message_types.hpp"
29#include "ores.accounts/domain/account.hpp"
30
31namespace ores::accounts::messaging {
32
37 std::string username;
38 std::string password;
39 std::string totp_secret;
40 std::string email;
41 std::string recorded_by;
42 bool is_admin = false;
43
60 std::vector<std::byte> serialize() const;
61
65 static std::expected<create_account_request, comms::messaging::error_code>
66 deserialize(std::span<const std::byte> data);
67};
68
69std::ostream& operator<<(std::ostream& s, const create_account_request& v);
70
75 boost::uuids::uuid account_id;
76
83 std::vector<std::byte> serialize() const;
84
88 static std::expected<create_account_response, comms::messaging::error_code>
89 deserialize(std::span<const std::byte> data);
90};
91
92std::ostream& operator<<(std::ostream& s, const create_account_response& v);
93
101 std::uint32_t offset = 0;
103 std::uint32_t limit = 100;
104
112 std::vector<std::byte> serialize() const;
113
117 static std::expected<list_accounts_request, comms::messaging::error_code>
118 deserialize(std::span<const std::byte> data);
119};
120
121std::ostream& operator<<(std::ostream& s, const list_accounts_request& v);
122
127 std::vector<domain::account> accounts;
129 std::uint32_t total_available_count = 0;
130
154 std::vector<std::byte> serialize() const;
155
159 static std::expected<list_accounts_response, comms::messaging::error_code>
160 deserialize(std::span<const std::byte> data);
161};
162
163std::ostream& operator<<(std::ostream& s, const list_accounts_response& v);
164
173 std::vector<boost::uuids::uuid> account_ids;
174
183 std::vector<std::byte> serialize() const;
184
188 static std::expected<unlock_account_request, comms::messaging::error_code>
189 deserialize(std::span<const std::byte> data);
190};
191
192std::ostream& operator<<(std::ostream& s, const unlock_account_request& v);
193
198 boost::uuids::uuid account_id;
199 bool success = false;
200 std::string message;
201};
202
203std::ostream& operator<<(std::ostream& s, const unlock_account_result& v);
204
212 std::vector<unlock_account_result> results;
213
225 std::vector<std::byte> serialize() const;
226
230 static std::expected<unlock_account_response, comms::messaging::error_code>
231 deserialize(std::span<const std::byte> data);
232};
233
234std::ostream& operator<<(std::ostream& s, const unlock_account_response& v);
235
240 boost::uuids::uuid account_id;
241
248 std::vector<std::byte> serialize() const;
249
253 static std::expected<delete_account_request, comms::messaging::error_code>
254 deserialize(std::span<const std::byte> data);
255};
256
257std::ostream& operator<<(std::ostream& s, const delete_account_request& v);
258
263 bool success = false;
264 std::string message;
265
274 std::vector<std::byte> serialize() const;
275
279 static std::expected<delete_account_response, comms::messaging::error_code>
280 deserialize(std::span<const std::byte> data);
281};
282
283std::ostream& operator<<(std::ostream& s, const delete_account_response& v);
284
293 std::vector<boost::uuids::uuid> account_ids;
294
303 std::vector<std::byte> serialize() const;
304
308 static std::expected<lock_account_request, comms::messaging::error_code>
309 deserialize(std::span<const std::byte> data);
310};
311
312std::ostream& operator<<(std::ostream& s, const lock_account_request& v);
313
318 boost::uuids::uuid account_id;
319 bool success = false;
320 std::string message;
321};
322
323std::ostream& operator<<(std::ostream& s, const lock_account_result& v);
324
332 std::vector<lock_account_result> results;
333
345 std::vector<std::byte> serialize() const;
346
350 static std::expected<lock_account_response, comms::messaging::error_code>
351 deserialize(std::span<const std::byte> data);
352};
353
354std::ostream& operator<<(std::ostream& s, const lock_account_response& v);
355
363 boost::uuids::uuid account_id;
364 std::string email;
365 std::string recorded_by;
366 bool is_admin = false;
367
379 std::vector<std::byte> serialize() const;
380
384 static std::expected<update_account_request, comms::messaging::error_code>
385 deserialize(std::span<const std::byte> data);
386};
387
388std::ostream& operator<<(std::ostream& s, const update_account_request& v);
389
394 bool success = false;
395 std::string error_message;
396
405 std::vector<std::byte> serialize() const;
406
410 static std::expected<update_account_response, comms::messaging::error_code>
411 deserialize(std::span<const std::byte> data);
412};
413
414std::ostream& operator<<(std::ostream& s, const update_account_response& v);
415
424 std::vector<boost::uuids::uuid> account_ids;
425
434 std::vector<std::byte> serialize() const;
435
439 static std::expected<reset_password_request, comms::messaging::error_code>
440 deserialize(std::span<const std::byte> data);
441};
442
443std::ostream& operator<<(std::ostream& s, const reset_password_request& v);
444
449 boost::uuids::uuid account_id;
450 bool success = false;
451 std::string message;
452};
453
454std::ostream& operator<<(std::ostream& s, const reset_password_result& v);
455
463 std::vector<reset_password_result> results;
464
476 std::vector<std::byte> serialize() const;
477
481 static std::expected<reset_password_response, comms::messaging::error_code>
482 deserialize(std::span<const std::byte> data);
483};
484
485std::ostream& operator<<(std::ostream& s, const reset_password_response& v);
486
494 std::string new_password;
495
503 std::vector<std::byte> serialize() const;
504
508 static std::expected<change_password_request, comms::messaging::error_code>
509 deserialize(std::span<const std::byte> data);
510};
511
512std::ostream& operator<<(std::ostream& s, const change_password_request& v);
513
518 bool success = false;
519 std::string message;
520
529 std::vector<std::byte> serialize() const;
530
534 static std::expected<change_password_response, comms::messaging::error_code>
535 deserialize(std::span<const std::byte> data);
536};
537
538std::ostream& operator<<(std::ostream& s, const change_password_response& v);
539
547 std::string new_email;
548
556 std::vector<std::byte> serialize() const;
557
561 static std::expected<update_my_email_request, comms::messaging::error_code>
562 deserialize(std::span<const std::byte> data);
563};
564
565std::ostream& operator<<(std::ostream& s, const update_my_email_request& v);
566
571 bool success = false;
572 std::string message;
573
582 std::vector<std::byte> serialize() const;
583
587 static std::expected<update_my_email_response, comms::messaging::error_code>
588 deserialize(std::span<const std::byte> data);
589};
590
591std::ostream& operator<<(std::ostream& s, const update_my_email_response& v);
592
593}
594
595#endif
Request to create a new account.
Definition account_protocol.hpp:36
std::vector< std::byte > serialize() const
Serialize request to bytes.
Definition account_protocol.cpp:35
static std::expected< create_account_request, comms::messaging::error_code > deserialize(std::span< const std::byte > data)
Deserialize request from bytes.
Definition account_protocol.cpp:47
Response containing the created account ID.
Definition account_protocol.hpp:74
std::vector< std::byte > serialize() const
Serialize response to bytes.
Definition account_protocol.cpp:83
static std::expected< create_account_response, comms::messaging::error_code > deserialize(std::span< const std::byte > data)
Deserialize response from bytes.
Definition account_protocol.cpp:90
Request to retrieve accounts with pagination support.
Definition account_protocol.hpp:99
std::uint32_t limit
Maximum number of records to return.
Definition account_protocol.hpp:103
std::vector< std::byte > serialize() const
Serialize request to bytes.
Definition account_protocol.cpp:106
static std::expected< list_accounts_request, comms::messaging::error_code > deserialize(std::span< const std::byte > data)
Deserialize request from bytes.
Definition account_protocol.cpp:114
std::uint32_t offset
Number of records to skip (0-based)
Definition account_protocol.hpp:101
Response containing accounts with pagination metadata.
Definition account_protocol.hpp:126
std::uint32_t total_available_count
Total number of accounts available (not just in this page)
Definition account_protocol.hpp:129
std::vector< std::byte > serialize() const
Serialize response to bytes.
Definition account_protocol.cpp:134
static std::expected< list_accounts_response, comms::messaging::error_code > deserialize(std::span< const std::byte > data)
Deserialize response from bytes.
Definition account_protocol.cpp:161
Request to unlock one or more locked accounts.
Definition account_protocol.hpp:172
static std::expected< unlock_account_request, comms::messaging::error_code > deserialize(std::span< const std::byte > data)
Deserialize request from bytes.
Definition account_protocol.cpp:244
std::vector< std::byte > serialize() const
Serialize request to bytes.
Definition account_protocol.cpp:234
Result for a single account unlock operation.
Definition account_protocol.hpp:197
Response containing results for unlock operation(s).
Definition account_protocol.hpp:211
static std::expected< unlock_account_response, comms::messaging::error_code > deserialize(std::span< const std::byte > data)
Deserialize response from bytes.
Definition account_protocol.cpp:285
std::vector< std::byte > serialize() const
Serialize response to bytes.
Definition account_protocol.cpp:273
Request to delete an account.
Definition account_protocol.hpp:239
std::vector< std::byte > serialize() const
Serialize request to bytes.
Definition account_protocol.cpp:320
static std::expected< delete_account_request, comms::messaging::error_code > deserialize(std::span< const std::byte > data)
Deserialize request from bytes.
Definition account_protocol.cpp:327
Response confirming account deletion.
Definition account_protocol.hpp:262
static std::expected< delete_account_response, comms::messaging::error_code > deserialize(std::span< const std::byte > data)
Deserialize response from bytes.
Definition account_protocol.cpp:348
std::vector< std::byte > serialize() const
Serialize response to bytes.
Definition account_protocol.cpp:340
Request to lock one or more accounts.
Definition account_protocol.hpp:292
std::vector< std::byte > serialize() const
Serialize request to bytes.
Definition account_protocol.cpp:371
static std::expected< lock_account_request, comms::messaging::error_code > deserialize(std::span< const std::byte > data)
Deserialize request from bytes.
Definition account_protocol.cpp:381
Result for a single account lock operation.
Definition account_protocol.hpp:317
Response containing results for lock operation(s).
Definition account_protocol.hpp:331
std::vector< std::byte > serialize() const
Serialize response to bytes.
Definition account_protocol.cpp:410
static std::expected< lock_account_response, comms::messaging::error_code > deserialize(std::span< const std::byte > data)
Deserialize response from bytes.
Definition account_protocol.cpp:422
Request to update an existing account.
Definition account_protocol.hpp:362
static std::expected< update_account_request, comms::messaging::error_code > deserialize(std::span< const std::byte > data)
Deserialize request from bytes.
Definition account_protocol.cpp:467
std::vector< std::byte > serialize() const
Serialize request to bytes.
Definition account_protocol.cpp:457
Response indicating whether update operation succeeded.
Definition account_protocol.hpp:393
std::vector< std::byte > serialize() const
Serialize response to bytes.
Definition account_protocol.cpp:495
static std::expected< update_account_response, comms::messaging::error_code > deserialize(std::span< const std::byte > data)
Deserialize response from bytes.
Definition account_protocol.cpp:503
Request to reset password for one or more accounts.
Definition account_protocol.hpp:423
std::vector< std::byte > serialize() const
Serialize request to bytes.
Definition account_protocol.cpp:523
static std::expected< reset_password_request, comms::messaging::error_code > deserialize(std::span< const std::byte > data)
Deserialize request from bytes.
Definition account_protocol.cpp:533
Result for a single password reset operation.
Definition account_protocol.hpp:448
Response containing results for password reset operation(s).
Definition account_protocol.hpp:462
std::vector< std::byte > serialize() const
Serialize response to bytes.
Definition account_protocol.cpp:562
static std::expected< reset_password_response, comms::messaging::error_code > deserialize(std::span< const std::byte > data)
Deserialize response from bytes.
Definition account_protocol.cpp:574
Request to change the current user's password.
Definition account_protocol.hpp:493
static std::expected< change_password_request, comms::messaging::error_code > deserialize(std::span< const std::byte > data)
Deserialize request from bytes.
Definition account_protocol.cpp:616
std::vector< std::byte > serialize() const
Serialize request to bytes.
Definition account_protocol.cpp:609
Response indicating whether password change succeeded.
Definition account_protocol.hpp:517
static std::expected< change_password_response, comms::messaging::error_code > deserialize(std::span< const std::byte > data)
Deserialize response from bytes.
Definition account_protocol.cpp:641
std::vector< std::byte > serialize() const
Serialize response to bytes.
Definition account_protocol.cpp:633
Request to update the current user's email address.
Definition account_protocol.hpp:546
static std::expected< update_my_email_request, comms::messaging::error_code > deserialize(std::span< const std::byte > data)
Deserialize request from bytes.
Definition account_protocol.cpp:668
std::vector< std::byte > serialize() const
Serialize request to bytes.
Definition account_protocol.cpp:661
Response indicating whether email update succeeded.
Definition account_protocol.hpp:570
std::vector< std::byte > serialize() const
Serialize response to bytes.
Definition account_protocol.cpp:684
static std::expected< update_my_email_response, comms::messaging::error_code > deserialize(std::span< const std::byte > data)
Deserialize response from bytes.
Definition account_protocol.cpp:692