Bring back afterSignIn and afterSignIn as actions sent to controller
It seems that there is more use cases to cover with this behaviour, for example when someone enters /auth directly and logs in from there.
This commit is contained in:
parent
9dd198ed75
commit
3b1cd4f5c4
|
@ -18,8 +18,7 @@ Auth = Ember.Object.extend
|
||||||
if user = @get('currentUser')
|
if user = @get('currentUser')
|
||||||
user.unload()
|
user.unload()
|
||||||
@set('currentUser', null)
|
@set('currentUser', null)
|
||||||
if hooksTarget = @get('hooksTarget')
|
@sendToApp('afterSignOut')
|
||||||
hooksTarget.afterSignOut()
|
|
||||||
|
|
||||||
signIn: (data) ->
|
signIn: (data) ->
|
||||||
if data
|
if data
|
||||||
|
@ -64,9 +63,7 @@ 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)
|
||||||
# TODO: I would like to get rid of this dependency in the future
|
@sendToApp('afterSignIn')
|
||||||
if hooksTarget = @get('hooksTarget')
|
|
||||||
hooksTarget.afterSignIn()
|
|
||||||
|
|
||||||
refreshUserData: (user) ->
|
refreshUserData: (user) ->
|
||||||
Travis.ajax.get "/users/#{user.id}", (data) =>
|
Travis.ajax.get "/users/#{user.id}", (data) =>
|
||||||
|
@ -113,6 +110,21 @@ Auth = Ember.Object.extend
|
||||||
endpoint = @get('endpoint')
|
endpoint = @get('endpoint')
|
||||||
if endpoint[0] == '/' then @receivingEnd else endpoint
|
if endpoint[0] == '/' then @receivingEnd else endpoint
|
||||||
|
|
||||||
|
sendToApp: (name) ->
|
||||||
|
# TODO: this is an ugly solution, we need to do one of 2 things:
|
||||||
|
# * find a way to check if we can already send an event to remove try/catch
|
||||||
|
# * remove afterSignIn and afterSignOut events by replacing them in a more
|
||||||
|
# straightforward code - we can do what's needed on a routes/controller level
|
||||||
|
# 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')
|
||||||
|
try
|
||||||
|
controller.send(name)
|
||||||
|
catch error
|
||||||
|
unless error.message =~ /Can't trigger action/
|
||||||
|
throw error
|
||||||
|
|
||||||
Ember.onLoad 'Ember.Application', (Application) ->
|
Ember.onLoad 'Ember.Application', (Application) ->
|
||||||
Application.initializer
|
Application.initializer
|
||||||
name: "auth",
|
name: "auth",
|
||||||
|
|
|
@ -13,6 +13,18 @@ Travis.TopController = Em.Controller.extend
|
||||||
"#{location.protocol}//www.gravatar.com/avatar/#{@get('user.gravatarId')}?s=48&d=mm"
|
"#{location.protocol}//www.gravatar.com/avatar/#{@get('user.gravatarId')}?s=48&d=mm"
|
||||||
).property('user.gravatarId')
|
).property('user.gravatarId')
|
||||||
|
|
||||||
|
signedIn: (->
|
||||||
|
Travis.get('authState') == 'signed-in'
|
||||||
|
).property('Travis.authState')
|
||||||
|
|
||||||
|
signedOut: (->
|
||||||
|
Travis.get('authState') == 'signed-out'
|
||||||
|
).property('Travis.authState')
|
||||||
|
|
||||||
|
signingIn: (->
|
||||||
|
Travis.get('authState') == 'signing-in'
|
||||||
|
).property('Travis.authState')
|
||||||
|
|
||||||
Travis.ApplicationController = Em.Controller.extend
|
Travis.ApplicationController = Em.Controller.extend
|
||||||
templateName: 'layouts/home'
|
templateName: 'layouts/home'
|
||||||
|
|
||||||
|
@ -26,7 +38,7 @@ Travis.StatsLayoutController = Em.Controller.extend()
|
||||||
Travis.ProfileLayoutController = Em.Controller.extend()
|
Travis.ProfileLayoutController = Em.Controller.extend()
|
||||||
Travis.AuthLayoutController = Em.Controller.extend()
|
Travis.AuthLayoutController = Em.Controller.extend()
|
||||||
|
|
||||||
Travis.AccountProfileController = Em.Controller.extend
|
Travis.ProfileInfoController = Em.Controller.extend
|
||||||
needs: ['currentUser', 'repos']
|
needs: ['currentUser', 'repos']
|
||||||
userBinding: 'controllers.currentUser'
|
userBinding: 'controllers.currentUser'
|
||||||
|
|
||||||
|
@ -49,6 +61,7 @@ Travis.RepoSettingsController = Em.ObjectController.extend
|
||||||
Travis.flash(error: 'There was an error while saving settings. Please try again.')
|
Travis.flash(error: 'There was an error while saving settings. Please try again.')
|
||||||
|
|
||||||
require 'controllers/accounts'
|
require 'controllers/accounts'
|
||||||
|
require 'controllers/auth'
|
||||||
require 'controllers/build'
|
require 'controllers/build'
|
||||||
require 'controllers/builds'
|
require 'controllers/builds'
|
||||||
require 'controllers/flash'
|
require 'controllers/flash'
|
||||||
|
@ -59,6 +72,5 @@ require 'controllers/repos'
|
||||||
require 'controllers/repo'
|
require 'controllers/repo'
|
||||||
require 'controllers/stats'
|
require 'controllers/stats'
|
||||||
require 'controllers/current_user'
|
require 'controllers/current_user'
|
||||||
require 'controllers/account_index'
|
|
||||||
require 'controllers/request'
|
require 'controllers/request'
|
||||||
require 'controllers/requests'
|
require 'controllers/requests'
|
||||||
|
|
1
assets/scripts/app/controllers/auth.coffee
Normal file
1
assets/scripts/app/controllers/auth.coffee
Normal file
|
@ -0,0 +1 @@
|
||||||
|
Travis.AuthController = Travis.Controller.extend()
|
|
@ -24,19 +24,6 @@ Travis.Route = Ember.Route.extend
|
||||||
@controllerFor('currentUser').get('content')
|
@controllerFor('currentUser').get('content')
|
||||||
|
|
||||||
Travis.ApplicationRoute = Travis.Route.extend
|
Travis.ApplicationRoute = Travis.Route.extend
|
||||||
init: ->
|
|
||||||
@_super.apply this, arguments
|
|
||||||
|
|
||||||
@auth.set('hooksTarget', this)
|
|
||||||
|
|
||||||
afterSignIn: ->
|
|
||||||
if transition = @auth.get('afterSignInTransition')
|
|
||||||
@auth.set('afterSignInTransition', null)
|
|
||||||
transition.retry()
|
|
||||||
|
|
||||||
afterSignOut: ->
|
|
||||||
@transitionTo('index.current')
|
|
||||||
|
|
||||||
actions:
|
actions:
|
||||||
redirectToGettingStarted: ->
|
redirectToGettingStarted: ->
|
||||||
# do nothing, we handle it only in index path
|
# do nothing, we handle it only in index path
|
||||||
|
@ -46,7 +33,7 @@ Travis.ApplicationRoute = Travis.Route.extend
|
||||||
|
|
||||||
error: (error) ->
|
error: (error) ->
|
||||||
if error == 'needs-auth'
|
if error == 'needs-auth'
|
||||||
authController = @container.lookup('controller:auth') || @generateController('auth')
|
authController = @container.lookup('controller:auth')
|
||||||
authController.set('redirected', true)
|
authController.set('redirected', true)
|
||||||
@transitionTo('auth')
|
@transitionTo('auth')
|
||||||
else
|
else
|
||||||
|
@ -55,6 +42,14 @@ Travis.ApplicationRoute = Travis.Route.extend
|
||||||
renderFirstSync: ->
|
renderFirstSync: ->
|
||||||
@renderFirstSync()
|
@renderFirstSync()
|
||||||
|
|
||||||
|
afterSignIn: ->
|
||||||
|
if transition = @auth.get('afterSignInTransition')
|
||||||
|
@auth.set('afterSignInTransition', null)
|
||||||
|
transition.retry()
|
||||||
|
|
||||||
|
afterSignOut: ->
|
||||||
|
@transitionTo('index.current')
|
||||||
|
|
||||||
Travis.Router.map ->
|
Travis.Router.map ->
|
||||||
@resource 'index', path: '/', ->
|
@resource 'index', path: '/', ->
|
||||||
@resource 'getting_started'
|
@resource 'getting_started'
|
||||||
|
@ -394,9 +389,10 @@ Travis.AuthRoute = Travis.Route.extend
|
||||||
deactivate: ->
|
deactivate: ->
|
||||||
@controllerFor('auth').set('redirected', false)
|
@controllerFor('auth').set('redirected', false)
|
||||||
|
|
||||||
redirect: ->
|
actions:
|
||||||
if @auth.get('signedIn')
|
afterSignIn: ->
|
||||||
@transitionTo('index.current')
|
@transitionTo('index.current')
|
||||||
|
return true
|
||||||
|
|
||||||
Travis.RepoSettingsRoute = Travis.Route.extend
|
Travis.RepoSettingsRoute = Travis.Route.extend
|
||||||
setupController: (controller, model) ->
|
setupController: (controller, model) ->
|
||||||
|
|
Loading…
Reference in New Issue
Block a user