diff options
author | Holger Weiss <holger@zedat.fu-berlin.de> | 2019-03-11 23:30:22 +0100 |
---|---|---|
committer | Holger Weiss <holger@zedat.fu-berlin.de> | 2019-03-11 23:30:22 +0100 |
commit | 1af2b2cfc7df2b4b98d5113d88ea9c7ac3a9c5d0 (patch) | |
tree | 592d2fd4d653294352b034528c64085e6f2d828f /src | |
parent | mod_push: Check for payload in encrypted messages (diff) | |
parent | allow room recreate for admins even if nonempty (diff) |
Merge remote-tracking branch 'processone/pr/2811'
* processone/pr/2811:
allow room recreate for admins even if nonempty
Diffstat (limited to '')
-rw-r--r-- | src/mod_muc.erl | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/src/mod_muc.erl b/src/mod_muc.erl index 9d53b8974..96b73891d 100644 --- a/src/mod_muc.erl +++ b/src/mod_muc.erl @@ -438,18 +438,21 @@ do_route1(_Host, _ServerHost, _Access, _HistorySize, _RoomShaper, ejabberd_router:route_error(Packet, Err); do_route1(Host, ServerHost, Access, HistorySize, RoomShaper, From, To, Packet, DefRoomOpts, QueueType) -> - {_AccessRoute, AccessCreate, _AccessAdmin, _AccessPersistent, _AccessMam} = Access, + {_AccessRoute, AccessCreate, AccessAdmin, _AccessPersistent, _AccessMam} = Access, {Room, _, Nick} = jid:tolower(To), RMod = gen_mod:ram_db_mod(ServerHost, ?MODULE), case RMod:find_online_room(ServerHost, Room, Host) of error -> case is_create_request(Packet) of true -> + IsServiceAdmin = acl:match_rule(ServerHost, + AccessAdmin, From) == allow, case check_user_can_create_room( ServerHost, AccessCreate, From, Room) and - ejabberd_hooks:run_fold(check_create_room, + (IsServiceAdmin orelse + ejabberd_hooks:run_fold(check_create_room, ServerHost, true, - [ServerHost, Room, Host]) of + [ServerHost, Room, Host])) of true -> {ok, Pid} = start_new_room( Host, ServerHost, Access, |