From 5d4de13cfd0deaddd84da43dd05901e3dc94da7e Mon Sep 17 00:00:00 2001 From: Raghavendra Rachamadugu Date: Mon, 18 Jul 2016 16:20:48 -0700 Subject: [PATCH] [7397] onLogout should provide connection information Adding an argument to onLogoutCallback. The callback is an object with two properties - userId and connection. I thought of loading up the user and instead have the user property, but felt like this maybe redundant. Logout hooks can always do this if they need. However one advantage of having user instead of userId is it makes it symmetric/consistent with onLogin callback. Let me know if you strongly feel we should have user instead userId.. Also extended an existing test to validate the onLogout callback gets this argument with expected user id --- packages/accounts-base/accounts_server.js | 7 ++++--- packages/accounts-base/accounts_tests.js | 8 ++++++++ 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/packages/accounts-base/accounts_server.js b/packages/accounts-base/accounts_server.js index dbffd61e64..88e785758d 100644 --- a/packages/accounts-base/accounts_server.js +++ b/packages/accounts-base/accounts_server.js @@ -176,9 +176,10 @@ Ap._failedLogin = function (connection, attempt) { }); }; -Ap._successfulLogout = function () { +Ap._successfulLogout = function (connection, userId) { + var logoutContext = { userId: userId, connection: connection }; this._onLogoutHook.each(function (callback) { - callback(); + callback(logoutContext); return true; }); }; @@ -537,8 +538,8 @@ Ap._initServerMethods = function () { accounts._setLoginToken(this.userId, this.connection, null); if (token && this.userId) accounts.destroyToken(this.userId, token); + accounts._successfulLogout(this.connection, this.userId); this.setUserId(null); - accounts._successfulLogout(); }; // Delete all the current user's tokens and close all open connections logged diff --git a/packages/accounts-base/accounts_tests.js b/packages/accounts-base/accounts_tests.js index bb8774b7b1..cc56f03a57 100644 --- a/packages/accounts-base/accounts_tests.js +++ b/packages/accounts-base/accounts_tests.js @@ -388,6 +388,9 @@ Tinytest.add( var onLoginStopper = Accounts.onLogin(function(attempt) { test.equal(Meteor.userId(), onLoginExpectedUserId, "onLogin"); }); + var onLogoutStopper = Accounts.onLogout(function(logoutContext) { + test.equal(logoutContext.userId, onLogoutExpectedUserId, "onLogout"); + }); var onLoginFailureStopper = Accounts.onLoginFailure(function(attempt) { test.equal(Meteor.userId(), onLoginFailureExpectedUserId, "onLoginFailure"); }); @@ -408,9 +411,14 @@ Tinytest.add( var onLoginFailureExpectedUserId = userId; test.throws(function() { conn.call('login', { resume: "bogus" }) }, '403'); + // Trigger onLogout callbacks + var onLogoutExpectedUserId = userId; + conn.call('logout'); + conn.disconnect(); validateStopper.stop(); onLoginStopper.stop(); + onLogoutStopper.stop(); onLoginFailureStopper.stop(); } );