Clio  develop
The XRP Ledger API server.
Loading...
Searching...
No Matches
AdminVerificationStrategy.hpp
1#pragma once
2
3#include "util/config/ConfigDefinition.hpp"
4
5#include <boost/beast/http.hpp>
6#include <boost/beast/http/message.hpp>
7#include <boost/beast/http/string_body.hpp>
8
9#include <expected>
10#include <memory>
11#include <optional>
12#include <string>
13#include <string_view>
14
15namespace web {
16
21public:
22 using RequestHeader = boost::beast::http::request<boost::beast::http::string_body>::header_type;
23 virtual ~AdminVerificationStrategy() = default;
24
32 virtual bool
33 isAdmin(RequestHeader const& request, std::string_view ip) const = 0;
34};
35
40public:
48 bool
49 isAdmin(RequestHeader const&, std::string_view ip) const override;
50};
51
56private:
57 std::string passwordSha256_;
58
59public:
63 static constexpr std::string_view kPASSWORD_PREFIX = "Password ";
64
70 PasswordAdminVerificationStrategy(std::string const& password);
71
79 bool
80 isAdmin(RequestHeader const& request, std::string_view) const override;
81};
82
90std::shared_ptr<AdminVerificationStrategy>
91makeAdminVerificationStrategy(std::optional<std::string> password);
92
99std::expected<std::shared_ptr<AdminVerificationStrategy>, std::string>
101
102} // namespace web
All the config data will be stored and extracted from this class.
Definition ConfigDefinition.hpp:31
Interface for admin verification strategies.
Definition AdminVerificationStrategy.hpp:20
virtual bool isAdmin(RequestHeader const &request, std::string_view ip) const =0
Checks whether request is from a host that is considered authorized as admin.
Admin verification strategy that checks the ip address of the client.
Definition AdminVerificationStrategy.hpp:39
bool isAdmin(RequestHeader const &, std::string_view ip) const override
Checks whether request is from a host that is considered authorized as admin by checking the ip addre...
Definition AdminVerificationStrategy.cpp:19
bool isAdmin(RequestHeader const &request, std::string_view) const override
Checks whether request is from a host that is considered authorized as admin using the password (if a...
Definition AdminVerificationStrategy.cpp:30
PasswordAdminVerificationStrategy(std::string const &password)
Construct a new PasswordAdminVerificationStrategy object.
Definition AdminVerificationStrategy.cpp:24
static constexpr std::string_view kPASSWORD_PREFIX
The prefix for the password in the request header.
Definition AdminVerificationStrategy.hpp:63
This namespace implements the web server and related components.
Definition Types.hpp:24
std::shared_ptr< AdminVerificationStrategy > makeAdminVerificationStrategy(std::optional< std::string > password)
Factory function for creating an admin verification strategy.
Definition AdminVerificationStrategy.cpp:48