separate session storage of user and token, do stuff

This commit is contained in:
Sven Fuchs 2012-09-27 23:38:33 +02:00
parent abb5ed181e
commit 40260c17d5
8 changed files with 57 additions and 49 deletions

View File

@ -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}")

View File

@ -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'

View File

@ -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))

View File

@ -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'

View File

@ -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'

View 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')

View File

@ -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