view mod_muc_local_only/mod_muc_local_only.lua @ 5518:d87d0e4a8516

mod_http_oauth2: Validate the OpenID 'prompt' parameter Without support for affecting the login and consent procedure, it seems sensible to inform the client that they can't change anything with this parameter.
author Kim Alvefur <zash@zash.se>
date Mon, 05 Jun 2023 22:19:17 +0200
parents 221b6bee26e2
children
line wrap: on
line source

local jid = require "util.jid";
local st = require "util.stanza";

local local_rooms = module:get_option_inherited_set("muc_local_only", {});

module:hook("muc-occupant-pre-join", function (event)
	local room = event.room;
	if not local_rooms:contains(room.jid) then
		return; -- Not a protected room, ignore
	end
	local user_jid = event.occupant.bare_jid;
	local user_host = jid.host(user_jid);
	if not prosody.hosts[user_host] then
		local error_reply = st.error_reply(event.stanza, "cancel", "forbidden", "This group is only available to local users", room.jid);
		event.origin.send(error_reply);
		return true;
	end
	room:set_affiliation(true, user_jid, "member", "Granting access to local user");
end);