comparison plugins/mod_admin_shell.lua @ 14121:7008869fcce2

Merge 13.0->trunk
author Matthew Wild <mwild1@gmail.com>
date Thu, 02 Apr 2026 20:54:46 +0100
parents 44a8c8d4146a 0e9e3efa381f
children c1469296190d
comparison
equal deleted inserted replaced
14118:221f3378e7f4 14121:7008869fcce2
19 local server = require "prosody.net.server"; 19 local server = require "prosody.net.server";
20 local schema = require "prosody.util.jsonschema"; 20 local schema = require "prosody.util.jsonschema";
21 local st = require "prosody.util.stanza"; 21 local st = require "prosody.util.stanza";
22 local parse_args = require "prosody.util.argparse".parse; 22 local parse_args = require "prosody.util.argparse".parse;
23 local dt = require "prosody.util.datetime"; 23 local dt = require "prosody.util.datetime";
24 local saslprep = require "prosody.util.encodings".stringprep.saslprep;
24 25
25 local _G = _G; 26 local _G = _G;
26 27
27 local prosody = _G.prosody; 28 local prosody = _G.prosody;
28 29
1911 1912
1912 if not role then 1913 if not role then
1913 role = module:get_option_string("default_provisioned_role", "prosody:member"); 1914 role = module:get_option_string("default_provisioned_role", "prosody:member");
1914 end 1915 end
1915 1916
1916 return promise.resolve(password or self.session.request_input("password")):next(function (password_) 1917 return promise.resolve(password or self.session.request_input("password")):next(function (raw_password)
1917 local ok, err = um.create_user_with_role(username, password_, host, role); 1918 local prepped_password = saslprep(raw_password);
1919 if not prepped_password or prepped_password == "" then
1920 return promise.reject("Unacceptable password");
1921 end
1922
1923 self.session.print(("PW: %q"):format(raw_password));
1924 self.session.print(("PW2: %q"):format(prepped_password));
1925
1926 local ok, err = um.create_user_with_role(username, prepped_password, host, role);
1918 if not ok then 1927 if not ok then
1919 return promise.reject("Could not create user: "..err); 1928 return promise.reject("Could not create user: "..err);
1920 end 1929 end
1921 return ("Created %s with role '%s'"):format(jid, role); 1930 return ("Created %s with role '%s'"):format(jid, role);
1922 end); 1931 end);
1977 return nil, "No such host: "..host; 1986 return nil, "No such host: "..host;
1978 elseif not um.user_exists(username, host) then 1987 elseif not um.user_exists(username, host) then
1979 return nil, "No such user"; 1988 return nil, "No such user";
1980 end 1989 end
1981 1990
1982 return promise.resolve(password or self.session.request_input("password")):next(function (password_) 1991 return promise.resolve(password or self.session.request_input("password")):next(function (raw_password)
1983 local ok, err = um.set_password(username, password_, host, nil); 1992 local prepped_password = saslprep(raw_password);
1993 if not prepped_password or prepped_password == "" then
1994 return promise.reject("Unacceptable password");
1995 end
1996
1997 self.session.print(("PW: %q"):format(raw_password));
1998 self.session.print(("PW2: %q"):format(prepped_password));
1999
2000 local ok, err = um.set_password(username, prepped_password, host, nil);
1984 if ok then 2001 if ok then
1985 return "User password changed"; 2002 return "User password changed";
1986 else 2003 else
1987 return promise.reject("Could not change password for user: "..err); 2004 return promise.reject("Could not change password for user: "..err);
1988 end 2005 end