Отложить Angular UI Router $ stateChangeStart до получения ответа на авторизацию сервера

У меня есть приложение Angular, использующее UI Router, где я пытаюсь проверить токен пользователя, если он существует, при запуске приложения. Я также проверяю, что у пользователя есть разрешение на доступ к определенным маршрутам. Проблема в том, что$stateChangeStart выполняется до того, как я получу ответ от конечной точки авторизации. Вот некоторый код (coffeescript с JS ниже) - это все в моемrun блок.

app.run(($rootScope, $state, $stateParams, $log, Auth) ->

  currentState = 'home'

  $rootScope.$state = $state

  # read a cookie if cookie exists
  if Auth.setAuthenticationToken()
    # hit api endpoint to validate token
    Auth.validateToken (user) ->
      # route to current state
      # this returns after $stateChangeStart runs below
      $state.go(currentState)

  $rootScope.$on '$stateChangeStart', (event, toState, toParams, fromState, fromParams) ->

    currentState = toState.name

    Auth.setAuthenticationToken()

    $rootScope.error = null

    # compare users access permissions with incoming route's access level
    if (!Auth.authorize toState.data.access, Auth.user)
      event.preventDefault()
      $rootScope.error = "Sorry, you haven't provided the required credentials."
      $log.warn $rootScope.error
)

Мой вопрос, как я могу получить$stateChangeStart запускаться только после того, как ответ от конечной точки аутентификации был возвращен. Это должно произойти только в первый раз. Каждое последующее изменение состояния может быть выполнено без попадания в конечную точку аутентификации.

Ответы на вопрос(4)

Ваш ответ на вопрос