diff options
Diffstat (limited to '')
-rw-r--r-- | src/mod_pubsub/node_pep.erl | 23 |
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, []}; |