summaryrefslogtreecommitdiff
path: root/src/mod_pubsub/node_pep.erl
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--src/mod_pubsub/node_pep.erl23
1 files changed, 19 insertions, 4 deletions
diff --git a/src/mod_pubsub/node_pep.erl b/src/mod_pubsub/node_pep.erl
index 2c648148..c986ef61 100644
--- a/src/mod_pubsub/node_pep.erl
+++ b/src/mod_pubsub/node_pep.erl
@@ -110,10 +110,25 @@ features() ->
"subscribe" %*
].
-create_node_permission(_Host, _ServerHost, _Node, _ParentNode, _Owner, _Access) ->
- %% TODO may we check bare JID match ?
- {result, true}.
-
+create_node_permission(Host, ServerHost, _Node, _ParentNode, Owner, Access) ->
+ LOwner = jlib:jid_tolower(Owner),
+ {User, Server, _Resource} = LOwner,
+ Allowed = case LOwner of
+ {"", Host, ""} ->
+ true; % pubsub service always allowed
+ _ ->
+ case acl:match_rule(ServerHost, Access, LOwner) of
+ allow ->
+ case Host of
+ {User, Server, _} -> true;
+ _ -> false
+ end;
+ _ ->
+ false
+ end
+ end,
+ {result, Allowed}.
+
create_node(Host, Node, Owner) ->
case node_default:create_node(Host, Node, Owner) of
{result, _} -> {result, []};