| 12345678910111213141516171819202122232425262728293031323334 |
- app = angular.module 'ErrorCatcher', []
- app.config ['$provide', ($provide) ->
- $provide.decorator '$exceptionHandler', ['$log', '$delegate', ($log, $delegate) ->
- return (exception, cause) ->
- if (Raven?.captureException?)
- Raven.captureException exception;
- $delegate(exception, cause)
- ]
- ]
- # Interceptor to check auth failures in all $http requests
- # http://bahmutov.calepin.co/catch-all-errors-in-angular-app.html
- app.factory 'unAuthHttpResponseInterceptor', ['$q','$location', ($q, $location) ->
- responseError: (response) ->
- # redirect any unauthorised or forbidden responses back to /login
- #
- # set disableAutoLoginRedirect:true in the http request config
- # to disable this behaviour
- if response.status in [401, 403] and not response.config?.disableAutoLoginRedirect
- # for /project urls set the ?redir parameter to come back here
- # otherwise just go to the login page
- if window.location.pathname.match(/^\/project/)
- window.location = "/login?redir=#{encodeURI(window.location.pathname)}"
- else
- window.location = "/login"
- # pass the response back to the original requester
- return $q.reject(response)
- ]
- app.config ['$httpProvider', ($httpProvider) ->
- $httpProvider.interceptors.push 'unAuthHttpResponseInterceptor'
- ]
|