xbot/priv_thread.hpp
2023-11-29 09:44:36 -08:00

36 lines
974 B
C++

#pragma once
#include <memory>
#include <string>
#include <unordered_map>
#include <unordered_set>
class Connection;
class CommandEvent;
class PrivThread : std::enable_shared_from_this<PrivThread>
{
Connection& connection_;
std::string config_path_;
std::unordered_map<std::string, std::unordered_set<std::string>> oper_privs;
std::unordered_map<std::string, std::unordered_set<std::string>> account_privs;
auto on_command(CommandEvent&) -> void;
auto check(
std::unordered_map<std::string, std::unordered_set<std::string>> const& privs,
std::string const& priv,
std::string const& name) -> bool;
auto load_config() -> void;
public:
PrivThread(Connection&, std::string config_path);
auto check_command(CommandEvent& event, std::string priv) -> bool;
static constexpr char const* owner_priv = "owner";
static auto start(Connection&, std::string config_path) -> std::shared_ptr<PrivThread>;
};