Fixed invalid facebook login sessionToken
This commit is contained in:
15
RestWrite.js
15
RestWrite.js
@@ -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();
|
||||||
|
|||||||
@@ -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};
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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':
|
||||||
|
|||||||
5
users.js
5
users.js
@@ -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.
|
||||||
|
|||||||
Reference in New Issue
Block a user