From 0c6d70c1c9d40ac13438429548fc381820fabf11 Mon Sep 17 00:00:00 2001 From: Gemini Date: Mon, 13 Jul 2026 19:07:42 -0300 Subject: [PATCH] KB-PLUGIN-044: gotcha do right custom (relogin) e gate por right nativo (padrao butterfly) - incidente mindscrum 1.0.0/1.0.1 Co-Authored-By: Claude Fable 5 --- ...-glpi11-native-visibility-in-plugin-boards.md | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/records/plugin-dev/KB-PLUGIN-044-glpi11-native-visibility-in-plugin-boards.md b/records/plugin-dev/KB-PLUGIN-044-glpi11-native-visibility-in-plugin-boards.md index 24c89cb..7423b9c 100644 --- a/records/plugin-dev/KB-PLUGIN-044-glpi11-native-visibility-in-plugin-boards.md +++ b/records/plugin-dev/KB-PLUGIN-044-glpi11-native-visibility-in-plugin-boards.md @@ -98,6 +98,22 @@ e são testáveis em CLI. Teste E2E que prova: sessão com `ticket => READ` (sem READALL) deve ver só os chamados onde é ator; sessão com rights zerados deve ter toda mutação negada. +## Right CUSTOM exige relogin de TODOS — gate por right NATIVO evita (padrão butterfly) + +Incidente em produção (mindscrum 1.0.0): right custom (`plugin_mindscrum_board`) +gravado em `glpi_profilerights` no install, mas o GLPI carrega rights na sessão +**no LOGIN** — o menu apareceu SÓ para quem instalou; todos os outros usuários +(inclusive super-admins) precisariam de logout/login. Sintoma: "o plugin só +aparece para quem instalou". + +Solução (1.0.1, replicando o butterfly): **gate por right NATIVO** já presente +em toda sessão — `Board::$rightname = 'ticket'` (menu/leitura = `ticket READ`; +edição = `ticket UPDATE`) + guardas por item (`canUpdateItem` etc.). Sem classe +Profile, sem `change_profile`, sem relogin. Regra prática: só crie right custom +se o plugin precisa de permissão que NENHUM right nativo representa — e aceite o +custo do relogin pós-install; para ferramentas sobre itens nativos (board de +tickets/projetos), o right nativo do item é o gate certo. + ## Bônus — XSS de atributo em JS de plugin `div.textContent = s; return div.innerHTML` escapa `& < >` mas **não aspas** —