File tree Expand file tree Collapse file tree 2 files changed +17
-2
lines changed Expand file tree Collapse file tree 2 files changed +17
-2
lines changed Original file line number Diff line number Diff line change @@ -3,7 +3,19 @@ import Ember from 'ember';
3
3
export default Ember . Mixin . create ( {
4
4
beforeModel : function ( transition ) {
5
5
var user = this . session . get ( 'currentUser' ) ;
6
- if ( user === null ) {
6
+ if ( user !== null ) { return ; }
7
+
8
+ // The current user is loaded asynchronously, so if we haven't actually
9
+ // loaded the current user yet then we need to wait for it to be loaded.
10
+ // Once we've done that we can retry the transition and start the whole
11
+ // process over again!
12
+ if ( ! window . currentUserDetected ) {
13
+ transition . abort ( ) ;
14
+ Ember . $ ( window ) . on ( 'currentUserDetected' , function ( ) {
15
+ Ember . $ ( window ) . off ( 'currentUserDetected' ) ;
16
+ transition . retry ( ) ;
17
+ } ) ;
18
+ } else {
7
19
this . session . set ( 'savedTransition' , transition ) ;
8
20
this . controllerFor ( 'application' ) . set ( 'nextFlashError' ,
9
21
'Please log in to proceed' ) ;
Original file line number Diff line number Diff line change @@ -7,12 +7,15 @@ export default Ember.Route.extend({
7
7
if ( this . session . get ( 'isLoggedIn' ) &&
8
8
this . session . get ( 'currentUser' ) === null )
9
9
{
10
- return ajax ( '/me' ) . then ( function ( response ) {
10
+ ajax ( '/me' ) . then ( function ( response ) {
11
11
var user = self . store . push ( 'user' , response . user ) ;
12
12
user . set ( 'api_token' , response . api_token ) ;
13
13
self . session . set ( 'currentUser' , user ) ;
14
14
} ) . catch ( function ( ) {
15
15
self . session . logoutUser ( ) ;
16
+ } ) . finally ( function ( ) {
17
+ window . currentUserDetected = true ;
18
+ Ember . $ ( window ) . trigger ( 'currentUserDetected' ) ;
16
19
} ) ;
17
20
}
18
21
} ,
You can’t perform that action at this time.
0 commit comments