mod_snikket_restricted_users: Don't isolate users with no roles

The code was originally written to fail safe in the event of failure, hence
the 'if roles and ...'. However a user with no roles (which is normal for a
normal user, especially on upgrade) can return nil.

Failure is signified by 'false', so now we explicitly catch this and return
early without bypassing isolation. Users with no roles (nil) or with roles
but not prosody:restricted bypass isolation.
This commit is contained in:
Matthew Wild 2021-11-10 17:27:09 +00:00
parent f85250461c
commit 457096a13d
1 changed files with 2 additions and 1 deletions

View File

@ -9,7 +9,8 @@ local function load_main_host(module)
if not session.no_host_isolation then
local bare_jid = jid_bare(session.full_jid);
local roles = um_get_roles(bare_jid, module.host);
if roles and not roles["prosody:restricted"] then
if roles == false then return; end
if not roles or not roles["prosody:restricted"] then
-- Bypass isolation for all unrestricted users
session.no_host_isolation = true;
end