view mod_admin_notify/mod_admin_notify.lua @ 6232:2505542c6c50

mod_http_oauth2: Deduplicate client authentication Since it is always performed by each grant_type_handler, it can now be done earlier before dispatching to them. A note on 4f0ed0e3ad5a: Requiring a client in the password grant broke use without registering a client, e.g. the Snikket Web Portal.
author Kim Alvefur <zash@zash.se>
date Sat, 31 May 2025 13:36:39 +0200
parents 44e18454e1e0
children
line wrap: on
line source

local it = require "util.iterators";
local jid = require "util.jid";
local set = require "util.set";
local st = require "util.stanza";

local roles_store = module:open_store("roles", "map");
local config_admins = module:get_option_inherited_set("admins", {}) / jid.prep;

local function append_host(username)
	return username.."@"..module.host;
end

local function get_admins()
	local role_admins = roles_store:get_all("prosody:admin") or {};
	local admins = config_admins + (set.new(it.to_array(it.keys(role_admins))) / append_host);
	return admins;
end

function notify(text) --luacheck: ignore 131/notify
	local base_msg = st.message({ from = module.host })
		:text_tag("body", text);
	for admin_jid in get_admins() do
		local msg = st.clone(base_msg);
		msg.attr.to = admin_jid;
		module:send(msg);
	end
end