]> granicus.if.org Git - ejabberd/commitdiff
Affiliations other than admin and owner cannot invite to members_only rooms
authorBadlop <badlop@process-one.net>
Wed, 17 Oct 2018 10:55:31 +0000 (12:55 +0200)
committerBadlop <badlop@process-one.net>
Wed, 17 Oct 2018 10:57:18 +0000 (12:57 +0200)
This is explained in the paragraph:
 If the room is members-only, the service MAY also add the invitee to the
 member list. (Note: Invitation privileges in members-only rooms SHOULD be
 restricted to room admins; if a member without privileges to edit the
 member list attempts to invite another user, the service SHOULD return
 a <forbidden/> error to the occupant; for details, see the Modifying the
 Member List section of this document.)
https://xmpp.org/extensions/xep-0045.html#invite-mediated

src/mod_muc_room.erl

index a7089bc1029208d4886a4623fd0929551654fe1d..267514b2022837969a6af512523a674df583cc86 100644 (file)
@@ -4217,7 +4217,8 @@ send_voice_request(From, Lang, StateData) ->
                              ok | {error, stanza_error()}.
 check_invitation(From, Invitations, Lang, StateData) ->
     FAffiliation = get_affiliation(From, StateData),
-    CanInvite = (StateData#state.config)#config.allow_user_invites orelse
+    CanInvite = ((StateData#state.config)#config.allow_user_invites
+               and not (StateData#state.config)#config.members_only) orelse
                FAffiliation == admin orelse FAffiliation == owner,
     case CanInvite of
        true ->