aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristophe Romain <christophe.romain@process-one.net>2015-04-21 15:14:39 +0200
committerChristophe Romain <christophe.romain@process-one.net>2015-04-21 15:24:31 +0200
commitcbd45974e22e940b974d8668eb5f4bc2350bb5c3 (patch)
tree07925dffe6a6450e025328591d71b92eae9677cb
parentFixed node type (thanks to saczawap) (#435) (diff)
Owner can subscribe to its node (#454)
-rw-r--r--src/node_hometree.erl7
-rw-r--r--src/node_hometree_odbc.erl7
2 files changed, 8 insertions, 6 deletions
diff --git a/src/node_hometree.erl b/src/node_hometree.erl
index 2840c1850..f2e592aaa 100644
--- a/src/node_hometree.erl
+++ b/src/node_hometree.erl
@@ -217,6 +217,7 @@ subscribe_node(Nidx, Sender, Subscriber, AccessModel,
(_) -> false
end,
Subscriptions),
+ Owner = Affiliation == owner,
if not Authorized ->
{error,
?ERR_EXTENDED((?ERR_BAD_REQUEST), <<"invalid-jid">>)};
@@ -225,13 +226,13 @@ subscribe_node(Nidx, Sender, Subscriber, AccessModel,
PendingSubscription ->
{error,
?ERR_EXTENDED((?ERR_NOT_AUTHORIZED), <<"pending-subscription">>)};
- (AccessModel == presence) and not PresenceSubscription ->
+ (AccessModel == presence) and (not PresenceSubscription) and (not Owner) ->
{error,
?ERR_EXTENDED((?ERR_NOT_AUTHORIZED), <<"presence-subscription-required">>)};
- (AccessModel == roster) and not RosterGroup ->
+ (AccessModel == roster) and (not RosterGroup) and (not Owner) ->
{error,
?ERR_EXTENDED((?ERR_NOT_AUTHORIZED), <<"not-in-roster-group">>)};
- (AccessModel == whitelist) and not Whitelisted ->
+ (AccessModel == whitelist) and (not Whitelisted) and (not Owner) ->
{error,
?ERR_EXTENDED((?ERR_NOT_ALLOWED), <<"closed-node">>)};
%%MustPay ->
diff --git a/src/node_hometree_odbc.erl b/src/node_hometree_odbc.erl
index d0cfad0f1..6207e0fbc 100644
--- a/src/node_hometree_odbc.erl
+++ b/src/node_hometree_odbc.erl
@@ -158,6 +158,7 @@ subscribe_node(Nidx, Sender, Subscriber, AccessModel,
(_) -> false
end,
Subscriptions),
+ Owner = Affiliation == owner,
if not Authorized ->
{error,
?ERR_EXTENDED((?ERR_BAD_REQUEST), <<"invalid-jid">>)};
@@ -166,13 +167,13 @@ subscribe_node(Nidx, Sender, Subscriber, AccessModel,
PendingSubscription ->
{error,
?ERR_EXTENDED((?ERR_NOT_AUTHORIZED), <<"pending-subscription">>)};
- (AccessModel == presence) and not PresenceSubscription ->
+ (AccessModel == presence) and (not PresenceSubscription) and (not Owner) ->
{error,
?ERR_EXTENDED((?ERR_NOT_AUTHORIZED), <<"presence-subscription-required">>)};
- (AccessModel == roster) and not RosterGroup ->
+ (AccessModel == roster) and (not RosterGroup) and (not Owner) ->
{error,
?ERR_EXTENDED((?ERR_NOT_AUTHORIZED), <<"not-in-roster-group">>)};
- (AccessModel == whitelist) and not Whitelisted ->
+ (AccessModel == whitelist) and (not Whitelisted) and (not Owner) ->
{error,
?ERR_EXTENDED((?ERR_NOT_ALLOWED), <<"closed-node">>)};
%%MustPay ->