diff --git a/src/userregistry.cpp b/src/userregistry.cpp index 81f6806ce1867feb5722186a9a92a4e014242e1e..1b79c014f66c63b52d529c6738011e92885533e2 100644 --- a/src/userregistry.cpp +++ b/src/userregistry.cpp @@ -38,16 +38,19 @@ UserRegistry::UserRegistry(Config *cfg, Swift::NetworkFactories *factories) { UserRegistry::~UserRegistry() { m_removeTimer->stop(); } void UserRegistry::isValidUserPassword(const Swift::JID& user, Swift::ServerFromClientSession *session, const Swift::SafeByteArray& password) { - if (!CONFIG_STRING(config, "service.admin_jid").empty() && user.toBare().toString() == CONFIG_STRING(config, "service.admin_jid")) { - if (Swift::safeByteArrayToString(password) == CONFIG_STRING(config, "service.admin_password")) { + + if (!CONFIG_STRING(config, "service.admin_jid").empty() ) { + std::list const &x = CONFIG_LIST(config,"service.admin_jid"); + if (std::find(x.begin(), x.end(), user.toBare().toString()) != x.end()) { + if (Swift::safeByteArrayToString(password) == CONFIG_STRING(config, "service.admin_password")) { session->handlePasswordValid(); - } - else { + } + else { session->handlePasswordInvalid(); - } - return; + } + return; + } } - std::string key = user.toBare().toString(); // Users try to connect twice