9#include <absl/container/flat_hash_map.h>
10#include <spdlog/spdlog.h>
12#include <secp256k1_recovery.h>
13#include <jwt-cpp/jwt.h>
23 enum class Kind : std::uint8_t
60 asio::awaitable<std::expected<chain::Address, AuthError>>
verifyAccessToken(std::string token)
const;
67 asio::strand<asio::io_context::executor_type> _strand;
69 const std::string _SECRET;
71 static std::random_device _rng;
73 std::uniform_int_distribution<int> _dist;
74 absl::flat_hash_map<chain::Address, std::string> _nonces;
76 absl::flat_hash_map<chain::Address, std::string> _access_tokens;
81struct std::formatter<
dcn::auth::AuthError::Kind> : std::formatter<std::string> {
91 default:
return formatter<string>::format(
"Unknown", ctx);
93 return formatter<string>::format(
"", ctx);
AuthManager(const AuthManager &)=delete
asio::awaitable< std::string > generateAccessToken(const chain::Address &address)
Definition auth.cpp:87
asio::awaitable< std::expected< chain::Address, AuthError > > verifyAccessToken(std::string token) const
Definition auth.cpp:104
asio::awaitable< std::string > generateNonce(const chain::Address &address)
Definition auth.cpp:16
asio::awaitable< void > invalidateAccessToken(const chain::Address &address)
Definition auth.cpp:201
asio::awaitable< bool > verifySignature(const chain::Address &address, const std::string &signature, const std::string &message)
Definition auth.cpp:45
AuthManager & operator=(const AuthManager &)=delete
asio::awaitable< bool > verifyNonce(const chain::Address &address, const std::string &nonce)
Definition auth.cpp:26
asio::awaitable< bool > compareAccessToken(const chain::Address &address, std::string token) const
Definition auth.cpp:184
evmc::address Address
Definition address.hpp:18
Definition decentralised_art.hpp:33
std::string message
Definition auth.hpp:38
Kind
Definition auth.hpp:24
enum dcn::auth::AuthError::Kind kind