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