Загрузка данных


if (window.location.pathname.toLowerCase().indexOf('/login/login.html') !== -1) {
        
        // Вспомогательная функция для получения куки
        var getCookie = function(name) {
            var matches = document.cookie.match(new RegExp(
                "(?:^|; )" + name.replace(/([\.$?*|{}\(\)\[\]\\\/\+^])/g, '\\$1') + "=([^;]*)"
            ));
            return matches ? decodeURIComponent(matches[1]) : undefined;
        };

        // Вспомогательная функция для принудительного удаления куки
        var deleteCookie = function(name) {
            document.cookie = name + '=; Max-Age=-99999999; path=/;';
            // На случай, если у куки прописан конкретный домен, очищаем и его
            document.cookie = name + '=; Max-Age=-99999999; path=/; domain=' + window.location.hostname + ';';
        };

        var bpmCsrf = getCookie("BPMCSRF");

        // 2. Если кука найдена, выполняем валидацию сессии на сервере
        if (bpmCsrf && bpmCsrf.trim() !== "") {
            
            var basePath = window.location.pathname.replace(/\/Login\/Login\.html/i, '');
            // Используем стандартный легковесный пинг-сервис Creatio, требующий авторизации
            var checkUrl = window.location.origin + basePath + '/ServiceModel/AuthService.svc/DoLogin';

            var xhr = new XMLHttpRequest();
            xhr.open('POST', checkUrl, false); // Синхронный запрос, чтобы интерфейс не мерцал
            xhr.setRequestHeader('Content-Type', 'application/json; charset=utf-8');
            xhr.setRequestHeader('BPMCSRF', bpmCsrf); // Передаем куку в заголовке для прохождения CSRF фильтра

            try {
                // Отправляем пустой запрос на авторизационный сервис
                xhr.send(JSON.stringify({}));

                // Если сервер вернул 200/204 или 302, значит сессия валидна
                if (xhr.status >= 200 && xhr.status < 400) {
                    // Мгновенный редирект в Shell для живой сессии
                    window.location.href = window.location.origin + basePath + '/0/Shell/';
                    return; // Блокируем дальнейшую загрузку страницы входа
                } else {
                    // Сервер вернул ошибку (401/403/500) -> сессия протухла
                    deleteCookie("BPMCSRF");
                    console.warn("Сессия устарела на сервере. Кука BPMCSRF удалена.");
                }
            } catch (e) {
                // Если запрос заблокирован или упал с ошибкой сети
                deleteCookie("BPMCSRF");
                console.error("Ошибка проверки сессии. Кука очищена.", e);
            }
        }
    }