showUnauthenticated after signout
This commit is contained in:
parent
b34e35fbb8
commit
f6ac7b9c30
|
@ -30,7 +30,7 @@ Travis.reopen
|
|||
@store = Travis.Store.create()
|
||||
@store.loadMany(Travis.Sponsor, Travis.SPONSORS)
|
||||
|
||||
@set('auth', Travis.Auth.create(store: @store, endpoint: Travis.config.api_endpoint))
|
||||
@set('auth', Travis.Auth.create(app: this, endpoint: Travis.config.api_endpoint))
|
||||
|
||||
@slider = new Travis.Slider()
|
||||
@pusher = new Travis.Pusher(Travis.config.pusher)
|
||||
|
@ -41,7 +41,7 @@ Travis.reopen
|
|||
|
||||
signOut: ->
|
||||
@get('auth').signOut()
|
||||
@get('router').send('showAuthenticated')
|
||||
@get('router').send('goToRoot')
|
||||
|
||||
receive: ->
|
||||
@store.receive.apply(@store, arguments)
|
||||
|
|
|
@ -16,9 +16,9 @@
|
|||
# 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.
|
||||
loadUser: ->
|
||||
if user = sessionStorage?.getItem('travis.user')
|
||||
if user = sessionStorage.getItem('travis.user')
|
||||
@setData(user: JSON.parse(user))
|
||||
else if localStorage?.getItem('travis.auto_signin')
|
||||
else if localStorage.getItem('travis.auto_signin')
|
||||
@trySignIn()
|
||||
|
||||
# try signing in, but check later in case we have a timeout
|
||||
|
@ -34,7 +34,7 @@
|
|||
@forceSignIn() if @get('state') == 'signing-in'
|
||||
|
||||
forceSignIn: ->
|
||||
localStorage?.setItem('travis.auto_signin', 'true')
|
||||
localStorage.setItem('travis.auto_signin', 'true')
|
||||
window.location = "#{@endpoint}/auth/handshake?redirect_uri=#{location}"
|
||||
|
||||
signOut: ->
|
||||
|
@ -48,16 +48,18 @@
|
|||
user = @storeUser(data.user) if data?.user
|
||||
@set('state', if user then 'signed-in' else 'signed-out')
|
||||
@set('user', if user then user else undefined)
|
||||
@app.get('router').transitionTo('authenticated') if @app.get('router')
|
||||
# Travis.app.get('router').route(@get('returnTo'))
|
||||
|
||||
storeToken: (token) ->
|
||||
sessionStorage?.setItem('travis.token', token)
|
||||
sessionStorage.setItem('travis.token', token)
|
||||
@notifyPropertyChange('accessToken')
|
||||
|
||||
storeUser: (user) ->
|
||||
localStorage?.setItem('travis.auto_signin', 'true')
|
||||
sessionStorage?.setItem('travis.user', JSON.stringify(user))
|
||||
@store.load(Travis.User, user)
|
||||
@store.find(Travis.User, user.id)
|
||||
localStorage.setItem('travis.auto_signin', 'true')
|
||||
sessionStorage.setItem('travis.user', JSON.stringify(user))
|
||||
@app.store.load(Travis.User, user)
|
||||
@app.store.find(Travis.User, user.id)
|
||||
|
||||
receiveMessage: (event) ->
|
||||
if event.origin == @expectedOrigin()
|
||||
|
|
|
@ -18,10 +18,12 @@ Travis.reopen
|
|||
|
||||
TopController: Em.Controller.extend
|
||||
userBinding: 'Travis.app.currentUser'
|
||||
|
||||
ApplicationController: Em.Controller.extend()
|
||||
MainController: Em.Controller.extend()
|
||||
StatsLayoutController: Em.Controller.extend()
|
||||
ProfileLayoutController: Em.Controller.extend()
|
||||
AuthLayoutController: Em.Controller.extend()
|
||||
|
||||
require 'controllers/accounts'
|
||||
require 'controllers/builds'
|
||||
|
|
|
@ -1,16 +1,18 @@
|
|||
Travis.Router = Ember.Router.extend
|
||||
location: 'history'
|
||||
enableLogging: false
|
||||
enableLogging: true
|
||||
initialState: 'loading'
|
||||
|
||||
goToRoot: Ember.Route.transitionTo('root.home.show')
|
||||
goToStats: Ember.Route.transitionTo('root.stats')
|
||||
|
||||
showRepository: Ember.Route.transitionTo('root.home.repository.show')
|
||||
showBuilds: Ember.Route.transitionTo('root.home.repository.builds.index')
|
||||
showBuild: Ember.Route.transitionTo('root.home.repository.builds.show')
|
||||
showPullRequests: Ember.Route.transitionTo('root.home.repository.pullRequests')
|
||||
showBranches: Ember.Route.transitionTo('root.home.repository.branches')
|
||||
showJob: Ember.Route.transitionTo('root.home.repository.job')
|
||||
|
||||
showProfile: Ember.Route.transitionTo('root.profile')
|
||||
showAccount: Ember.Route.transitionTo('root.profile.account')
|
||||
showUserProfile: Ember.Route.transitionTo('root.profile.account.profile')
|
||||
|
@ -18,44 +20,37 @@ Travis.Router = Ember.Router.extend
|
|||
signedIn: ->
|
||||
!!Travis.app.get('auth.user')
|
||||
|
||||
requiresAuth: (path) ->
|
||||
path == '/profile' && !@signedIn()
|
||||
needsAuth: (path) ->
|
||||
path.indexOf('/profile') == 0 && !@signedIn()
|
||||
|
||||
loading: Ember.Route.extend
|
||||
routePath: (router, path) ->
|
||||
router.set('lastAttemptedPath', path)
|
||||
if router.requiresAuth(path)
|
||||
router.send 'showUnauthenticated'
|
||||
sessionStorage.setItem('travis.path', path)
|
||||
if router.needsAuth(path)
|
||||
router.transitionTo('root.auth')
|
||||
Travis.app.signIn()
|
||||
else
|
||||
router.send 'showAuthenticated'
|
||||
|
||||
# showUnauthenticated: Ember.State.transitionTo('unauthenticated.index')
|
||||
showUnauthenticated: Ember.State.transitionTo('root.home.show')
|
||||
showAuthenticated: Ember.State.transitionTo('authenticated.index')
|
||||
|
||||
# unauthenticated: Ember.Route.extend
|
||||
# index: Ember.Route.extend
|
||||
# route: '/'
|
||||
# connectOutlets: (router) ->
|
||||
# router.transitionTo('login')
|
||||
# login: Ember.Route.extend
|
||||
# route: '/login'
|
||||
# connectOutlets: (router) ->
|
||||
# router.get('applicationController').connectOutlet('login')
|
||||
router.transitionTo('authenticated')
|
||||
|
||||
authenticated: Ember.Route.extend
|
||||
index: Ember.Route.extend
|
||||
connectOutlets: (router) ->
|
||||
router.transitionTo('root')
|
||||
|
||||
path = router.get('lastAttemptedPath')
|
||||
if path && path != '/'
|
||||
router.route(path)
|
||||
connectOutlets: (router) ->
|
||||
path = sessionStorage.getItem('travis.path')
|
||||
sessionStorage.removeItem('travis.path')
|
||||
router.transitionTo('root')
|
||||
router.route(path) if path
|
||||
|
||||
root: Ember.Route.extend
|
||||
initialState: 'home'
|
||||
loading: Ember.State.extend()
|
||||
|
||||
auth: Ember.Route.extend
|
||||
route: '/auth'
|
||||
connectOutlets: (router) ->
|
||||
router.get('applicationController').connectOutlet('authLayout')
|
||||
$('body').attr('id', 'auth')
|
||||
router.get('authLayoutController').connectOutlet('top', 'top')
|
||||
router.get('authLayoutController').connectOutlet('main', 'signin')
|
||||
|
||||
stats: Ember.Route.extend
|
||||
route: '/stats'
|
||||
connectOutlets: (router) ->
|
||||
|
|
13
assets/scripts/app/templates/auth/signin.hbs
Normal file
13
assets/scripts/app/templates/auth/signin.hbs
Normal file
|
@ -0,0 +1,13 @@
|
|||
{{#if view.signingIn}}
|
||||
<h1>Signing in</h1>
|
||||
<p>
|
||||
Trying to authenticate with GitHub.
|
||||
</p>
|
||||
{{else}}
|
||||
<h1>Sign in</h1>
|
||||
<p>
|
||||
<a href="#" {{action signIn target="Travis.app"}}>Sign in with GitHub</a>
|
||||
</p>
|
||||
{{/if}}
|
||||
|
||||
|
|
@ -7,6 +7,7 @@ require 'ext/ember/namespace'
|
|||
|
||||
@Travis.reopen
|
||||
HomeView: Travis.View.extend(templateName: 'layouts/home')
|
||||
AuthLayoutView: Travis.View.extend(templateName: 'layouts/simple')
|
||||
ProfileLayoutView: Travis.View.extend(templateName: 'layouts/profile')
|
||||
StatsLayoutView: Travis.View.extend(templateName: 'layouts/simple')
|
||||
ApplicationView: Travis.View.extend(templateName: 'application')
|
||||
|
@ -18,5 +19,5 @@ require 'views/repo'
|
|||
require 'views/profile'
|
||||
require 'views/sidebar'
|
||||
require 'views/stats'
|
||||
require 'views/signin'
|
||||
require 'views/top'
|
||||
|
||||
|
|
7
assets/scripts/app/views/signin.coffee
Normal file
7
assets/scripts/app/views/signin.coffee
Normal file
|
@ -0,0 +1,7 @@
|
|||
@Travis.reopen
|
||||
SigninView: Travis.View.extend
|
||||
templateName: 'auth/signin'
|
||||
|
||||
signingIn: (->
|
||||
Travis.app.get('authState')
|
||||
).property('Travis.app.authState')
|
File diff suppressed because one or more lines are too long
8
public/scripts/app.min.js
vendored
8
public/scripts/app.min.js
vendored
|
@ -2224,9 +2224,9 @@ e.readyState=="complete")&&t()})}function t(t,n){var r=document.getElementsByTag
|
|||
("views"),minispade.require("config/locales"),minispade.require("data/sponsors"),Travis.reopen({App:Em.Application.extend({autoinit:!1,currentUserBinding:"auth.user",authStateBinding:"auth.state",init:
|
||||
function(){return this._super.apply(this,arguments),this.store=Travis.Store.create(),this.store.loadMany(Travis.Sponsor,Travis.SPONSORS),this.set("auth",Travis.Auth.create({store:this.store,endpoint:Travis
|
||||
.config.api_endpoint})),this.slider=new Travis.Slider,this.pusher=new Travis.Pusher(Travis.config.pusher),this.tailing=new Travis.Tailing},signIn:function(){return this.get("auth").signIn()},signOut:function(
|
||||
){return this.get("auth").signOut(),this.get("router").send("showAuthenticated")},receive:function(){return this.store.receive.apply(this.store,arguments)},toggleSidebar:function(){var e;return $("body"
|
||||
).toggleClass("maximized"),e=$("<span></span>"),$("#top .profile").append(e),Em.run.later(function(){return e.remove()},10),e=$("<span></span>"),$("#repository").append(e),Em.run.later(function(){return e
|
||||
.remove()},10)}})})}).call(this)}),minispade.register("auth",function(){(function(){this.Travis.Auth=Ember.Object.extend({iframe:$('<iframe id="auth-frame" />').hide(),timeout:5e3,state:"signed-out",receivingEnd
|
||||
){return this.get("auth").signOut(),this.get("router").send("goToRoot")},receive:function(){return this.store.receive.apply(this.store,arguments)},toggleSidebar:function(){var e;return $("body").toggleClass
|
||||
("maximized"),e=$("<span></span>"),$("#top .profile").append(e),Em.run.later(function(){return e.remove()},10),e=$("<span></span>"),$("#repository").append(e),Em.run.later(function(){return e.remove()}
|
||||
,10)}})})}).call(this)}),minispade.register("auth",function(){(function(){this.Travis.Auth=Ember.Object.extend({iframe:$('<iframe id="auth-frame" />').hide(),timeout:5e3,state:"signed-out",receivingEnd
|
||||
:""+location.protocol+"//"+location.host,init:function(){var e=this;return this.iframe.appendTo("body"),window.addEventListener("message",function(t){return e.receiveMessage(t)}),this.loadUser()},accessToken
|
||||
:function(){return sessionStorage.getItem("travis.token")}.property(),loadUser:function(){var e;if(e=typeof sessionStorage!="undefined"&&sessionStorage!==null?sessionStorage.getItem("travis.user"):void 0
|
||||
)return this.setData({user:JSON.parse(e)});if(typeof localStorage!="undefined"&&localStorage!==null?localStorage.getItem("travis.auto_signin"):void 0)return this.trySignIn()},signIn:function(){return this
|
||||
|
@ -2366,7 +2366,7 @@ e,n){return t.receive(e,n)})},unsubscribe:function(e){var t;t=this.active_channe
|
|||
(e,t)})},normalize:function(e,t){switch(e){case"build:started":case"build:finished":return t;case"job:created":case"job:started":case"job:finished":case"job:log":return t.queue&&(t.queue=t.queue.replace
|
||||
("builds.","")),{job:t};case"worker:added":case"worker:updated":case"worker:removed":return{worker:t}}},warn:function(e,t){if(!this.ignoreWarning(t))return console.warn(t)},ignoreWarning:function(e){var t
|
||||
,n;if(t=(n=e.data)!=null?n.message:void 0)return t.indexOf("Existing subscription")===0||t.indexOf("No current subscription")===0}})}).call(this)}),minispade.register("routes",function(){(function(){Travis
|
||||
.Router=Ember.Router.extend({location:"history",enableLogging:!1,initialState:"loading",goToRoot:Ember.Route.transitionTo("root.home.show"),goToStats:Ember.Route.transitionTo("root.stats"),showRepository
|
||||
.Router=Ember.Router.extend({location:"history",enableLogging:!0,initialState:"loading",goToRoot:Ember.Route.transitionTo("root.home.show"),goToStats:Ember.Route.transitionTo("root.stats"),showRepository
|
||||
:Ember.Route.transitionTo("root.home.repository.show"),showBuilds:Ember.Route.transitionTo("root.home.repository.builds.index"),showBuild:Ember.Route.transitionTo("root.home.repository.builds.show"),showPullRequests
|
||||
:Ember.Route.transitionTo("root.home.repository.pullRequests"),showBranches:Ember.Route.transitionTo("root.home.repository.branches"),showJob:Ember.Route.transitionTo("root.home.repository.job"),showProfile
|
||||
:Ember.Route.transitionTo("root.profile"),showAccount:Ember.Route.transitionTo("root.profile.account"),showUserProfile:Ember.Route.transitionTo("root.profile.account.profile"),signedIn:function(){return!!
|
||||
|
|
|
@ -1 +1 @@
|
|||
d2d014c4
|
||||
096c4ea9
|
Loading…
Reference in New Issue
Block a user