Software /
code /
prosody-modules
File
mod_muc_offline_delivery/mod_muc_offline_delivery.lua @ 5738:8488ebde5739
mod_http_oauth2: Skip consent screen if requested by client and same scopes already granted
This follows the intent behind the OpenID Connect 'prompt' parameter
when it does not include the 'consent' keyword, that is the client
wishes to skip the consent screen. If the user has already granted the
exact same scopes to the exact same client in the past, then one can
assume that they may grant it again.
author | Kim Alvefur <zash@zash.se> |
---|---|
date | Tue, 14 Nov 2023 23:03:37 +0100 |
parent | 4780:4abb33a15897 |
line wrap: on
line source
local st = require "util.stanza"; local default_enable = module:get_option_boolean("muc_offline_delivery_default", false); module:add_item("muc-registration-field", { name = "offline_delivery"; var = "{http://tigase.org/protocol/muc}offline"; type = "boolean"; label = "Receive messages while not connected to the room"; value = default_enable; }); module:hook("muc-registration-submitted", function (event) local deliver_offline = event.submitted_data.offline_delivery; event.affiliation_data.offline_delivery = deliver_offline; end); module:hook("muc-add-history", function (event) module:log("debug", "Broadcasting message to offline occupants..."); local sent = 0; local room = event.room; for jid, affiliation, data in room:each_affiliation() do --luacheck: ignore 213/affiliation local reserved_nickname = data and data.reserved_nickname; local user_setting = data and data.offline_delivery or nil; if reserved_nickname and (user_setting or (user_setting == nil and default_enable)) then local is_absent = not room:get_occupant_by_nick(room.jid.."/"..reserved_nickname); if is_absent then module:log("debug", "Forwarding message to offline member <%s>", jid); local msg = st.clone(event.stanza); msg.attr.to = jid; module:send(msg); sent = sent + 1; end end end if sent > 0 then module:log("debug", "Sent message to %d offline occupants", sent); end end);