separate session storage of user and token, do stuff
This commit is contained in:
parent
abb5ed181e
commit
40260c17d5
|
@ -17,7 +17,7 @@
|
|||
# for auto signin then we're trying to sign in.
|
||||
loadUser: ->
|
||||
if user = sessionStorage?.getItem('travis.user')
|
||||
@setUser(user)
|
||||
@setData(user: JSON.parse(user))
|
||||
else if localStorage?.getItem('travis.auto_signin')
|
||||
@trySignIn()
|
||||
|
||||
|
@ -40,25 +40,28 @@
|
|||
signOut: ->
|
||||
localStorage?.clear()
|
||||
sessionStorage?.clear()
|
||||
@setUser()
|
||||
@setData()
|
||||
|
||||
setUser: (data) ->
|
||||
setData: (data) ->
|
||||
data = JSON.parse(data) if typeof data == 'string'
|
||||
user = @storeUser(data) if data
|
||||
@storeToken(data.token) if data?.token
|
||||
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)
|
||||
|
||||
storeUser: (data) ->
|
||||
localStorage?.setItem('travis.auto_signin', 'true')
|
||||
sessionStorage?.setItem('travis.user', JSON.stringify(data))
|
||||
sessionStorage?.setItem('travis.token', data.token)
|
||||
storeToken: (token) ->
|
||||
sessionStorage?.setItem('travis.token', token)
|
||||
@notifyPropertyChange('accessToken')
|
||||
@store.load(Travis.User, data.user)
|
||||
Travis.User.find(data.user.id)
|
||||
|
||||
storeUser: (user) ->
|
||||
localStorage?.setItem('travis.auto_signin', 'true')
|
||||
sessionStorage?.setItem('travis.user', JSON.stringify(user))
|
||||
@store.load(Travis.User, user)
|
||||
Travis.User.find(user.id)
|
||||
|
||||
receiveMessage: (event) ->
|
||||
if event.origin == @expectedOrigin()
|
||||
@setUser(event.data)
|
||||
@setData(event.data)
|
||||
console.log("signed in as #{event.data.user.login}")
|
||||
else
|
||||
console.log("unexpected message #{event.origin}: #{event.data}")
|
||||
|
|
|
@ -4,9 +4,9 @@ Travis.AccountsController = Ember.ArrayController.extend
|
|||
init: ->
|
||||
@_super()
|
||||
|
||||
content: (->
|
||||
Travis.Account.find()
|
||||
).property()
|
||||
# content: (->
|
||||
# Travis.Account.find()
|
||||
# ).property()
|
||||
|
||||
findByLogin: (login) ->
|
||||
@find (account) -> account.get('login') == 'login'
|
||||
|
|
|
@ -46,6 +46,6 @@ require 'travis/model'
|
|||
|
||||
setWithSession: (name, value) ->
|
||||
@set(name, value)
|
||||
data = JSON.parse(sessionStorage?.getItem('travis.user'))
|
||||
data.user[$.underscore(name)] = @get(name)
|
||||
sessionStorage?.setItem('travis.user', JSON.stringify(data))
|
||||
user = JSON.parse(sessionStorage?.getItem('travis.user'))
|
||||
user[$.underscore(name)] = @get(name)
|
||||
sessionStorage?.setItem('travis.user', JSON.stringify(user))
|
||||
|
|
|
@ -70,9 +70,11 @@ Travis.Router = Ember.Router.extend
|
|||
profile: Ember.Route.extend
|
||||
initialState: 'index'
|
||||
route: '/profile'
|
||||
|
||||
connectOutlets: (router) ->
|
||||
router.get('applicationController').connectOutlet 'profileLayout'
|
||||
$('body').attr('id', 'profile')
|
||||
router.get('accountsController').set('content', Travis.Account.find())
|
||||
router.get('profileLayoutController').connectOutlet 'top', 'top'
|
||||
router.get('profileLayoutController').connectOutlet 'left', 'accounts'
|
||||
|
||||
|
|
|
@ -11,6 +11,7 @@ require 'ext/ember/namespace'
|
|||
StatsLayoutView: Travis.View.extend(templateName: 'layouts/simple')
|
||||
ApplicationView: Travis.View.extend(templateName: 'application')
|
||||
|
||||
require 'views/accounts'
|
||||
require 'views/build'
|
||||
require 'views/job'
|
||||
require 'views/repo'
|
||||
|
|
33
assets/javascripts/app/views/accounts.coffee
Normal file
33
assets/javascripts/app/views/accounts.coffee
Normal file
|
@ -0,0 +1,33 @@
|
|||
@Travis.reopen
|
||||
AccountsView: Travis.View.extend
|
||||
tabBinding: 'controller.tab'
|
||||
templateName: 'profile/accounts'
|
||||
classAccounts: (->
|
||||
'active' if @get('tab') == 'accounts'
|
||||
).property('tab')
|
||||
|
||||
AccountsListView: Em.CollectionView.extend
|
||||
elementId: 'accounts'
|
||||
accountBinding: 'content'
|
||||
tagName: 'ul'
|
||||
|
||||
emptyView: Ember.View.extend
|
||||
template: Ember.Handlebars.compile('<div class="loading"><span>Loading</span></div>')
|
||||
|
||||
itemViewClass: Travis.View.extend
|
||||
accountBinding: 'content'
|
||||
typeBinding: 'content.type'
|
||||
selectedBinding: 'account.selected'
|
||||
|
||||
classNames: ['account']
|
||||
classNameBindings: ['type', 'selected']
|
||||
|
||||
name: (->
|
||||
@get('content.name') || @get('content.login')
|
||||
).property('content.login', 'content.name')
|
||||
|
||||
urlAccount: (->
|
||||
Travis.Urls.account(@get('account.login'))
|
||||
).property('account.login')
|
||||
|
||||
|
|
@ -1,35 +1,4 @@
|
|||
@Travis.reopen
|
||||
AccountsView: Travis.View.extend
|
||||
tabBinding: 'controller.tab'
|
||||
templateName: 'profile/accounts'
|
||||
classAccounts: (->
|
||||
'active' if @get('tab') == 'accounts'
|
||||
).property('tab')
|
||||
|
||||
AccountsListView: Em.CollectionView.extend
|
||||
elementId: 'accounts'
|
||||
accountBinding: 'content'
|
||||
tagName: 'ul'
|
||||
|
||||
emptyView: Ember.View.extend
|
||||
template: Ember.Handlebars.compile('<div class="loading"><span>Loading</span></div>')
|
||||
|
||||
itemViewClass: Travis.View.extend
|
||||
accountBinding: 'content'
|
||||
typeBinding: 'content.type'
|
||||
selectedBinding: 'account.selected'
|
||||
|
||||
classNames: ['account']
|
||||
classNameBindings: ['type', 'selected']
|
||||
|
||||
name: (->
|
||||
@get('content.name') || @get('content.login')
|
||||
).property('content.login', 'content.name')
|
||||
|
||||
urlAccount: (->
|
||||
Travis.Urls.account(@get('account.login'))
|
||||
).property('account.login')
|
||||
|
||||
ProfileView: Travis.View.extend
|
||||
templateName: 'profile/show'
|
||||
accountBinding: 'controller.account'
|
||||
|
|
File diff suppressed because one or more lines are too long
Loading…
Reference in New Issue
Block a user