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

View File

@@ -41,6 +41,14 @@ function handleFind(req) {
return rest.find(req.config, req.auth, return rest.find(req.config, req.auth,
req.params.className, body.where, options) req.params.className, body.where, options)
.then((response) => { .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}; return {response: response};
}); });
} }

View File

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

View File

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