aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorPaweł Chmielowski <pchmielowski@process-one.net>2019-01-30 13:09:06 +0100
committerPaweł Chmielowski <pchmielowski@process-one.net>2019-01-30 13:09:06 +0100
commit096b4a50e59522d1f324d8d5c870f27ddc4425f9 (patch)
tree14c36f9dcdf0d14e2906e22cca25f8b46625279d /src
parentAllow specifying tag for listener for api_permission purposes (diff)
Require that both tag and module matched in from of api_permission
Diffstat (limited to 'src')
-rw-r--r--src/ejabberd_access_permissions.erl4
1 files changed, 3 insertions, 1 deletions
diff --git a/src/ejabberd_access_permissions.erl b/src/ejabberd_access_permissions.erl
index 368f07529..0c53795b8 100644
--- a/src/ejabberd_access_permissions.erl
+++ b/src/ejabberd_access_permissions.erl
@@ -265,7 +265,9 @@ get_definitions(#state{definitions = none, fragments_generators = Gens} = State)
matches_definition({_Name, {From, Who, What}}, Cmd, Module, Tag, Host, CallerInfo) ->
case What == all orelse lists:member(Cmd, What) of
true ->
- case From == [] orelse lists:member(Module, From) orelse lists:member({tag, Tag}, From) of
+ {Tags, Modules} = lists:partition(fun({tag, _}) -> true; (_) -> false end, From),
+ case (Modules == [] orelse lists:member(Module, Modules)) andalso
+ (Tags == [] orelse lists:member({tag, Tag}, Tags)) of
true ->
Scope = maps:get(oauth_scope, CallerInfo, none),
lists:any(