blob: 0a1cd08fddc70c7357fb1fded46f665070771957 [file] [log] [blame]
Matteo Scandolof6acdbe2016-12-13 10:29:37 -08001/// <reference path="../typings/index.d.ts" />
2
Matteo Scandolo9f87f302016-12-13 18:11:10 -08003// TODO handle backend failure
4
Matteo Scandolof6acdbe2016-12-13 10:29:37 -08005export function interceptorConfig($httpProvider: angular.IHttpProvider, $resourceProvider: angular.resource.IResourceServiceProvider) {
6 $httpProvider.interceptors.push('UserStatusInterceptor');
7 $httpProvider.interceptors.push('CredentialsInterceptor');
8 $resourceProvider.defaults.stripTrailingSlashes = false;
9}
10
11export function userStatusInterceptor($state: angular.ui.IStateService) {
12
13 const checkLogin = (res) => {
14 if (res.status === 403) {
15 $state.go('login');
16 }
17 else if (res.data.status === 403) {
18 $state.go('login');
19 }
20 return res;
21 };
22
23 return {
24 response: checkLogin,
25 responseError: checkLogin
26 };
27}
28
29export function CredentialsInterceptor($cookies: angular.cookies.ICookiesService) {
30 return {
31 request: (req) => {
32 if (!$cookies.get('xoscsrftoken') || !$cookies.get('xossessionid')) {
33 return req;
34 }
35 req.headers['X-CSRFToken'] = $cookies.get('xoscsrftoken');
36 req.headers['x-csrftoken'] = $cookies.get('xoscsrftoken');
37 req.headers['x-sessionid'] = $cookies.get('xossessionid');
38 return req;
39 }
40 };
41}