Backed out changeset 8bd3857a75ee
[prosody.git] / prosodyctl
index 8b2485ad59114bf54ce17d9db24f90833dff49c5..c0cd89a0c985c454332cdb8e77e9020f8d4a6d78 100755 (executable)
@@ -122,8 +122,12 @@ local error_messages = setmetatable({
 
 hosts = prosody.hosts;
 
+local function make_host(hostname)
+       return { events = prosody.events, users = require "core.usermanager".new_default_provider(hostname) };
+end
+
 for hostname, config in pairs(config.getconfig()) do
-       hosts[hostname] = { events = prosody.events };
+       hosts[hostname] = make_host(hostname);
 end
        
 require "core.modulemanager"
@@ -235,14 +239,21 @@ function commands.adduser(arg)
                return 1;
        end
        
-       if prosodyctl.user_exists{ user = user, host = host } then
-               show_message [[That user already exists]];
-               return 1;
-       end
-       
        if not hosts[host] then
                show_warning("The host '%s' is not listed in the configuration file (or is not enabled).", host)
                show_warning("The user will not be able to log in until this is changed.");
+               hosts[host] = make_host(host);
+       elseif config.get(host, "core", "authentication")
+               and config.get(host, "core", "authentication") ~= "default" then
+               show_warning("The host '%s' is configured to use the '%s' authentication provider", host,
+                       config.get(host, "core", "authentication"));
+               show_warning("prosodyctl currently only supports the default provider, sorry :(");
+               return 1;
+       end
+       
+       if prosodyctl.user_exists{ user = user, host = host } then
+               show_message [[That user already exists]];
+               return 1;
        end
        
        local password = read_password();
@@ -273,6 +284,18 @@ function commands.passwd(arg)
                return 1;
        end
        
+       if not hosts[host] then
+               show_warning("The host '%s' is not listed in the configuration file (or is not enabled).", host)
+               show_warning("The user will not be able to log in until this is changed.");
+               hosts[host] = make_host(host);
+       elseif config.get(host, "core", "authentication")
+               and config.get(host, "core", "authentication") ~= "default" then
+               show_warning("The host '%s' is configured to use the '%s' authentication provider", host,
+                       config.get(host, "core", "authentication"));
+               show_warning("prosodyctl currently only supports the default provider, sorry :(");
+               return 1;
+       end
+       
        if not prosodyctl.user_exists { user = user, host = host } then
                show_message [[That user does not exist, use prosodyctl adduser to create a new user]]
                return 1;
@@ -306,6 +329,18 @@ function commands.deluser(arg)
                return 1;
        end
        
+       if not hosts[host] then
+               show_warning("The host '%s' is not listed in the configuration file (or is not enabled).", host)
+               show_warning("The user will not be able to log in until this is changed.");
+               hosts[host] = make_host(host);
+       elseif config.get(host, "core", "authentication")
+               and config.get(host, "core", "authentication") ~= "default" then
+               show_warning("The host '%s' is configured to use the '%s' authentication provider", host,
+                       config.get(host, "core", "authentication"));
+               show_warning("prosodyctl currently only supports the default provider, sorry :(");
+               return 1;
+       end
+
        if not prosodyctl.user_exists { user = user, host = host } then
                show_message [[That user does not exist on this server]]
                return 1;