Software /
code /
prosody
Comparison
plugins/mod_admin_shell.lua @ 12014:efbf288b529e
mod_admin_shell: Support setting roles on hosts other than the users'
Needed to e.g. grant admin rights on a component, or grant non-local
users local privileges.
Leave the same host syntax for convenience, since this might be the
common case.
author | Kim Alvefur <zash@zash.se> |
---|---|
date | Mon, 06 Dec 2021 21:56:19 +0100 |
parent | 12013:ae45f052b34b |
child | 12018:c65789f5004e |
comparison
equal
deleted
inserted
replaced
12013:ae45f052b34b | 12014:efbf288b529e |
---|---|
248 print [[host:deactivate(hostname) - Disconnects all clients on this host and deactivates]] | 248 print [[host:deactivate(hostname) - Disconnects all clients on this host and deactivates]] |
249 print [[host:list() - List the currently-activated hosts]] | 249 print [[host:list() - List the currently-activated hosts]] |
250 elseif section == "user" then | 250 elseif section == "user" then |
251 print [[user:create(jid, password, roles) - Create the specified user account]] | 251 print [[user:create(jid, password, roles) - Create the specified user account]] |
252 print [[user:password(jid, password) - Set the password for the specified user account]] | 252 print [[user:password(jid, password) - Set the password for the specified user account]] |
253 print [[user:roles(jid, roles) - Set roles for an user]] | 253 print [[user:roles(jid, host, roles) - Set roles for an user (see 'help roles')]] |
254 print [[user:delete(jid) - Permanently remove the specified user account]] | 254 print [[user:delete(jid) - Permanently remove the specified user account]] |
255 print [[user:list(hostname, pattern) - List users on the specified host, optionally filtering with a pattern]] | 255 print [[user:list(hostname, pattern) - List users on the specified host, optionally filtering with a pattern]] |
256 elseif section == "muc" then | 256 elseif section == "muc" then |
257 -- TODO `muc:room():foo()` commands | 257 -- TODO `muc:room():foo()` commands |
258 print [[muc:create(roomjid, { config }) - Create the specified MUC room with the given config]] | 258 print [[muc:create(roomjid, { config }) - Create the specified MUC room with the given config]] |
1326 else | 1326 else |
1327 return nil, "Could not change password for user: "..err; | 1327 return nil, "Could not change password for user: "..err; |
1328 end | 1328 end |
1329 end | 1329 end |
1330 | 1330 |
1331 -- user:roles("someone@example.com", "example.com", {"prosody:admin"}) | |
1331 -- user:roles("someone@example.com", {"prosody:admin"}) | 1332 -- user:roles("someone@example.com", {"prosody:admin"}) |
1332 function def_env.user:roles(jid, new_roles) | 1333 function def_env.user:roles(jid, host, new_roles) |
1333 local username, host = jid_split(jid); | 1334 local username, userhost = jid_split(jid); |
1335 if new_roles == nil then host, new_roles = userhost, host; end | |
1334 if not prosody.hosts[host] then | 1336 if not prosody.hosts[host] then |
1335 return nil, "No such host: "..host; | 1337 return nil, "No such host: "..host; |
1336 elseif not um.user_exists(username, host) then | 1338 elseif not prosody.hosts[userhost] then |
1339 return nil, "No such host: "..userhost; | |
1340 elseif not um.user_exists(username, userhost) then | |
1337 return nil, "No such user"; | 1341 return nil, "No such user"; |
1338 end | 1342 end |
1339 return um.set_roles(jid, host, coerce_roles(new_roles)); | 1343 return um.set_roles(jid, host, coerce_roles(new_roles)); |
1340 end | 1344 end |
1341 | 1345 |