aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatthias Rieber <matthias@zu-con.org>2012-10-18 19:46:28 +0200
committerMatthias Rieber <matthias@zu-con.org>2012-10-18 19:47:02 +0200
commitcdb2ebe4bd3cfb8d476e2eee44ceb323a88c1bb3 (patch)
tree1dd4cac18081e9198ecb6447c8fe9bec743fff26
parentNew Hebrew translation (thanks to Isratine Citizen) (diff)
access_createnode acl also applies to auto created nodes
-rw-r--r--src/mod_pubsub/mod_pubsub.erl8
1 files changed, 5 insertions, 3 deletions
diff --git a/src/mod_pubsub/mod_pubsub.erl b/src/mod_pubsub/mod_pubsub.erl
index fcf7de96b..1b17f8aff 100644
--- a/src/mod_pubsub/mod_pubsub.erl
+++ b/src/mod_pubsub/mod_pubsub.erl
@@ -1248,7 +1248,7 @@ iq_pubsub(Host, ServerHost, From, IQType, SubEl, Lang, Access, Plugins) ->
case xml:remove_cdata(Els) of
[{xmlelement, "item", ItemAttrs, Payload}] ->
ItemId = xml:get_attr_s("id", ItemAttrs),
- publish_item(Host, ServerHost, Node, From, ItemId, Payload);
+ publish_item(Host, ServerHost, Node, From, ItemId, Payload, Access);
[] ->
%% Publisher attempts to publish to persistent node with no item
{error, extended_error(?ERR_BAD_REQUEST,
@@ -2030,8 +2030,10 @@ unsubscribe_node(Host, Node, From, Subscriber, SubId) ->
%%</ul>
publish_item(Host, ServerHost, Node, Publisher, "", Payload) ->
%% if publisher does not specify an ItemId, the service MUST generate the ItemId
- publish_item(Host, ServerHost, Node, Publisher, uniqid(), Payload);
+ publish_item(Host, ServerHost, Node, Publisher, uniqid(), Payload, all);
publish_item(Host, ServerHost, Node, Publisher, ItemId, Payload) ->
+ publish_item(Host, ServerHost, Node, Publisher, ItemId, Payload, all).
+publish_item(Host, ServerHost, Node, Publisher, ItemId, Payload, Access) ->
Action = fun(#pubsub_node{options = Options, type = Type, id = NodeId}) ->
Features = features(Type),
PublishFeature = lists:member("publish", Features),
@@ -2122,7 +2124,7 @@ publish_item(Host, ServerHost, Node, Publisher, ItemId, Payload) ->
Type = select_type(ServerHost, Host, Node),
case lists:member("auto-create", features(Type)) of
true ->
- case create_node(Host, ServerHost, Node, Publisher, Type) of
+ case create_node(Host, ServerHost, Node, Publisher, Type, Access, []) of
{result, [{xmlelement, "pubsub", [{"xmlns", ?NS_PUBSUB}],
[{xmlelement, "create", [{"node", NewNode}], []}]}]} ->
publish_item(Host, ServerHost, list_to_binary(NewNode),