From 8e613800099ad3681d7e6faa5fc02ce5dac25f0e Mon Sep 17 00:00:00 2001 From: Dana Date: Fri, 22 Jan 2016 15:59:35 +0000 Subject: [PATCH 1/4] [WIP] Make passing user id explicit --- node_modules/c9/skip-analytics.js | 14 +++----------- node_modules/c9/skip-analytics_test.js | 4 ++-- 2 files changed, 5 insertions(+), 13 deletions(-) diff --git a/node_modules/c9/skip-analytics.js b/node_modules/c9/skip-analytics.js index f391850a..31c97dc4 100644 --- a/node_modules/c9/skip-analytics.js +++ b/node_modules/c9/skip-analytics.js @@ -10,23 +10,15 @@ define(function(require, exports, module) { var hasInternalDomain = require("c9/has-internal-domain"); var hasInternalTestName = require("c9/has-internal-test-name"); - function skipAnalytics(user, allowUnauthorized) { - if (!user) return true; - - if (!user.id && !user.uid) return true; // users without an id should never reach the Segment library + function skipAnalytics(userId, user, allowUnauthorized) { + if (!allowUnauthorized && userId === -1) return true; - if (!allowUnauthorized && hasUnauthorizedId(user)) return true; + if (!userId || !user) return true; if (hasInternalTestName(user)) return true; if (hasInternalDomain(user.email)) return true; return false; } - function hasUnauthorizedId(user) { - if (user.id === -1) return true; - - if (!user.id && user.uid === -1) return true; - } - module.exports = skipAnalytics; }); \ No newline at end of file diff --git a/node_modules/c9/skip-analytics_test.js b/node_modules/c9/skip-analytics_test.js index fe09f097..70c6a55a 100644 --- a/node_modules/c9/skip-analytics_test.js +++ b/node_modules/c9/skip-analytics_test.js @@ -8,10 +8,10 @@ var skipAnalytics = require("c9/skip-analytics"); describe("skip-analytics", function() { - it("returns true when user undefined", function() { + it("returns true when user or user id undefined", function() { var user; - assert.equal(true, skipAnalytics(user), "skipAnalytics should return true when user undefined"); + assert.equal(true, skipAnalytics(null, user), "skipAnalytics should return true when user undefined"); }); it("returns true when user id is -1", function() { From e0fd2d17fbf810653ef968c56578a2ab31588911 Mon Sep 17 00:00:00 2001 From: Dana Date: Mon, 25 Jan 2016 10:24:23 +0000 Subject: [PATCH 2/4] Further refactoring --- node_modules/c9/has-internal-test-name.js | 8 +++----- node_modules/c9/skip-analytics.js | 14 ++++++++++---- plugins/c9.analytics/mock_analytics.js | 6 +++--- 3 files changed, 16 insertions(+), 12 deletions(-) diff --git a/node_modules/c9/has-internal-test-name.js b/node_modules/c9/has-internal-test-name.js index 82f65452..1056d645 100644 --- a/node_modules/c9/has-internal-test-name.js +++ b/node_modules/c9/has-internal-test-name.js @@ -10,12 +10,10 @@ define(function(require, exports, module) { var internalTestNames = ["c9test", "c9 test"]; var regex = new RegExp("^(" + internalTestNames.join("|") + ")+"); - function hasInternalTestName(user) { - if (!user.name && !user.username) return false; + function hasInternalTestName(name) { + if (!name) return false; - var testedName = user.name ? user.name : user.username; - - return regex.test(testedName); + return regex.test(name); } module.exports = hasInternalTestName; diff --git a/node_modules/c9/skip-analytics.js b/node_modules/c9/skip-analytics.js index 31c97dc4..f0f2e024 100644 --- a/node_modules/c9/skip-analytics.js +++ b/node_modules/c9/skip-analytics.js @@ -10,13 +10,19 @@ define(function(require, exports, module) { var hasInternalDomain = require("c9/has-internal-domain"); var hasInternalTestName = require("c9/has-internal-test-name"); - function skipAnalytics(userId, user, allowUnauthorized) { + function skipAnalytics(userId, name, email, allowUnauthorized) { + + if (typeof userId == "object" && !name) { + var user = userId; + return skipAnalytics(user.id, user.name || user.username, user.email); // make it backwards for the client + } + if (!allowUnauthorized && userId === -1) return true; - if (!userId || !user) return true; + if (!userId) return true; - if (hasInternalTestName(user)) return true; - if (hasInternalDomain(user.email)) return true; + if (hasInternalTestName(name)) return true; + if (hasInternalDomain(email)) return true; return false; } diff --git a/plugins/c9.analytics/mock_analytics.js b/plugins/c9.analytics/mock_analytics.js index ca17303f..c8bb3c06 100644 --- a/plugins/c9.analytics/mock_analytics.js +++ b/plugins/c9.analytics/mock_analytics.js @@ -12,11 +12,11 @@ function plugin(options, imports, register) { register(null, { "analytics": { - log: function() {}, track: function() {}, identify: function() {}, - logClean: function() {}, - trackClean: function() {} + updateTraits: function() {}, + alias: function() {}, + logClean: function() {} // huh?? } }); } \ No newline at end of file From 57fd9954a99aa1461ec591bfbed2b1dc3d11897b Mon Sep 17 00:00:00 2001 From: Dana Date: Mon, 25 Jan 2016 13:27:38 +0000 Subject: [PATCH 3/4] Cleanup and small fixes --- node_modules/c9/format-user-analytics.js | 2 +- node_modules/c9/skip-analytics.js | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/node_modules/c9/format-user-analytics.js b/node_modules/c9/format-user-analytics.js index 28d737fb..b70517ae 100644 --- a/node_modules/c9/format-user-analytics.js +++ b/node_modules/c9/format-user-analytics.js @@ -11,7 +11,7 @@ define(function(require, exports, module) { if (!user) return {}; // empty traits get ignored var traits = { - uid: user.id || user.uid, + uid: user.id, username: user.name || user.username, email: user.email, createdAt: user.date_add, diff --git a/node_modules/c9/skip-analytics.js b/node_modules/c9/skip-analytics.js index f0f2e024..6c5fa421 100644 --- a/node_modules/c9/skip-analytics.js +++ b/node_modules/c9/skip-analytics.js @@ -12,9 +12,9 @@ define(function(require, exports, module) { function skipAnalytics(userId, name, email, allowUnauthorized) { - if (typeof userId == "object" && !name) { + if (typeof userId == "object") { var user = userId; - return skipAnalytics(user.id, user.name || user.username, user.email); // make it backwards for the client + return skipAnalytics(user.id, user.name || user.username, user.email, name); // make it backwards compatible for the client } if (!allowUnauthorized && userId === -1) return true; From 2e3b4512b27e0246e2026b555f67f89cca5d9ee2 Mon Sep 17 00:00:00 2001 From: Dana Date: Mon, 25 Jan 2016 13:30:55 +0000 Subject: [PATCH 4/4] Force skip of analytics if no id --- node_modules/c9/skip-analytics.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/node_modules/c9/skip-analytics.js b/node_modules/c9/skip-analytics.js index 6c5fa421..3c75c62d 100644 --- a/node_modules/c9/skip-analytics.js +++ b/node_modules/c9/skip-analytics.js @@ -16,10 +16,10 @@ define(function(require, exports, module) { var user = userId; return skipAnalytics(user.id, user.name || user.username, user.email, name); // make it backwards compatible for the client } + + if (!userId) return true; // users without an id should never reach the Segment library if (!allowUnauthorized && userId === -1) return true; - - if (!userId) return true; if (hasInternalTestName(name)) return true; if (hasInternalDomain(email)) return true;