# HG changeset patch # User Matthew Wild # Date 1701963678 0 # Node ID 6c8cf3ecb885bd226d9eb667df75926a26d893e1 # Parent 5621dece3ee4c315f05147556a397a868e985d2f mod_http_admin_api: Support for setting user account enabled status diff -r 5621dece3ee4 -r 6c8cf3ecb885 mod_http_admin_api/mod_http_admin_api.lua --- 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