aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/mod_muc/mod_muc_room.erl37
1 files changed, 31 insertions, 6 deletions
diff --git a/src/mod_muc/mod_muc_room.erl b/src/mod_muc/mod_muc_room.erl
index 355ada522..24e82c944 100644
--- a/src/mod_muc/mod_muc_room.erl
+++ b/src/mod_muc/mod_muc_room.erl
@@ -1677,6 +1677,19 @@ can_change_ra(FAffiliation, FRole,
when (FAffiliation == owner) or (FAffiliation == admin) ->
true;
can_change_ra(FAffiliation, FRole,
+ outcast, TRole,
+ affiliation, member)
+ when (FAffiliation == owner) or (FAffiliation == admin) ->
+ true;
+can_change_ra(owner, FRole,
+ outcast, TRole,
+ affiliation, admin) ->
+ true;
+can_change_ra(owner, FRole,
+ outcast, TRole,
+ affiliation, owner) ->
+ true;
+can_change_ra(FAffiliation, FRole,
none, TRole,
affiliation, outcast)
when (FAffiliation == owner) or (FAffiliation == admin) ->
@@ -1714,15 +1727,11 @@ can_change_ra(owner, FRole,
true;
can_change_ra(owner, FRole,
admin, TRole,
- affiliation, member) ->
- true;
-can_change_ra(owner, FRole,
- admin, TRole,
- affiliation, owner) ->
+ affiliation, _Affiliation) ->
true;
can_change_ra(owner, FRole,
owner, TRole,
- affiliation, admin) ->
+ affiliation, _Affiliation) ->
true;
can_change_ra(FAffiliation, FRole,
TAffiliation, TRole,
@@ -1756,6 +1765,22 @@ can_change_ra(FAffiliation, FRole,
true;
can_change_ra(FAffiliation, FRole,
owner, moderator,
+ role, visitor) ->
+ false;
+can_change_ra(owner, FRole,
+ TAffiliation, moderator,
+ role, visitor) ->
+ true;
+can_change_ra(FAffiliation, FRole,
+ admin, moderator,
+ role, visitor) ->
+ false;
+can_change_ra(admin, FRole,
+ TAffiliation, moderator,
+ role, visitor) ->
+ true;
+can_change_ra(FAffiliation, FRole,
+ owner, moderator,
role, participant) ->
false;
can_change_ra(owner, FRole,