@@ -229,6 +229,7 @@ RestWrite.prototype.handleFacebookAuthData = function() {
229
229
this . className ,
230
230
{ 'authData.facebook.id' : facebookData . id } , { } ) ;
231
231
} ) . then ( ( results ) => {
232
+ this . storage [ 'authProvider' ] = "facebook" ;
232
233
if ( results . length > 0 ) {
233
234
if ( ! this . query ) {
234
235
// We're signing up, but this user already exists. Short-circuit
@@ -237,6 +238,7 @@ RestWrite.prototype.handleFacebookAuthData = function() {
237
238
response : results [ 0 ] ,
238
239
location : this . location ( )
239
240
} ;
241
+ this . data . objectId = results [ 0 ] . objectId ;
240
242
return ;
241
243
}
242
244
@@ -249,6 +251,8 @@ RestWrite.prototype.handleFacebookAuthData = function() {
249
251
// We're trying to create a duplicate FB auth. Forbid it
250
252
throw new Parse . Error ( Parse . Error . ACCOUNT_ALREADY_LINKED ,
251
253
'this auth is already used' ) ;
254
+ } else {
255
+ this . data . username = rack ( ) ;
252
256
}
253
257
254
258
// This FB auth does not already exist, so transform it to a
@@ -262,7 +266,7 @@ RestWrite.prototype.handleFacebookAuthData = function() {
262
266
263
267
// The non-third-party parts of User transformation
264
268
RestWrite . prototype . transformUser = function ( ) {
265
- if ( this . response || this . className !== '_User' ) {
269
+ if ( this . className !== '_User' ) {
266
270
return ;
267
271
}
268
272
@@ -272,7 +276,8 @@ RestWrite.prototype.transformUser = function() {
272
276
var token = 'r:' + rack ( ) ;
273
277
this . storage [ 'token' ] = token ;
274
278
promise = promise . then ( ( ) => {
275
- // TODO: Proper createdWith options, pass installationId
279
+ var expiresAt = new Date ( ) ;
280
+ expiresAt . setFullYear ( expiresAt . getFullYear ( ) + 1 ) ;
276
281
var sessionData = {
277
282
sessionToken : token ,
278
283
user : {
@@ -282,10 +287,15 @@ RestWrite.prototype.transformUser = function() {
282
287
} ,
283
288
createdWith : {
284
289
'action' : 'login' ,
285
- 'authProvider' : 'password'
290
+ 'authProvider' : this . storage [ 'authProvider' ] || 'password'
286
291
} ,
287
- restricted : false
292
+ restricted : false ,
293
+ installationId : this . data . installationId ,
294
+ expiresAt : Parse . _encode ( expiresAt )
288
295
} ;
296
+ if ( this . response && this . response . response ) {
297
+ this . response . response . sessionToken = token ;
298
+ }
289
299
var create = new RestWrite ( this . config , Auth . master ( this . config ) ,
290
300
'_Session' , null , sessionData ) ;
291
301
return create . execute ( ) ;
@@ -404,6 +414,8 @@ RestWrite.prototype.handleSession = function() {
404
414
405
415
if ( ! this . query && ! this . auth . isMaster ) {
406
416
var token = 'r:' + rack ( ) ;
417
+ var expiresAt = new Date ( ) ;
418
+ expiresAt . setFullYear ( expiresAt . getFullYear ( ) + 1 ) ;
407
419
var sessionData = {
408
420
sessionToken : token ,
409
421
user : {
@@ -415,7 +427,7 @@ RestWrite.prototype.handleSession = function() {
415
427
'action' : 'create'
416
428
} ,
417
429
restricted : true ,
418
- expiresAt : 0
430
+ expiresAt : Parse . _encode ( expiresAt )
419
431
} ;
420
432
for ( var key in this . data ) {
421
433
if ( key == 'objectId' ) {
0 commit comments