From 4ef0662d15c09736a69827640d607278d0603167 Mon Sep 17 00:00:00 2001 From: kalugin66 Date: Mon, 23 Feb 2026 23:52:54 +0500 Subject: [PATCH] =?UTF-8?q?=D0=B7=D0=B0=D0=BF=D1=83=D1=82=D0=B0=D0=BB?= =?UTF-8?q?=D1=81=D1=8F,=20=D0=BD=D0=B0=D0=B4=D0=BE=20=D0=BF=D1=80=D0=BE?= =?UTF-8?q?=D0=BF=D0=B8=D1=81=D0=B0=D1=82=D1=8C=20=D0=BB=D0=BE=D0=B3=D0=B8?= =?UTF-8?q?=D0=BA=D1=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- public/signature.js | 50 ++++++++++++++++++++++++++++++++++++--------- 1 file changed, 40 insertions(+), 10 deletions(-) diff --git a/public/signature.js b/public/signature.js index a19bd0f..e37e392 100644 --- a/public/signature.js +++ b/public/signature.js @@ -4,7 +4,7 @@ // Конфигурация const CONFIG = { - signerGroup: 'Подписант', + signerGroup: 'Секретарь', apiEndpoint: '/api2/idusers', usersEndpoint: '/api/users', replaceEndpoint: '/api/tasks/${taskId}/replace-assignee', @@ -14,6 +14,8 @@ // Текущий пользователь let currentUser = null; + // Является ли текущий пользователь подписантом + let isCurrentUserSigner = false; // Получение текущего пользователя async function getCurrentUser() { @@ -23,6 +25,9 @@ if (data.user) { currentUser = data.user; console.log('✅ Signature: текущий пользователь', currentUser); + + // Проверяем, является ли пользователь подписантом + await checkIfUserIsSigner(); } return currentUser; } catch (error) { @@ -31,6 +36,29 @@ } } + // Проверка, является ли текущий пользователь подписантом + async function checkIfUserIsSigner() { + if (!currentUser) return false; + + try { + // Получаем всех подписантов + const signers = await getSigners(); + + // Проверяем, есть ли текущий пользователь в списке подписантов + isCurrentUserSigner = signers.some(signer => + signer.id === currentUser.id || + signer.login === currentUser.login || + signer.name === currentUser.name + ); + + console.log('✅ Signature: пользователь является подписантом?', isCurrentUserSigner); + return isCurrentUserSigner; + } catch (error) { + console.error('❌ Signature: ошибка проверки подписанта', error); + return false; + } + } + // Получение подписантов async function getSigners() { try { @@ -83,7 +111,7 @@ const signers = await getSigners(); if (!signers.length) { - alert('❌ Подписанты не найдены в системе'); + alert('❌ Секретари не найдены в системе'); return false; } @@ -191,7 +219,8 @@ // Функция для добавления кнопок в существующие карточки задач window.addSignatureButtons = function() { - if (!currentUser) return; + // Показываем кнопку только если пользователь является подписантом + if (!currentUser || !isCurrentUserSigner) return; document.querySelectorAll('[data-task-id]').forEach(card => { // Проверяем, есть ли уже кнопка @@ -251,12 +280,14 @@ async function init() { console.log('🔄 Signature module initializing...'); - // Получаем текущего пользователя + // Получаем текущего пользователя и проверяем, является ли он подписантом await getCurrentUser(); - // Добавляем кнопки на существующие карточки + // Добавляем кнопки на существующие карточки только если пользователь подписант setTimeout(() => { - window.addSignatureButtons(); + if (isCurrentUserSigner) { + window.addSignatureButtons(); + } }, 1000); // Запускаем наблюдение за DOM @@ -268,9 +299,8 @@ window.TasksType.renderExpandedContent = function(task) { let html = originalRender ? originalRender(task) : ''; - // Добавляем кнопку подписания в развернутое содержимое только для документов - if (currentUser && task.task_type === CONFIG.taskTypeDocument && - task.assignments?.some(a => a.user_id === currentUser.id)) { + // Добавляем кнопку подписания в развернутое содержимое только для документов и если пользователь подписант + if (currentUser && isCurrentUserSigner && task.task_type === CONFIG.taskTypeDocument) { // Создаем контейнер action-buttons если его нет if (!html.includes('action-buttons')) { @@ -302,7 +332,7 @@ }; } - console.log('✅ Signature module loaded'); + console.log('✅ Signature module loaded. User is signer:', isCurrentUserSigner); } // Запускаем инициализацию после загрузки DOM