Netpulse_SasS/db/migrations/0020_dashboard_perms.sql
byrsapty 7fa8adc506 Дашборди, Esc/клік повз вікно, редагування каналів і протоколів
Дашборди: схема core.dashboards лежала з Етапу 1 без жодного рядка коду.
Сітка на 12 колонок, шість видів плиток (графік, число, шкала, список
алертів, сітка хостів, текст), автооновлення з інтервалом дашборда,
режим редагування. Права окремі від maps:* — дашборд збирає дані з
усього тенанта.

Esc і клік повз панель закривають будь-яке вікно. Слухач на document, бо
фокус може стояти де завгодно; закриття за mousedown, а не click, щоб
виділення тексту, доведене за межі вікна, не втрачало набране.

Канали сповіщень редагуються (раніше лише створювались і видалялись).
Протокол доступу змінюється — з вимогою ввести пароль заново, бо секрет
зашифрований під видом старого протоколу.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-24 18:30:28 +03:00

30 lines
1.5 KiB
SQL
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

-- =====================================================================
-- NetPulse :: 0020_dashboard_perms.sql
-- Права на дашборди.
--
-- Окремі від maps:* навмисно: дашборд збирає дані з усього тенанта, і
-- «може дивитись мапу» не означає «може дивитись зведення по грошах,
-- SLA й усіх майданчиках».
-- =====================================================================
INSERT INTO core.permissions (key, description) VALUES
('dashboards:read', 'Перегляд дашбордів'),
('dashboards:write', 'Створення та редагування дашбордів')
ON CONFLICT (key) DO NOTHING;
-- Видають тим, хто вже має відповідний рівень доступу до мап: набір
-- ролей у продукті один, і розводити їх тут означало б завести роль,
-- яка бачить мапу й не бачить дашборда з тією ж мапою всередині.
INSERT INTO core.role_permissions (role_id, permission_key)
SELECT rp.role_id, 'dashboards:read'
FROM core.role_permissions rp
WHERE rp.permission_key = 'maps:read'
ON CONFLICT DO NOTHING;
INSERT INTO core.role_permissions (role_id, permission_key)
SELECT rp.role_id, 'dashboards:write'
FROM core.role_permissions rp
WHERE rp.permission_key = 'maps:write'
ON CONFLICT DO NOTHING;
-- Роль із «*» уже покриває все — її не чіпаємо.