From 78580c1e761966ad22c0f390ce884a85981ae450 Mon Sep 17 00:00:00 2001 From: Piotr Sarnacki Date: Tue, 16 Jun 2015 17:54:55 +0200 Subject: [PATCH] Always refresh a user record when page is loaded --- app/routes/application.coffee | 5 +++++ app/utils/auth.coffee | 36 ++++++++++++++++++++--------------- 2 files changed, 26 insertions(+), 15 deletions(-) diff --git a/app/routes/application.coffee b/app/routes/application.coffee index 9838bfc5..de66f55e 100644 --- a/app/routes/application.coffee +++ b/app/routes/application.coffee @@ -5,6 +5,11 @@ Route = TravisRoute.extend BuildFaviconMixin, needsAuth: false + beforeModel: -> + @_super.apply(this, arguments) + + @get('auth').refreshUserData() + renderTemplate: -> if @get('config').pro $('body').addClass('pro') diff --git a/app/utils/auth.coffee b/app/utils/auth.coffee index 11d22f46..15d823d1 100644 --- a/app/utils/auth.coffee +++ b/app/utils/auth.coffee @@ -79,18 +79,26 @@ Auth = Ember.Object.extend @set('state', 'signed-in') Travis.trigger('user:signed_in', data.user) @sendToApp('afterSignIn') - @refreshUserData(data.user) refreshUserData: (user) -> - Ajax.get "/users/#{user.id}", (data) => - @store.pushPayload(users: [data.user]) - # if user is still signed in, update saved data - if @get('signedIn') - data.user.token = user.token - @storeData(data, @sessionStorage) - @storeData(data, @storage) - , (status, xhr) => - @signOut() if status == 403 + unless user + if data = @userDataFrom(@sessionStorage) || @userDataFrom(@storage) + user = data.user + + if user + Ajax.get "/users/#{user.id}", (data) => + if data.user.correct_scopes + userRecord = @loadUser(data.user) + userRecord.get('permissions') + # if user is still signed in, update saved data + if @get('signedIn') + data.user.token = user.token + @storeData(data, @sessionStorage) + @storeData(data, @storage) + else + @signOut() + , (status, xhr) => + @signOut() if status == 403 signedIn: (-> @get('state') == 'signed-in' @@ -110,9 +118,7 @@ Auth = Ember.Object.extend loadUser: (user) -> @store.pushPayload(users: [user]) - user = @store.recordForId('user', user.id) - user.get('permissions') - user + @store.recordForId('user', user.id) receiveMessage: (event) -> if event.origin == @expectedOrigin() @@ -134,9 +140,9 @@ Auth = Ember.Object.extend # as a direct response to either manual sign in or autoSignIn (right now # we treat both cases behave the same in terms of sent events which I think # makes it more complicated than it should be). - controller = @container.lookup('controller:auth') + router = @container.lookup('router:main') try - controller.send(name) + router.send(name) catch error unless error.message =~ /Can't trigger action/ throw error