From c6be32bfa07545c175774abb907416db1b87b191 Mon Sep 17 00:00:00 2001 From: Simon Fridlund Date: Mon, 24 Apr 2017 17:01:30 +0200 Subject: [PATCH] Add DDP._CurrentPublicationInvocation This will make it possible to determine if code that is running has been called from a publish function. --- packages/ddp-client/livedata_common.js | 1 + packages/ddp-server/livedata_server.js | 16 ++++++++++------ 2 files changed, 11 insertions(+), 6 deletions(-) diff --git a/packages/ddp-client/livedata_common.js b/packages/ddp-client/livedata_common.js index 88bab01464..fe7239d7a8 100644 --- a/packages/ddp-client/livedata_common.js +++ b/packages/ddp-client/livedata_common.js @@ -6,3 +6,4 @@ LivedataTest.SUPPORTED_DDP_VERSIONS = DDPCommon.SUPPORTED_DDP_VERSIONS; // it to get the current user. Meteor.setTimeout and friends clear // it. We can probably find a better way to factor this. DDP._CurrentInvocation = new Meteor.EnvironmentVariable; +DDP._CurrentPublicationInvocation = new Meteor.EnvironmentVariable; diff --git a/packages/ddp-server/livedata_server.js b/packages/ddp-server/livedata_server.js index afd6ae5cf7..838a651e8c 100644 --- a/packages/ddp-server/livedata_server.js +++ b/packages/ddp-server/livedata_server.js @@ -1041,12 +1041,16 @@ _.extend(Subscription.prototype, { var self = this; try { - var res = maybeAuditArgumentChecks( - self._handler, self, EJSON.clone(self._params), - // It's OK that this would look weird for universal subscriptions, - // because they have no arguments so there can never be an - // audit-argument-checks failure. - "publisher '" + self._name + "'"); + var res = DDP._CurrentPublicationInvocation.withValue( + self, + () => maybeAuditArgumentChecks( + self._handler, self, EJSON.clone(self._params), + // It's OK that this would look weird for universal subscriptions, + // because they have no arguments so there can never be an + // audit-argument-checks failure. + "publisher '" + self._name + "'" + ) + ); } catch (e) { self.error(e); return;