Skip to content

Commit e3098fc

Browse files
committed
Do not create sessionToken when requests come from cloudCode #1495
1 parent 759fa1a commit e3098fc

File tree

3 files changed

+22
-4
lines changed

3 files changed

+22
-4
lines changed

spec/ParseServerRESTController.spec.js

+13-1
Original file line numberDiff line numberDiff line change
@@ -92,7 +92,6 @@ describe('ParseServerRESTController', () => {
9292
userId = user.id;
9393
let sessionToken = user.getSessionToken();
9494
return Parse.User.logOut().then(() => {
95-
console.log('Sending request');
9695
return RESTController.request("GET", "/classes/_User", undefined, {useMasterKey: true});
9796
});
9897
}).then((res) => {
@@ -104,4 +103,17 @@ describe('ParseServerRESTController', () => {
104103
done();
105104
});
106105
});
106+
107+
it('ensures no session token is created on creating users', (done) => {
108+
RESTController.request("POST", "/classes/_User", {username: "hello", password: "world"}).then(() => {
109+
let query = new Parse.Query('_Session');
110+
return query.find({useMasterKey: true});
111+
}).then(sessions => {
112+
expect(sessions.length).toBe(0);
113+
done();
114+
}, (err) => {
115+
jfail(err);
116+
done();
117+
});
118+
});
107119
});

src/ParseServerRESTController.js

+4-3
Original file line numberDiff line numberDiff line change
@@ -13,17 +13,18 @@ function getSessionToken(options) {
1313

1414
function getAuth(options, config) {
1515
if (options.useMasterKey) {
16-
return Parse.Promise.as(new Auth.Auth({config, isMaster: true }));
16+
return Parse.Promise.as(new Auth.Auth({config, isMaster: true, installationId: 'cloud' }));
1717
}
1818
return getSessionToken(options).then((sessionToken) => {
1919
if (sessionToken) {
2020
options.sessionToken = sessionToken;
2121
return Auth.getAuthForSessionToken({
2222
config,
23-
sessionToken: sessionToken
23+
sessionToken: sessionToken,
24+
installationId: 'cloud'
2425
});
2526
} else {
26-
return Parse.Promise.as(new Auth.Auth({ config }));
27+
return Parse.Promise.as(new Auth.Auth({ config, installationId: 'cloud' }));
2728
}
2829
})
2930
}

src/RestWrite.js

+5
Original file line numberDiff line numberDiff line change
@@ -437,6 +437,11 @@ RestWrite.prototype.createSessionTokenIfNeeded = function() {
437437
}
438438

439439
RestWrite.prototype.createSessionToken = function() {
440+
// cloud installationId from Cloud Code,
441+
// never create session tokens from there.
442+
if (this.auth.installationId && this.auth.installationId === 'cloud') {
443+
return;
444+
}
440445
var token = 'r:' + cryptoUtils.newToken();
441446

442447
var expiresAt = this.config.generateSessionExpiresAt();

0 commit comments

Comments
 (0)