ORE Studio 0.0.4
Loading...
Searching...
No Matches
signup_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_IAM_MESSAGING_SIGNUP_PROTOCOL_HPP
21#define ORES_IAM_MESSAGING_SIGNUP_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
30namespace ores::iam::messaging {
31
46struct signup_request final {
47 std::string username;
48 std::string email;
49 std::string password;
50
62 std::vector<std::byte> serialize() const;
63
67 static std::expected<signup_request, ores::utility::serialization::error_code>
68 deserialize(std::span<const std::byte> data);
69};
70
71std::ostream& operator<<(std::ostream& s, const signup_request& v);
72
79struct signup_response final {
80 bool success = false;
81 std::string error_message;
82 boost::uuids::uuid account_id;
83 std::string username;
84
96 std::vector<std::byte> serialize() const;
97
101 static std::expected<signup_response, ores::utility::serialization::error_code>
102 deserialize(std::span<const std::byte> data);
103};
104
105std::ostream& operator<<(std::ostream& s, const signup_response& v);
106
107}
108
109#endif
Network messaging infrastructure for the IAM module.
Definition account_history_protocol.hpp:33
Request to create a new user account via self-registration.
Definition signup_protocol.hpp:46
std::vector< std::byte > serialize() const
Serialize request to bytes.
Definition signup_protocol.cpp:35
static std::expected< signup_request, ores::utility::serialization::error_code > deserialize(std::span< const std::byte > data)
Deserialize request from bytes.
Definition signup_protocol.cpp:44
Response containing signup result.
Definition signup_protocol.hpp:79
std::vector< std::byte > serialize() const
Serialize response to bytes.
Definition signup_protocol.cpp:68
static std::expected< signup_response, ores::utility::serialization::error_code > deserialize(std::span< const std::byte > data)
Deserialize response from bytes.
Definition signup_protocol.cpp:78