]> granicus.if.org Git - ejabberd/commitdiff
Apply default role after revoking admin affiliation (#3023)
authorBadlop <badlop@process-one.net>
Tue, 17 Sep 2019 08:41:27 +0000 (10:41 +0200)
committerBadlop <badlop@process-one.net>
Tue, 17 Sep 2019 10:31:14 +0000 (12:31 +0200)
src/mod_muc_room.erl
test/muc_tests.erl

index 808b8a24647551212f7a4aa8e4391ea707e63a16..2fc4e6e93504affa44ef5af19dc0625352e8899f 100644 (file)
@@ -2916,9 +2916,13 @@ process_item_change(Item, SD, UJID) ->
                        set_role(JID, none, SD1);
                    _ ->
                        SD1 = set_affiliation(JID, none, SD),
-                       send_update_presence(JID, Reason, SD1, SD),
-                       maybe_send_affiliation(JID, none, SD1),
-                       SD1
+                       SD2 = case (SD1#state.config)#config.moderated of
+                           true -> set_role(JID, visitor, SD1);
+                           false -> set_role(JID, participant, SD1)
+                       end,
+                       send_update_presence(JID, Reason, SD2, SD),
+                       maybe_send_affiliation(JID, none, SD2),
+                       SD2
                end;
            {JID, affiliation, outcast, Reason} ->
                send_kickban_presence(UJID, JID, Reason, 301, outcast, SD),
index 1d586431b49ef77b2c92d2438ca6836d2a91bf31..ef57e9a7b4346802793813f909ec70451d7492ca 100644 (file)
@@ -784,7 +784,7 @@ change_affiliation_master(Config) ->
                  #muc_item{affiliation = Aff} ->
                      ok
              end
-      end, [{member, participant, available}, {none, participant, available},
+      end, [{member, participant, available}, {none, visitor, available},
            {admin, moderator, available}, {owner, moderator, available},
            {outcast, none, unavailable}]),
     ok = leave(Config),