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.
|
# for auto signin then we're trying to sign in.
|
||||||
loadUser: ->
|
loadUser: ->
|
||||||
if user = sessionStorage?.getItem('travis.user')
|
if user = sessionStorage?.getItem('travis.user')
|
||||||
@setUser(user)
|
@setData(user: JSON.parse(user))
|
||||||
else if localStorage?.getItem('travis.auto_signin')
|
else if localStorage?.getItem('travis.auto_signin')
|
||||||
@trySignIn()
|
@trySignIn()
|
||||||
|
|
||||||
|
@ -40,25 +40,28 @@
|
||||||
signOut: ->
|
signOut: ->
|
||||||
localStorage?.clear()
|
localStorage?.clear()
|
||||||
sessionStorage?.clear()
|
sessionStorage?.clear()
|
||||||
@setUser()
|
@setData()
|
||||||
|
|
||||||
setUser: (data) ->
|
setData: (data) ->
|
||||||
data = JSON.parse(data) if typeof data == 'string'
|
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('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)
|
||||||
|
|
||||||
storeUser: (data) ->
|
storeToken: (token) ->
|
||||||
localStorage?.setItem('travis.auto_signin', 'true')
|
sessionStorage?.setItem('travis.token', token)
|
||||||
sessionStorage?.setItem('travis.user', JSON.stringify(data))
|
|
||||||
sessionStorage?.setItem('travis.token', data.token)
|
|
||||||
@notifyPropertyChange('accessToken')
|
@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) ->
|
receiveMessage: (event) ->
|
||||||
if event.origin == @expectedOrigin()
|
if event.origin == @expectedOrigin()
|
||||||
@setUser(event.data)
|
@setData(event.data)
|
||||||
console.log("signed in as #{event.data.user.login}")
|
console.log("signed in as #{event.data.user.login}")
|
||||||
else
|
else
|
||||||
console.log("unexpected message #{event.origin}: #{event.data}")
|
console.log("unexpected message #{event.origin}: #{event.data}")
|
||||||
|
|
|
@ -4,9 +4,9 @@ Travis.AccountsController = Ember.ArrayController.extend
|
||||||
init: ->
|
init: ->
|
||||||
@_super()
|
@_super()
|
||||||
|
|
||||||
content: (->
|
# content: (->
|
||||||
Travis.Account.find()
|
# Travis.Account.find()
|
||||||
).property()
|
# ).property()
|
||||||
|
|
||||||
findByLogin: (login) ->
|
findByLogin: (login) ->
|
||||||
@find (account) -> account.get('login') == 'login'
|
@find (account) -> account.get('login') == 'login'
|
||||||
|
|
|
@ -46,6 +46,6 @@ require 'travis/model'
|
||||||
|
|
||||||
setWithSession: (name, value) ->
|
setWithSession: (name, value) ->
|
||||||
@set(name, value)
|
@set(name, value)
|
||||||
data = JSON.parse(sessionStorage?.getItem('travis.user'))
|
user = JSON.parse(sessionStorage?.getItem('travis.user'))
|
||||||
data.user[$.underscore(name)] = @get(name)
|
user[$.underscore(name)] = @get(name)
|
||||||
sessionStorage?.setItem('travis.user', JSON.stringify(data))
|
sessionStorage?.setItem('travis.user', JSON.stringify(user))
|
||||||
|
|
|
@ -70,9 +70,11 @@ Travis.Router = Ember.Router.extend
|
||||||
profile: Ember.Route.extend
|
profile: Ember.Route.extend
|
||||||
initialState: 'index'
|
initialState: 'index'
|
||||||
route: '/profile'
|
route: '/profile'
|
||||||
|
|
||||||
connectOutlets: (router) ->
|
connectOutlets: (router) ->
|
||||||
router.get('applicationController').connectOutlet 'profileLayout'
|
router.get('applicationController').connectOutlet 'profileLayout'
|
||||||
$('body').attr('id', 'profile')
|
$('body').attr('id', 'profile')
|
||||||
|
router.get('accountsController').set('content', Travis.Account.find())
|
||||||
router.get('profileLayoutController').connectOutlet 'top', 'top'
|
router.get('profileLayoutController').connectOutlet 'top', 'top'
|
||||||
router.get('profileLayoutController').connectOutlet 'left', 'accounts'
|
router.get('profileLayoutController').connectOutlet 'left', 'accounts'
|
||||||
|
|
||||||
|
|
|
@ -11,6 +11,7 @@ require 'ext/ember/namespace'
|
||||||
StatsLayoutView: Travis.View.extend(templateName: 'layouts/simple')
|
StatsLayoutView: Travis.View.extend(templateName: 'layouts/simple')
|
||||||
ApplicationView: Travis.View.extend(templateName: 'application')
|
ApplicationView: Travis.View.extend(templateName: 'application')
|
||||||
|
|
||||||
|
require 'views/accounts'
|
||||||
require 'views/build'
|
require 'views/build'
|
||||||
require 'views/job'
|
require 'views/job'
|
||||||
require 'views/repo'
|
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
|
@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
|
ProfileView: Travis.View.extend
|
||||||
templateName: 'profile/show'
|
templateName: 'profile/show'
|
||||||
accountBinding: 'controller.account'
|
accountBinding: 'controller.account'
|
||||||
|
|
File diff suppressed because one or more lines are too long
Loading…
Reference in New Issue
Block a user