Inject storage and sessionStorage
This commit is contained in:
parent
547620648d
commit
b06582557a
|
@ -10,9 +10,9 @@ window.Auth = Ember.Object.extend
|
||||||
).property(),
|
).property(),
|
||||||
|
|
||||||
signOut: ->
|
signOut: ->
|
||||||
Travis.storage.removeItem('travis.user')
|
@storage.removeItem('travis.user')
|
||||||
Travis.storage.removeItem('travis.token')
|
@storage.removeItem('travis.token')
|
||||||
Travis.sessionStorage.clear()
|
@sessionStorage.clear()
|
||||||
@set('state', 'signed-out')
|
@set('state', 'signed-out')
|
||||||
@set('user', undefined)
|
@set('user', undefined)
|
||||||
if user = @get('currentUser')
|
if user = @get('currentUser')
|
||||||
|
@ -29,7 +29,7 @@ window.Auth = Ember.Object.extend
|
||||||
$('<iframe id="auth-frame" />').hide().appendTo('body').attr('src', url)
|
$('<iframe id="auth-frame" />').hide().appendTo('body').attr('src', url)
|
||||||
|
|
||||||
autoSignIn: (data) ->
|
autoSignIn: (data) ->
|
||||||
data ||= @userDataFrom(Travis.sessionStorage) || @userDataFrom(Travis.storage)
|
data ||= @userDataFrom(@sessionStorage) || @userDataFrom(@storage)
|
||||||
@setData(data) if data
|
@setData(data) if data
|
||||||
|
|
||||||
userDataFrom: (storage) ->
|
userDataFrom: (storage) ->
|
||||||
|
@ -47,7 +47,7 @@ window.Auth = Ember.Object.extend
|
||||||
|
|
||||||
validateUser: (user) ->
|
validateUser: (user) ->
|
||||||
fieldsToValidate = ['id', 'login', 'token', 'correct_scopes']
|
fieldsToValidate = ['id', 'login', 'token', 'correct_scopes']
|
||||||
if Travis.config.pro
|
if @config.pro
|
||||||
fieldsToValidate.push 'channels'
|
fieldsToValidate.push 'channels'
|
||||||
|
|
||||||
fieldsToValidate.every( (field) => @validateHas(field, user) ) && user.correct_scopes
|
fieldsToValidate.every( (field) => @validateHas(field, user) ) && user.correct_scopes
|
||||||
|
@ -60,8 +60,8 @@ window.Auth = Ember.Object.extend
|
||||||
false
|
false
|
||||||
|
|
||||||
setData: (data) ->
|
setData: (data) ->
|
||||||
@storeData(data, Travis.sessionStorage)
|
@storeData(data, @sessionStorage)
|
||||||
@storeData(data, Travis.storage) unless @userDataFrom(Travis.storage)
|
@storeData(data, @storage) unless @userDataFrom(@storage)
|
||||||
user = @loadUser(data.user)
|
user = @loadUser(data.user)
|
||||||
@set('currentUser', user)
|
@set('currentUser', user)
|
||||||
|
|
||||||
|
@ -76,8 +76,8 @@ window.Auth = Ember.Object.extend
|
||||||
# if user is still signed in, update saved data
|
# if user is still signed in, update saved data
|
||||||
if @get('signedIn')
|
if @get('signedIn')
|
||||||
data.user.token = user.token
|
data.user.token = user.token
|
||||||
@storeData(data, Travis.sessionStorage)
|
@storeData(data, @sessionStorage)
|
||||||
@storeData(data, Travis.storage)
|
@storeData(data, @storage)
|
||||||
, (status, xhr) =>
|
, (status, xhr) =>
|
||||||
@signOut() if status == 403
|
@signOut() if status == 403
|
||||||
|
|
||||||
|
|
|
@ -6,7 +6,6 @@ require 'app'
|
||||||
window.ENV ||= {}
|
window.ENV ||= {}
|
||||||
window.ENV.RAISE_ON_DEPRECATION = true
|
window.ENV.RAISE_ON_DEPRECATION = true
|
||||||
|
|
||||||
# TODO: how can I put it in Travis namespace and use immediately?
|
|
||||||
Storage = Em.Object.extend
|
Storage = Em.Object.extend
|
||||||
init: ->
|
init: ->
|
||||||
@set('storage', {})
|
@set('storage', {})
|
||||||
|
@ -131,28 +130,43 @@ $.extend Travis,
|
||||||
|
|
||||||
INTERVALS: { times: -1, updateTimes: 1000 }
|
INTERVALS: { times: -1, updateTimes: 1000 }
|
||||||
|
|
||||||
storage: (->
|
sessionStorage = (->
|
||||||
storage = null
|
storage = null
|
||||||
try
|
try
|
||||||
storage = window.localStorage || throw('no storage')
|
# firefox will not throw error on access for sessionStorage var,
|
||||||
catch err
|
# you need to actually get something from session
|
||||||
storage = Storage.create()
|
sessionStorage.getItem('foo')
|
||||||
|
storage = sessionStorage
|
||||||
|
catch err
|
||||||
|
storage = Storage.create()
|
||||||
|
|
||||||
storage
|
storage
|
||||||
)()
|
)()
|
||||||
|
|
||||||
sessionStorage: (->
|
storage = (->
|
||||||
storage = null
|
storage = null
|
||||||
try
|
try
|
||||||
# firefox will not throw error on access for sessionStorage var,
|
storage = window.localStorage || throw('no storage')
|
||||||
# you need to actually get something from session
|
catch err
|
||||||
sessionStorage.getItem('foo')
|
storage = Storage.create()
|
||||||
storage = sessionStorage
|
|
||||||
catch err
|
|
||||||
storage = Storage.create()
|
|
||||||
|
|
||||||
storage
|
storage
|
||||||
)()
|
)()
|
||||||
|
|
||||||
|
Travis.initializer
|
||||||
|
name: 'storage'
|
||||||
|
|
||||||
|
initialize: (container, application) ->
|
||||||
|
application.register 'storage:main', storage, { instantiate: false }
|
||||||
|
application.register 'sessionStorage:main', sessionStorage, { instantiate: false }
|
||||||
|
|
||||||
|
application.inject('auth', 'storage', 'storage:main')
|
||||||
|
application.inject('auth', 'sessionStorage', 'sessionStorage:main')
|
||||||
|
|
||||||
|
# I still use Travis.storage in some places which are not that easy to
|
||||||
|
# refactor
|
||||||
|
application.storage = storage
|
||||||
|
application.sessionStorage = sessionStorage
|
||||||
|
|
||||||
Travis.initializer
|
Travis.initializer
|
||||||
name: 'googleAnalytics'
|
name: 'googleAnalytics'
|
||||||
|
@ -177,6 +191,7 @@ Travis.initializer
|
||||||
|
|
||||||
application.inject('controller', 'config', 'config:main')
|
application.inject('controller', 'config', 'config:main')
|
||||||
application.inject('route', 'config', 'config:main')
|
application.inject('route', 'config', 'config:main')
|
||||||
|
application.inject('auth', 'config', 'config:main')
|
||||||
|
|
||||||
Travis.initializer
|
Travis.initializer
|
||||||
name: 'inject-pusher'
|
name: 'inject-pusher'
|
||||||
|
|
Loading…
Reference in New Issue
Block a user