# HG changeset patch # User Matthew Wild # Date 1533550989 -3600 # Node ID 7721794e9e938584aa4ff853867a8223997eb9e1 # Parent a4a923e493da7fab45c4643c8968e412f8f4b663 util.pubsub: Add support for publish_model config option diff -r a4a923e493da -r 7721794e9e93 util/pubsub.lua --- a/util/pubsub.lua Mon Aug 06 11:22:05 2018 +0100 +++ b/util/pubsub.lua Mon Aug 06 11:23:09 2018 +0100 @@ -17,6 +17,7 @@ ["persist_items"] = false; ["max_items"] = 20; ["access_model"] = "open"; + ["publish_model"] = "publishers"; }; local default_node_config_mt = { __index = default_node_config }; @@ -365,7 +366,19 @@ function service:publish(node, actor, id, item) -- Access checking - if not self:may(node, actor, "publish") then + local may_publish = false; + + if self:may(node, actor, "publish") then + may_publish = true; + else + local node_obj = self.nodes[node]; + local publish_model = node_obj and node_obj.config.publish_model; + if publish_model == "open" + or (publish_model == "subscribers" and node_obj.subscribers[actor]) then + may_publish = true; + end + end + if not may_publish then return false, "forbidden"; end --