Software /
code /
prosody
Comparison
plugins/mod_admin_shell.lua @ 12672:c8f59ce7d3cf
mod_admin_shell: Ensure account has role before it is usable
By creating the account first without a password it can't be used until
the role has set. This is most important for restricted accounts, as a
failure to set the role would lead to the account having more privileges
than indented.
author | Kim Alvefur <zash@zash.se> |
---|---|
date | Thu, 18 Aug 2022 19:00:01 +0200 |
parent | 12670:4a00c8811ea8 |
child | 12675:db8c795ca81a |
comparison
equal
deleted
inserted
replaced
12671:32881d0c359f | 12672:c8f59ce7d3cf |
---|---|
1388 if not prosody.hosts[host] then | 1388 if not prosody.hosts[host] then |
1389 return nil, "No such host: "..host; | 1389 return nil, "No such host: "..host; |
1390 elseif um.user_exists(username, host) then | 1390 elseif um.user_exists(username, host) then |
1391 return nil, "User exists"; | 1391 return nil, "User exists"; |
1392 end | 1392 end |
1393 local ok, err = um.create_user(username, password, host); | 1393 local ok, err = um.create_user(username, nil, host); |
1394 if ok then | 1394 if not ok then |
1395 if ok and role then | |
1396 local role_ok, rerr = um.set_user_role(jid, host, role); | |
1397 if not role_ok then return nil, "User created, but could not set role: " .. tostring(rerr); end | |
1398 end | |
1399 return true, "User created"; | |
1400 else | |
1401 return nil, "Could not create user: "..err; | 1395 return nil, "Could not create user: "..err; |
1402 end | 1396 end |
1397 | |
1398 if role then | |
1399 local role_ok, rerr = um.set_user_role(jid, host, role); | |
1400 if not role_ok then | |
1401 return nil, "Could not set role: " .. tostring(rerr); | |
1402 end | |
1403 end | |
1404 | |
1405 local ok, err = um.set_password(username, password, host, nil); | |
1406 if not ok then | |
1407 return nil, "Could not set password for user: "..err; | |
1408 end | |
1409 | |
1410 return true, "User created"; | |
1403 end | 1411 end |
1404 | 1412 |
1405 function def_env.user:delete(jid) | 1413 function def_env.user:delete(jid) |
1406 local username, host = jid_split(jid); | 1414 local username, host = jid_split(jid); |
1407 if not prosody.hosts[host] then | 1415 if not prosody.hosts[host] then |