Mercurial > prosody-modules
view mod_muc_hats_api/mod_muc_hats_api.lua @ 5405:c7a5caad28ef
mod_http_oauth2: Enforce response type encoded in client_id
The client promises to only use this response type, so we should hold
them to that.
This makes it fail earlier if the response type is disabled or the
client is trying to use one that it promised not to use. Better than
failing after login and consent.
| author | Kim Alvefur <zash@zash.se> |
|---|---|
| date | Tue, 02 May 2023 16:31:25 +0200 |
| parents | 1f90e333b1d8 |
| children |
line wrap: on
line source
local mod_muc = module:depends("muc"); function add_user_hat(user_jid, room_jid, hat_id, attachment) local room = mod_muc.get_room_from_jid(room_jid); if not room then return nil, "item-not-found", "no such room"; end local user_aff = room:get_affiliation(user_jid); if not user_aff then return nil, "item-not-found", "user not affiliated with room"; end local aff_data = room:get_affiliation_data(user_jid) or {}; local hats = aff_data.hats; if not hats then hats = {}; aff_data.hats = hats; end hats[hat_id] = { active = attachment.active; required = attachment.required; title = attachment.title; }; local ok, err = room:set_affiliation(true, user_jid, user_aff, nil, aff_data); if not ok then return nil, err; end return true; end function remove_user_hat(user_jid, room_jid, hat_id) local room = mod_muc.get_room_from_jid(room_jid); if not room then return nil, "item-not-found", "no such room"; end local user_aff = room:get_affiliation(user_jid); if not user_aff then return nil, "item-not-found", "user not affiliated with room"; end local aff_data = room:get_affiliation_data(user_jid); local hats = aff_data and aff_data.hats; if not hats then return true; end hats[hat_id] = nil; local ok, err = room:set_affiliation(true, user_jid, user_aff, nil, aff_data); if not ok then return nil, err; end return true; end function set_user_hats(user_jid, room_jid, new_hats) local room = mod_muc.get_room_from_jid(room_jid); if not room then return nil, "item-not-found", "no such room"; end local user_aff = room:get_affiliation(user_jid); if not user_aff then return nil, "item-not-found", "user not affiliated with room"; end local aff_data = room:get_affiliation_data(user_jid) or {}; aff_data.hats = new_hats; local ok, err = room:set_affiliation(true, user_jid, user_aff, nil, aff_data); if not ok then return nil, err; end return true; end
