Mercurial > prosody-modules
diff mod_http_admin_api/mod_http_admin_api.lua @ 5783:6c8cf3ecb885
mod_http_admin_api: Support for setting user account enabled status
author | Matthew Wild <mwild1@gmail.com> |
---|---|
date | Thu, 07 Dec 2023 15:41:18 +0000 |
parents | 5621dece3ee4 |
children | 5c589fab6f53 |
line wrap: on
line diff
--- a/mod_http_admin_api/mod_http_admin_api.lua Thu Dec 07 15:30:41 2023 +0000 +++ b/mod_http_admin_api/mod_http_admin_api.lua Thu Dec 07 15:41:18 2023 +0000 @@ -425,6 +425,25 @@ return json.encode(user_info); end +local user_attribute_writers = { + enabled = function (username, enabled) + local ok, err; + if enabled == true then + ok, err = usermanager.enable_user(username, module.host); + elseif enabled == false then + ok, err = usermanager.disable_user(username, module.host); + else + ok, err = nil, "Invalid value provided for 'enabled'"; + end + if not ok then + module:log("error", "Unable to %s user '%s': %s", enabled and "enable" or "disable", username, err); + return nil, err; + end + return true; + end; +}; +local writable_user_attributes = set.new(array.collect(it.keys(user_attribute_writers))); + function update_user(event, username) local current_user = get_user_info(username); @@ -483,6 +502,12 @@ end end + if new_user.enabled ~= nil then + if not user_attribute_writers.enabled(username, new_user.enabled) then + return 500; + end + end + return 200; end