Always refresh a user record when page is loaded

This commit is contained in:
Piotr Sarnacki 2015-06-16 17:54:55 +02:00
parent fb4b39f8af
commit 78580c1e76
2 changed files with 26 additions and 15 deletions

View File

@ -5,6 +5,11 @@
Route = TravisRoute.extend BuildFaviconMixin, Route = TravisRoute.extend BuildFaviconMixin,
needsAuth: false needsAuth: false
beforeModel: ->
@_super.apply(this, arguments)
@get('auth').refreshUserData()
renderTemplate: -> renderTemplate: ->
if @get('config').pro if @get('config').pro
$('body').addClass('pro') $('body').addClass('pro')

View File

@ -79,18 +79,26 @@ Auth = Ember.Object.extend
@set('state', 'signed-in') @set('state', 'signed-in')
Travis.trigger('user:signed_in', data.user) Travis.trigger('user:signed_in', data.user)
@sendToApp('afterSignIn') @sendToApp('afterSignIn')
@refreshUserData(data.user)
refreshUserData: (user) -> refreshUserData: (user) ->
Ajax.get "/users/#{user.id}", (data) => unless user
@store.pushPayload(users: [data.user]) if data = @userDataFrom(@sessionStorage) || @userDataFrom(@storage)
# if user is still signed in, update saved data user = data.user
if @get('signedIn')
data.user.token = user.token if user
@storeData(data, @sessionStorage) Ajax.get "/users/#{user.id}", (data) =>
@storeData(data, @storage) if data.user.correct_scopes
, (status, xhr) => userRecord = @loadUser(data.user)
@signOut() if status == 403 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: (-> signedIn: (->
@get('state') == 'signed-in' @get('state') == 'signed-in'
@ -110,9 +118,7 @@ Auth = Ember.Object.extend
loadUser: (user) -> loadUser: (user) ->
@store.pushPayload(users: [user]) @store.pushPayload(users: [user])
user = @store.recordForId('user', user.id) @store.recordForId('user', user.id)
user.get('permissions')
user
receiveMessage: (event) -> receiveMessage: (event) ->
if event.origin == @expectedOrigin() 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 # 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 # we treat both cases behave the same in terms of sent events which I think
# makes it more complicated than it should be). # makes it more complicated than it should be).
controller = @container.lookup('controller:auth') router = @container.lookup('router:main')
try try
controller.send(name) router.send(name)
catch error catch error
unless error.message =~ /Can't trigger action/ unless error.message =~ /Can't trigger action/
throw error throw error