function appConfig()

in ui/src/app/app.config.js [26:98]


function appConfig($stateProvider, $urlRouterProvider, $httpProvider, $compileProvider, IdleProvider,
                   $animateProvider) {
    // enable CSRF
    $httpProvider.defaults.xsrfCookieName = 'CSRF-TOKEN';
    $httpProvider.defaults.xsrfHeaderName = 'X-CSRF-TOKEN';
    $httpProvider.defaults.withCredentials = true;

    $urlRouterProvider.otherwise('/');

    $stateProvider
        .state('app_page', {
            abstract: true,
            views: {
                'app_page@': {
                    template: '<app-layout></app-layout>'
                }
            },
            resolve: {
                appUrl: function($http, apiUrl, configService) {
                    return $http.get(apiUrl + 'client_configuration').then(
                        function(response) {
                            configService.setConfiguration(response.data);
                        }
                    );
                },
                authorize: function(authService) {
                    return authService.authorize();
                },
                user: function(principalService) {
                    return principalService.checkIdentity();
                }
            }
        })
        .state('error', {
            parent: 'app_page',
            url: '/error',
            data: {
                authorities: [],
                pageTitle: 'Error page!'
            },
            views: {
                'content@app_page': {
                    template: errorTemplate
                }
            },
            resolve: {}
        })
        .state('accessdenied', {
            parent: 'app_page',
            url: '/accessdenied',
            data: {
                authorities: []
            },
            views: {
                'content@app_page': {
                    template: accessDeniedTemplate
                }
            },
            resolve: {}
        });

    $httpProvider.interceptors.push('errorHandlerInterceptor');
    $httpProvider.interceptors.push('notificationInterceptor');

    // 30 min of idleness
    IdleProvider.idle(30 * 60);
    // 30 sec to do something
    IdleProvider.timeout(30);
    // to allow file's export
    $compileProvider.aHrefSanitizationWhitelist(/^\s*(https?|ftp|mailto|tel|file|blob):/);

    $animateProvider.classNameFilter(/\banimated\b/);
}