diff --git a/spec/SessionTokenCache.spec.js b/spec/SessionTokenCache.spec.js index 6927422afa..57709e0cb0 100644 --- a/spec/SessionTokenCache.spec.js +++ b/spec/SessionTokenCache.spec.js @@ -4,13 +4,14 @@ describe('SessionTokenCache', function() { beforeEach(function(done) { var Parse = require('parse/node'); - // Mock parse - var mockUser = { - become: jasmine.createSpy('become').and.returnValue(Parse.Promise.as({ - id: 'userId' - })) - } - jasmine.mockLibrary('parse/node', 'User', mockUser); + + spyOn(Parse, "Query").and.returnValue({ + first: jasmine.createSpy("first").and.returnValue(Parse.Promise.as(new Parse.Object("_Session", { + user: new Parse.User({id:"userId"}) + }))), + equalTo: function(){} + }) + done(); }); @@ -46,7 +47,4 @@ describe('SessionTokenCache', function() { }); }); - afterEach(function() { - jasmine.restoreLibrary('parse/node', 'User'); - }); }); diff --git a/src/LiveQuery/ParseLiveQueryServer.js b/src/LiveQuery/ParseLiveQueryServer.js index 2a68f2324a..545b0d325c 100644 --- a/src/LiveQuery/ParseLiveQueryServer.js +++ b/src/LiveQuery/ParseLiveQueryServer.js @@ -37,7 +37,6 @@ class ParseLiveQueryServer { // Initialize Parse Parse.Object.disableSingleInstance(); - Parse.User.enableUnsafeCurrentUser(); const serverURL = config.serverURL || Parse.serverURL; Parse.serverURL = serverURL; @@ -363,7 +362,7 @@ class ParseLiveQueryServer { // Then get the user's roles var rolesQuery = new Parse.Query(Parse.Role); rolesQuery.equalTo("users", user); - return rolesQuery.find(); + return rolesQuery.find({useMasterKey:true}); }). then((roles) => { diff --git a/src/LiveQuery/SessionTokenCache.js b/src/LiveQuery/SessionTokenCache.js index bb7f5ab6ad..a38c951c79 100644 --- a/src/LiveQuery/SessionTokenCache.js +++ b/src/LiveQuery/SessionTokenCache.js @@ -2,6 +2,17 @@ import Parse from 'parse/node'; import LRU from 'lru-cache'; import logger from '../logger'; +function userForSessionToken(sessionToken){ + var q = new Parse.Query("_Session"); + q.equalTo("sessionToken", sessionToken); + return q.first({useMasterKey:true}).then(function(session){ + if(!session){ + return Parse.Promise.error("No session found for session token"); + } + return session.get("user"); + }); +} + class SessionTokenCache { cache: Object; @@ -21,7 +32,7 @@ class SessionTokenCache { logger.verbose('Fetch userId %s of sessionToken %s from Cache', userId, sessionToken); return Parse.Promise.as(userId); } - return Parse.User.become(sessionToken).then((user) => { + return userForSessionToken(sessionToken).then((user) => { logger.verbose('Fetch userId %s of sessionToken %s from Parse', user.id, sessionToken); const userId = user.id; this.cache.set(sessionToken, userId);