mirror of
https://github.com/processone/ejabberd.git
synced 2024-11-22 16:20:52 +01:00
Restrict access to MAM archives for members-only rooms
This commit is contained in:
parent
f3cb5e0d77
commit
babb484cfc
@ -251,7 +251,7 @@ process_iq_v0_3(#jid{lserver = LServer} = From,
|
|||||||
process_iq_v0_3(From, To, IQ) ->
|
process_iq_v0_3(From, To, IQ) ->
|
||||||
process_iq(From, To, IQ).
|
process_iq(From, To, IQ).
|
||||||
|
|
||||||
muc_process_iq(#iq{type = set,
|
muc_process_iq(#iq{type = set, lang = Lang,
|
||||||
sub_el = #xmlel{name = <<"query">>,
|
sub_el = #xmlel{name = <<"query">>,
|
||||||
attrs = Attrs} = SubEl} = IQ,
|
attrs = Attrs} = SubEl} = IQ,
|
||||||
MUCState, From, To) ->
|
MUCState, From, To) ->
|
||||||
@ -259,8 +259,24 @@ muc_process_iq(#iq{type = set,
|
|||||||
?NS_MAM_0 ->
|
?NS_MAM_0 ->
|
||||||
LServer = MUCState#state.server_host,
|
LServer = MUCState#state.server_host,
|
||||||
Role = mod_muc_room:get_role(From, MUCState),
|
Role = mod_muc_room:get_role(From, MUCState),
|
||||||
process_iq(LServer, From, To, IQ, SubEl,
|
Config = MUCState#state.config,
|
||||||
get_xdata_fields(SubEl), {groupchat, Role, MUCState});
|
if Config#config.members_only ->
|
||||||
|
case mod_muc_room:is_occupant_or_admin(From, MUCState) of
|
||||||
|
true ->
|
||||||
|
process_iq(LServer, From, To, IQ, SubEl,
|
||||||
|
get_xdata_fields(SubEl),
|
||||||
|
{groupchat, Role, MUCState});
|
||||||
|
false ->
|
||||||
|
Text = <<"Only members are allowed to query "
|
||||||
|
"archives of this room">>,
|
||||||
|
Error = ?ERRT_FORBIDDEN(Lang, Text),
|
||||||
|
IQ#iq{type = error, sub_el = [SubEl, Error]}
|
||||||
|
end;
|
||||||
|
true ->
|
||||||
|
process_iq(LServer, From, To, IQ, SubEl,
|
||||||
|
get_xdata_fields(SubEl),
|
||||||
|
{groupchat, Role, MUCState})
|
||||||
|
end;
|
||||||
_ ->
|
_ ->
|
||||||
IQ
|
IQ
|
||||||
end;
|
end;
|
||||||
|
@ -35,6 +35,8 @@
|
|||||||
start/9,
|
start/9,
|
||||||
start/7,
|
start/7,
|
||||||
get_role/2,
|
get_role/2,
|
||||||
|
get_affiliation/2,
|
||||||
|
is_occupant_or_admin/2,
|
||||||
route/4]).
|
route/4]).
|
||||||
|
|
||||||
%% gen_fsm callbacks
|
%% gen_fsm callbacks
|
||||||
|
Loading…
Reference in New Issue
Block a user