refactor routes/auth interaction so that it always calls afterSignIn()

This commit is contained in:
Sven Fuchs 2012-10-19 21:24:18 +02:00
parent 786d8ebfc6
commit c4b91108a0
6 changed files with 38 additions and 24 deletions

View File

@ -30,17 +30,22 @@ Travis.reopen
@store = Travis.Store.create() @store = Travis.Store.create()
@store.loadMany(Travis.Sponsor, Travis.SPONSORS) @store.loadMany(Travis.Sponsor, Travis.SPONSORS)
@set('auth', Travis.Auth.create(app: this, endpoint: Travis.config.api_endpoint)) # @set('auth', Travis.Auth.create(app: this, endpoint: Travis.config.api_endpoint))
@slider = new Travis.Slider() @slider = new Travis.Slider()
@pusher = new Travis.Pusher(Travis.config.pusher_key) @pusher = new Travis.Pusher(Travis.config.pusher_key)
@tailing = new Travis.Tailing() @tailing = new Travis.Tailing()
initAuth: (router, path) ->
auth = Travis.Auth.create(app: this, router: router, endpoint: Travis.config.api_endpoint)
@set('auth', auth)
auth.loadUser(path)
signIn: -> signIn: ->
@get('auth').signIn() @get('auth').signIn()
autoSignIn: -> # autoSignIn: ->
@get('auth').autoSignIn() # @get('auth').autoSignIn()
signOut: -> signOut: ->
@get('auth').signOut() @get('auth').signOut()

View File

@ -7,7 +7,7 @@
init: -> init: ->
@iframe.appendTo('body') @iframe.appendTo('body')
window.addEventListener('message', (e) => @receiveMessage(e)) window.addEventListener('message', (e) => @receiveMessage(e))
@loadUser() # @loadUser()
accessToken: (-> accessToken: (->
sessionStorage.getItem('travis.token') sessionStorage.getItem('travis.token')
@ -15,20 +15,21 @@
# if the user is in the session storage, we're using it. if we have a flag # if the user is in the session storage, we're using it. if we have a flag
# for auto signin then we're trying to sign in. # for auto signin then we're trying to sign in.
loadUser: -> loadUser: (path)->
@storeAfterSignInPath(path)
if user = sessionStorage.getItem('travis.user') if user = sessionStorage.getItem('travis.user')
@setData(user: JSON.parse(user)) @setData(user: JSON.parse(user))
else else
@autoSignIn() @autoSignIn()
# try signing in, but check later in case we have a timeout # try signing in, but check later in case we have a timeout
signIn: -> signIn: (path) ->
@set('state', 'signing-in') @set('state', 'signing-in')
@trySignIn() @trySignIn()
Ember.run.later(this, @checkSignIn.bind(this), @timeout) Ember.run.later(this, @checkSignIn.bind(this), @timeout)
autoSignIn: -> autoSignIn: (path) ->
@signIn() if localStorage.getItem('travis.auto_signin') @signIn(path) if localStorage.getItem('travis.auto_signin')
signOut: -> signOut: ->
localStorage.removeItem('travis.auto_signin') localStorage.removeItem('travis.auto_signin')
@ -52,7 +53,10 @@
user = @storeUser(data.user) if data?.user user = @storeUser(data.user) if data?.user
@set('state', if user then 'signed-in' else 'signed-out') @set('state', if user then 'signed-in' else 'signed-out')
@set('user', if user then user else undefined) @set('user', if user then user else undefined)
router.send('afterSignIn') if router = Travis.app?.get('router') @afterSignIn()
afterSignIn: ->
@get('router').send('afterSignIn', @readAfterSignInPath())
storeToken: (token) -> storeToken: (token) ->
sessionStorage.setItem('travis.token', token) sessionStorage.setItem('travis.token', token)
@ -66,6 +70,14 @@
user.get('permissions') user.get('permissions')
user user
storeAfterSignInPath: (path) ->
sessionStorage.setItem('travis.after_signin_path', path)
readAfterSignInPath: ->
path = sessionStorage.getItem('travis.after_signin_path')
sessionStorage.removeItem('travis.after_signin_path')
path
receiveMessage: (event) -> receiveMessage: (event) ->
if event.origin == @expectedOrigin() if event.origin == @expectedOrigin()
event.data.user.token = event.data.token if event.data.token event.data.user.token = event.data.token if event.data.token

View File

@ -151,19 +151,18 @@ Travis.Router = Ember.Router.extend
afterSignOut: -> afterSignOut: ->
@authorize('/') @authorize('/')
authorize: (path) ->
if !@signedIn() && @needsAuth(path)
sessionStorage.setItem('travis.after_signin_path', path)
@transitionTo('root.auth')
Travis.app.autoSignIn()
else
@transitionTo('root')
@route(path)
loading: Ember.Route.extend loading: Ember.Route.extend
routePath: (router, path) -> routePath: (router, path) ->
router.saveLineNumberHash(path) router.saveLineNumberHash(path)
router.authorize(path) router.authorize(path)
router.auth = Travis.app.initAuth(router, path)
authorize: (path) ->
if !@signedIn() && @needsAuth(path)
@transitionTo('root.auth')
else
@transitionTo('root')
@route(path)
root: Ember.Route.extend root: Ember.Route.extend
route: '/' route: '/'
@ -178,9 +177,7 @@ Travis.Router = Ember.Router.extend
router.get('authLayoutController').connectOutlet('top', 'top') router.get('authLayoutController').connectOutlet('top', 'top')
router.get('authLayoutController').connectOutlet('main', 'signin') router.get('authLayoutController').connectOutlet('main', 'signin')
afterSignIn: (router) -> afterSignIn: (router, path) ->
path = sessionStorage.getItem('travis.after_signin_path')
sessionStorage.removeItem('travis.after_signin_path')
router.route(path || '/') router.route(path || '/')
stats: Ember.Route.extend stats: Ember.Route.extend

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -1 +1 @@
392e058e 0d94ee33