Fixed invalid facebook login sessionToken

This commit is contained in:
Taylor Stine
2016-02-01 22:20:17 -05:00
parent 3978e41f02
commit 6546610567
4 changed files with 25 additions and 5 deletions

View File

@@ -237,6 +237,8 @@ RestWrite.prototype.handleFacebookAuthData = function() {
response: results[0],
location: this.location()
};
this.data.objectId = results[0].objectId;
this.data.createdWith = "facebook";
return;
}
@@ -262,7 +264,7 @@ RestWrite.prototype.handleFacebookAuthData = function() {
// The non-third-party parts of User transformation
RestWrite.prototype.transformUser = function() {
if (this.response || this.className !== '_User') {
if (this.className !== '_User') {
return;
}
@@ -273,6 +275,8 @@ RestWrite.prototype.transformUser = function() {
this.storage['token'] = token;
promise = promise.then(() => {
// TODO: Proper createdWith options, pass installationId
var expiresAt = new Date();
expiresAt.setFullYear(expiresAt.getFullYear() + 1);
var sessionData = {
sessionToken: token,
user: {
@@ -282,10 +286,15 @@ RestWrite.prototype.transformUser = function() {
},
createdWith: {
'action': 'login',
'authProvider': 'password'
'authProvider': this.data.createdWith || 'password'
},
restricted: false
restricted: false,
installationId: this.data.installationId,
expiresAt: Parse._encode(expiresAt)
};
if (this.response && this.response.response) {
this.response.response.sessionToken = token;
}
var create = new RestWrite(this.config, Auth.master(this.config),
'_Session', null, sessionData);
return create.execute();

View File

@@ -41,6 +41,14 @@ function handleFind(req) {
return rest.find(req.config, req.auth,
req.params.className, body.where, options)
.then((response) => {
if (response && response.results) {
for (result of response.results) {
if (result.sessionToken) {
result.sessionToken = req.info.sessionToken || result.sessionToken;
}
}
response.results.sessionToken
}
return {response: response};
});
}

View File

@@ -48,7 +48,7 @@ function transformKeyValue(schema, className, restKey, restValue, options) {
break;
case 'expiresAt':
case '_expiresAt':
key = '_expiresAt';
key = 'expiresAt';
timeField = true;
break;
case '_rperm':

View File

@@ -10,13 +10,16 @@ var facebook = require('./facebook');
var PromiseRouter = require('./PromiseRouter');
var rest = require('./rest');
var RestWrite = require('./RestWrite');
var deepcopy = require('deepcopy');
var router = new PromiseRouter();
// Returns a promise for a {status, response, location} object.
function handleCreate(req) {
var data = deepcopy(req.body);
data.installationId = req.info.installationId;
return rest.create(req.config, req.auth,
'_User', req.body);
'_User', data);
}
// Returns a promise for a {response} object.