Skip to content

Commit 6546610

Browse files
committed
Fixed invalid facebook login sessionToken
1 parent 3978e41 commit 6546610

File tree

4 files changed

+25
-5
lines changed

4 files changed

+25
-5
lines changed

RestWrite.js

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -237,6 +237,8 @@ RestWrite.prototype.handleFacebookAuthData = function() {
237237
response: results[0],
238238
location: this.location()
239239
};
240+
this.data.objectId = results[0].objectId;
241+
this.data.createdWith = "facebook";
240242
return;
241243
}
242244

@@ -262,7 +264,7 @@ RestWrite.prototype.handleFacebookAuthData = function() {
262264

263265
// The non-third-party parts of User transformation
264266
RestWrite.prototype.transformUser = function() {
265-
if (this.response || this.className !== '_User') {
267+
if (this.className !== '_User') {
266268
return;
267269
}
268270

@@ -273,6 +275,8 @@ RestWrite.prototype.transformUser = function() {
273275
this.storage['token'] = token;
274276
promise = promise.then(() => {
275277
// TODO: Proper createdWith options, pass installationId
278+
var expiresAt = new Date();
279+
expiresAt.setFullYear(expiresAt.getFullYear() + 1);
276280
var sessionData = {
277281
sessionToken: token,
278282
user: {
@@ -282,10 +286,15 @@ RestWrite.prototype.transformUser = function() {
282286
},
283287
createdWith: {
284288
'action': 'login',
285-
'authProvider': 'password'
289+
'authProvider': this.data.createdWith || 'password'
286290
},
287-
restricted: false
291+
restricted: false,
292+
installationId: this.data.installationId,
293+
expiresAt: Parse._encode(expiresAt)
288294
};
295+
if (this.response && this.response.response) {
296+
this.response.response.sessionToken = token;
297+
}
289298
var create = new RestWrite(this.config, Auth.master(this.config),
290299
'_Session', null, sessionData);
291300
return create.execute();

classes.js

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,14 @@ function handleFind(req) {
4141
return rest.find(req.config, req.auth,
4242
req.params.className, body.where, options)
4343
.then((response) => {
44+
if (response && response.results) {
45+
for (result of response.results) {
46+
if (result.sessionToken) {
47+
result.sessionToken = req.info.sessionToken || result.sessionToken;
48+
}
49+
}
50+
response.results.sessionToken
51+
}
4452
return {response: response};
4553
});
4654
}

transform.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ function transformKeyValue(schema, className, restKey, restValue, options) {
4848
break;
4949
case 'expiresAt':
5050
case '_expiresAt':
51-
key = '_expiresAt';
51+
key = 'expiresAt';
5252
timeField = true;
5353
break;
5454
case '_rperm':

users.js

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,13 +10,16 @@ var facebook = require('./facebook');
1010
var PromiseRouter = require('./PromiseRouter');
1111
var rest = require('./rest');
1212
var RestWrite = require('./RestWrite');
13+
var deepcopy = require('deepcopy');
1314

1415
var router = new PromiseRouter();
1516

1617
// Returns a promise for a {status, response, location} object.
1718
function handleCreate(req) {
19+
var data = deepcopy(req.body);
20+
data.installationId = req.info.installationId;
1821
return rest.create(req.config, req.auth,
19-
'_User', req.body);
22+
'_User', data);
2023
}
2124

2225
// Returns a promise for a {response} object.

0 commit comments

Comments
 (0)