File tree Expand file tree Collapse file tree 5 files changed +37
-6
lines changed Expand file tree Collapse file tree 5 files changed +37
-6
lines changed Original file line number Diff line number Diff line change @@ -197,7 +197,7 @@ export interface UserController {
197197  loginAs : ( user : ParseUser ,  userId : string )  =>  Promise < ParseUser > ; 
198198  become : ( user : ParseUser ,  options ?: RequestOptions )  =>  Promise < ParseUser > ; 
199199  hydrate : ( user : ParseUser ,  userJSON : AttributeMap )  =>  Promise < ParseUser > ; 
200-   logOut : ( options ?: RequestOptions )  =>  Promise < void > ; 
200+   logOut : ( options ?: RequestOptions   &   {   clearSession ?:  boolean   } )  =>  Promise < void > ; 
201201  me : ( user : ParseUser ,  options ?: RequestOptions )  =>  Promise < ParseUser > ; 
202202  requestPasswordReset : ( email : string ,  options ?: RequestOptions )  =>  Promise < void > ; 
203203  updateUserOnDisk : ( user : ParseUser )  =>  Promise < ParseUser > ; 
Original file line number Diff line number Diff line change @@ -812,11 +812,13 @@ class ParseUser<T extends Attributes = Attributes> extends ParseObject<T> {
812812   * <code>current</code> will return <code>null</code>. 
813813   * 
814814   * @param  {object } options 
815+    * @param  {boolean } [options.clearSession] If true, the session token will be 
816+    *   removed from the user object when the session token is invalid. 
815817   * @static  
816818   * @returns  {Promise } A promise that is resolved when the session is 
817819   *   destroyed on the server. 
818820   */ 
819-   static  logOut ( options ?: RequestOptions ) : Promise < void >  { 
821+   static  logOut ( options ?: RequestOptions   &   {   clearSession ?:  boolean   } ) : Promise < void >  { 
820822    const  controller  =  CoreManager . getUserController ( ) ; 
821823    return  controller . logOut ( options ) ; 
822824  } 
@@ -1205,10 +1207,11 @@ const DefaultController = {
12051207    } ) ; 
12061208  } , 
12071209
1208-   logOut ( options ?: RequestOptions ) : Promise < void >  { 
1210+   logOut ( options ?: RequestOptions   &   {   clearSession ?:  boolean   } ) : Promise < void >  { 
12091211    const  RESTController  =  CoreManager . getRESTController ( ) ; 
12101212    const  promiseCatch  =  e  =>  { 
1211-       if  ( e . code  ===  ParseError . INVALID_SESSION_TOKEN  &&  options . clearSession )  { 
1213+       console . log ( e ,  options ) ; 
1214+       if  ( e . code  ===  ParseError . INVALID_SESSION_TOKEN  &&  options ?. clearSession )  { 
12121215        return ; 
12131216      } 
12141217      throw  e ; 
Original file line number Diff line number Diff line change @@ -1076,6 +1076,28 @@ describe('ParseUser', () => {
10761076    await  ParseUser . logOut ( {  sessionToken : '1234' ,  clearSession : true  } ) ; 
10771077  } ) ; 
10781078
1079+   it ( 'cannot logout user with invalid session' ,  async  ( )  =>  { 
1080+     expect . assertions ( 2 ) ; 
1081+     ParseUser . disableUnsafeCurrentUser ( ) ; 
1082+     ParseUser . _clearCache ( ) ; 
1083+     Storage . _clear ( ) ; 
1084+     const  RESTController  =  { 
1085+       request ( )  { 
1086+         const  error  =  new  ParseError ( ParseError . INVALID_SESSION_TOKEN ,  'Invalid session token.' ) ; 
1087+         return  Promise . reject ( error ) ; 
1088+       } , 
1089+       ajax ( )  { } , 
1090+     } ; 
1091+     jest . spyOn ( RESTController ,  'request' ) ; 
1092+     CoreManager . setRESTController ( RESTController ) ; 
1093+     try  { 
1094+       await  ParseUser . logOut ( {  sessionToken : '1234' ,  clearSession : false  } ) ; 
1095+     }  catch  ( e )  { 
1096+       expect ( e . code ) . toBe ( ParseError . INVALID_SESSION_TOKEN ) ; 
1097+       expect ( e . message ) . toBe ( 'Invalid session token.' ) ; 
1098+     } 
1099+   } ) ; 
1100+ 
10791101  it ( 'can retreive a user with sessionToken (me)' ,  async  ( )  =>  { 
10801102    ParseUser . disableUnsafeCurrentUser ( ) ; 
10811103    ParseUser . _clearCache ( ) ; 
Original file line number Diff line number Diff line change @@ -178,7 +178,9 @@ export interface UserController {
178178    loginAs : ( user : ParseUser ,  userId : string )  =>  Promise < ParseUser > ; 
179179    become : ( user : ParseUser ,  options ?: RequestOptions )  =>  Promise < ParseUser > ; 
180180    hydrate : ( user : ParseUser ,  userJSON : AttributeMap )  =>  Promise < ParseUser > ; 
181-     logOut : ( options ?: RequestOptions )  =>  Promise < void > ; 
181+     logOut : ( options ?: RequestOptions  &  { 
182+         clearSession ?: boolean ; 
183+     } )  =>  Promise < void > ; 
182184    me : ( user : ParseUser ,  options ?: RequestOptions )  =>  Promise < ParseUser > ; 
183185    requestPasswordReset : ( email : string ,  options ?: RequestOptions )  =>  Promise < void > ; 
184186    updateUserOnDisk : ( user : ParseUser )  =>  Promise < ParseUser > ; 
Original file line number Diff line number Diff line change @@ -392,11 +392,15 @@ declare class ParseUser<T extends Attributes = Attributes> extends ParseObject<T
392392     * <code>current</code> will return <code>null</code>. 
393393     * 
394394     * @param  {object } options 
395+      * @param  {boolean } [options.clearSession] If true, the session token will be 
396+      *   removed from the user object when the session token is invalid. 
395397     * @static  
396398     * @returns  {Promise } A promise that is resolved when the session is 
397399     *   destroyed on the server. 
398400     */ 
399-     static  logOut ( options ?: RequestOptions ) : Promise < void > ; 
401+     static  logOut ( options ?: RequestOptions  &  { 
402+         clearSession ?: boolean ; 
403+     } ) : Promise < void > ; 
400404    /** 
401405     * Requests a password reset email to be sent to the specified email address 
402406     * associated with the user account. This email allows the user to securely 
 
 
   
 
     
   
   
          
    
    
     
    
      
     
     
    You can’t perform that action at this time.
  
 
    
  
    
      
        
     
       
      
     
   
 
    
    
  
 
  
 
     
    
0 commit comments