Changeset

12434:cf922f34e264

Merge 0.12->trunk
author Matthew Wild <mwild1@gmail.com>
date Thu, 24 Mar 2022 22:30:14 +0000
parents 12432:60eecdd9c65b (current diff) 12433:3dfcdcab5446 (diff)
children 12436:9014d5011741
files
diffstat 1 files changed, 5 insertions(+), 4 deletions(-) [+]
line wrap: on
line diff
--- a/plugins/muc/muc.lib.lua	Wed Mar 23 16:25:37 2022 +0100
+++ b/plugins/muc/muc.lib.lua	Thu Mar 24 22:30:14 2022 +0000
@@ -1583,15 +1583,16 @@
 		return event.allowed, event.error, event.condition;
 	end
 
-	-- Can't do anything to other owners or admins
-	local occupant_affiliation = self:get_affiliation(occupant.bare_jid);
-	if occupant_affiliation == "owner" or occupant_affiliation == "admin" then
+	local actor_affiliation = self:get_affiliation(actor) or "none";
+	local occupant_affiliation = self:get_affiliation(occupant.bare_jid) or "none";
+
+	-- Can't do anything to someone with higher affiliation
+	if valid_affiliations[actor_affiliation] < valid_affiliations[occupant_affiliation] then
 		return nil, "cancel", "not-allowed";
 	end
 
 	-- If you are trying to give or take moderator role you need to be an owner or admin
 	if occupant.role == "moderator" or role == "moderator" then
-		local actor_affiliation = self:get_affiliation(actor);
 		if actor_affiliation ~= "owner" and actor_affiliation ~= "admin" then
 			return nil, "cancel", "not-allowed";
 		end