From 0d487f40c51463a15013255990f374fa9c41e590 Mon Sep 17 00:00:00 2001
From: Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
Date: Sat, 31 Mar 2018 16:55:30 +0200
Subject: Use Config::is_in_list() to allow for multiple admins

---
 src/xmpp/adhoc_commands_handler.cpp | 2 +-
 src/xmpp/biboumi_adhoc_commands.cpp | 2 +-
 src/xmpp/biboumi_component.cpp      | 9 +++------
 3 files changed, 5 insertions(+), 8 deletions(-)

(limited to 'src/xmpp')

diff --git a/src/xmpp/adhoc_commands_handler.cpp b/src/xmpp/adhoc_commands_handler.cpp
index 60c85ae..bc4c108 100644
--- a/src/xmpp/adhoc_commands_handler.cpp
+++ b/src/xmpp/adhoc_commands_handler.cpp
@@ -41,7 +41,7 @@ XmlNode AdhocCommandsHandler::handle_request(const std::string& executor_jid, co
       XmlSubNode condition(error, STANZA_NS":item-not-found");
     }
   else if (command_it->second.is_admin_only() &&
-           Config::get("admin", "") != jid.bare())
+           !Config::is_in_list("admin", jid.bare()))
     {
       XmlSubNode error(command_node, ADHOC_NS":error");
       error["type"] = "cancel";
diff --git a/src/xmpp/biboumi_adhoc_commands.cpp b/src/xmpp/biboumi_adhoc_commands.cpp
index 82a1cbf..53806d6 100644
--- a/src/xmpp/biboumi_adhoc_commands.cpp
+++ b/src/xmpp/biboumi_adhoc_commands.cpp
@@ -658,7 +658,7 @@ bool handle_irc_channel_configuration_form(XmppComponent& xmpp_component, const
 void DisconnectUserFromServerStep1(XmppComponent& xmpp_component, AdhocSession& session, XmlNode& command_node)
 {
   const Jid owner(session.get_owner_jid());
-  if (owner.bare() != Config::get("admin", ""))
+  if (!Config::is_in_list("admin", owner.bare()))
     { // A non-admin is not allowed to disconnect other users, only
       // him/herself, so we just skip this step
       auto next_step = session.get_next_step();
diff --git a/src/xmpp/biboumi_component.cpp b/src/xmpp/biboumi_component.cpp
index f82a923..9bcfa8a 100644
--- a/src/xmpp/biboumi_component.cpp
+++ b/src/xmpp/biboumi_component.cpp
@@ -551,24 +551,21 @@ void BiboumiComponent::handle_iq(const Stanza& stanza)
               if (to.local.empty())
                 {               // Get biboumi's adhoc commands
                   this->send_adhoc_commands_list(id, from, this->served_hostname,
-                                                 (Config::get("admin", "") ==
-                                                  from_jid.bare()),
+                                                 Config::is_in_list("admin", from_jid.bare()),
                                                  this->adhoc_commands_handler);
                   stanza_error.disable();
                 }
               else if (iid.type == Iid::Type::Server)
                 {               // Get the server's adhoc commands
                   this->send_adhoc_commands_list(id, from, to_str,
-                                                 (Config::get("admin", "") ==
-                                                  from_jid.bare()),
+                                                 Config::is_in_list("admin", from_jid.bare()),
                                                  this->irc_server_adhoc_commands_handler);
                   stanza_error.disable();
                 }
               else if (iid.type == Iid::Type::Channel && to.resource.empty())
                 {               // Get the channel's adhoc commands
                   this->send_adhoc_commands_list(id, from, to_str,
-                                                 (Config::get("admin", "") ==
-                                                  from_jid.bare()),
+                                                 Config::is_in_list("admin", from_jid.bare()),
                                                  this->irc_channel_adhoc_commands_handler);
                   stanza_error.disable();
                 }
-- 
cgit v1.2.3