From 6ff135c812925423cd0bf81254ea04cf18851823 Mon Sep 17 00:00:00 2001
From: Matthew Wild <mwild1@gmail.com>
Date: Tue, 7 Jan 2025 19:25:12 +0000
Subject: mod_admin_shell: user:password(): Support prompting for password if
 none given

---
 plugins/mod_admin_shell.lua | 15 +++++++++------
 1 file changed, 9 insertions(+), 6 deletions(-)

(limited to 'plugins/mod_admin_shell.lua')

diff --git a/plugins/mod_admin_shell.lua b/plugins/mod_admin_shell.lua
index 5c5b0b48..4f8e6094 100644
--- a/plugins/mod_admin_shell.lua
+++ b/plugins/mod_admin_shell.lua
@@ -1790,12 +1790,15 @@ function def_env.user:password(jid, password)
 	elseif not um.user_exists(username, host) then
 		return nil, "No such user";
 	end
-	local ok, err = um.set_password(username, password, host, nil);
-	if ok then
-		return true, "User password changed";
-	else
-		return nil, "Could not change password for user: "..err;
-	end
+
+	return promise.resolve(password or self.session.request_input("password")):next(function (password_)
+		local ok, err = um.set_password(username, password_, host, nil);
+		if ok then
+			return "User password changed";
+		else
+			return promise.reject("Could not change password for user: "..err);
+		end
+	end);
 end
 
 describe_command [[user:roles(jid, host) - Show current roles for an user]]
-- 
cgit v1.2.3