`import Ember from 'ember'`

Auth = Ember.Object.extend
  state: 'signed-out'

  # I want to disable auto sign in for tests for now, the plan is to either
  # explicitly say that you're signed in or out (the latter being the default)
  autoSignIn: (->)

  signOutForTests: ->
    @set('state', 'signed-out')
    @set('currentUser', null)

  signInForTests: (user) ->
    @set('state', 'signed-in')
    if user.constructor.typeKey? != 'user'
      @store.pushPayload(users: [user])
      user = @store.recordForId('user', user.id)

    @set('currentUser', user)

  # TODO: we use these properties in templates, but there
  #       really should be something like a 'session' service that can be
  #       injected where we need it
  userName: (->
    @get('currentUser.name') || @get('currentUser.login')
  ).property('currentUser.login', 'currentUser.name')

  gravatarUrl: (->
    "#{location.protocol}//www.gravatar.com/avatar/#{@get('currentUser.gravatarId')}?s=48&d=mm"
  ).property('currentUser.gravatarId')

  permissions: Ember.computed.alias('currentUser.permissions')

  signedIn: (->
    @get('state') == 'signed-in'
  ).property('state')

  signedOut: (->
    @get('state') == 'signed-out'
  ).property('state')

  signingIn: (->
    @get('state') == 'signing-in'
  ).property('state')

  token: ->
    if @get('state') == 'signed-in'
      'a-token'

`export default Auth`