Software / code / prosody
Comparison
plugins/mod_admin_shell.lua @ 13170:082c7d856e61
core, plugins: Split prosody:user role into prosody:{guest,registered,member}
This gives us more granular control over different types of user account.
Accounts registered by IBR get assigned prosody:registered by default, while
accounts provisioned by an admin (e.g. via prosodyctl shell) will receive
prosody:member by default.
| author | Matthew Wild <mwild1@gmail.com> |
|---|---|
| date | Thu, 29 Jun 2023 15:36:13 +0100 |
| parent | 13132:5bfcfd12c423 |
| child | 13287:1e2d65403867 |
comparison
equal
deleted
inserted
replaced
| 13169:7b6e7290265b | 13170:082c7d856e61 |
|---|---|
| 280 print [[user:delete(jid) - Permanently remove the specified user account]] | 280 print [[user:delete(jid) - Permanently remove the specified user account]] |
| 281 print [[user:list(hostname, pattern) - List users on the specified host, optionally filtering with a pattern]] | 281 print [[user:list(hostname, pattern) - List users on the specified host, optionally filtering with a pattern]] |
| 282 elseif section == "roles" then | 282 elseif section == "roles" then |
| 283 print [[Roles may grant access or restrict users from certain operations]] | 283 print [[Roles may grant access or restrict users from certain operations]] |
| 284 print [[Built-in roles are:]] | 284 print [[Built-in roles are:]] |
| 285 print [[ prosody:user - Normal user (default)]] | 285 print [[ prosody:guest - Guest/anonymous user]] |
| 286 print [[ prosody:admin - Host administrator]] | 286 print [[ prosody:registered - Registered user]] |
| 287 print [[ prosody:member - Provisioned user]] | |
| 288 print [[ prosody:admin - Host administrator]] | |
| 287 print [[ prosody:operator - Server administrator]] | 289 print [[ prosody:operator - Server administrator]] |
| 288 print [[]] | 290 print [[]] |
| 289 print [[Roles can be assigned using the user management commands (see 'help user').]] | 291 print [[Roles can be assigned using the user management commands (see 'help user').]] |
| 290 elseif section == "muc" then | 292 elseif section == "muc" then |
| 291 -- TODO `muc:room():foo()` commands | 293 -- TODO `muc:room():foo()` commands |
| 1580 return nil, "No such host: "..host; | 1582 return nil, "No such host: "..host; |
| 1581 elseif um.user_exists(username, host) then | 1583 elseif um.user_exists(username, host) then |
| 1582 return nil, "User exists"; | 1584 return nil, "User exists"; |
| 1583 end | 1585 end |
| 1584 | 1586 |
| 1585 if role then | 1587 if not role then |
| 1586 local ok, err = um.create_user(username, nil, host); | 1588 role = module:get_option_string("default_provisioned_role", "prosody:member"); |
| 1587 if not ok then | 1589 end |
| 1588 return nil, "Could not create user: "..err; | 1590 |
| 1589 end | 1591 local ok, err = um.create_user_with_role(username, password, host, role); |
| 1590 | 1592 if not ok then |
| 1591 local role_ok, rerr = um.set_user_role(jid, host, role); | 1593 return nil, "Could not create user: "..err; |
| 1592 if not role_ok then | 1594 end |
| 1593 return nil, "Could not set role: " .. tostring(rerr); | 1595 |
| 1594 end | 1596 return true, ("Created %s with role '%s'"):format(jid, role); |
| 1595 | |
| 1596 if password then | |
| 1597 local ok, err = um.set_password(username, password, host, nil); | |
| 1598 if not ok then | |
| 1599 return nil, "Could not set password for user: "..err; | |
| 1600 end | |
| 1601 | |
| 1602 local ok, err = um.enable_user(username, host); | |
| 1603 if not ok and err ~= "method not implemented" then | |
| 1604 return nil, "Could not enable user: "..err; | |
| 1605 end | |
| 1606 end | |
| 1607 else | |
| 1608 local ok, err = um.create_user(username, password, host); | |
| 1609 if not ok then | |
| 1610 return nil, "Could not create user: "..err; | |
| 1611 end | |
| 1612 end | |
| 1613 | |
| 1614 return true, "User created"; | |
| 1615 end | 1597 end |
| 1616 | 1598 |
| 1617 function def_env.user:disable(jid) | 1599 function def_env.user:disable(jid) |
| 1618 local username, host = jid_split(jid); | 1600 local username, host = jid_split(jid); |
| 1619 if not prosody.hosts[host] then | 1601 if not prosody.hosts[host] then |