Descrição do Problema / Contexto
Esta requisição (BATCH-089) resolve dois problemas de permissão e usabilidade relatados durante o uso com usuários de acesso restrito (isolados via hooks multi-usuário):
-
Exibição Incorreta de Controles de Edição para Usuários Sem Permissão:
-
Problema: Quando um usuário com acesso restrito tenta visualizar uma página que não lhe pertence, ele vê o alerta de sem permissão, mas a Editbar do Live Editor continua exibindo o dropdown "Página" (com opções de Editar, Editar Avançado, Clonar, etc.) e controles de salvamento. Isso gera uma falsa impressão de que a edição está ativa ou que há um erro.
-
Comportamento Esperado: Se o usuário não tiver permissão para alterar a página atual (conforme validado pelo helper
dashboard_site_toolbar_verificar_permissao_pagina), o dropdown "Página" deve ser omitido dinamicamente da Editbar, mantendo apenas os demais controles de navegação e o menu do usuário. -
Abordagem:
-
Nos templates HTML da Editbar (
dashboard-site-toolbar.htmlempt-breen), envolver o bloco do Dropdown "Página" com marcadores de comentário:<!-- dropdown-page < -->...<!-- dropdown-page > -->. -
No backend (
dashboard.php->dashboard_site_toolbar()), verificar a permissão da página. Se o usuário não puder alterar a página, excluir o bloco usando a biblioteca de modelos:modelo_tag_del($_GESTOR['pagina'], '<!-- dropdown-page < -->', '<!-- dropdown-page > -->'). Caso tenha permissão, apenas remova os marcadores de comentário comstr_replacepara exibir o dropdown normalmente.
-
-
-
Alerta Falso no Hook Multi-usuário de
/admin-paginas/:-
Problema: Ao acessar páginas permitidas (que pertencem ao próprio usuário) no módulo
/admin-paginas/, o sistema exibe continuamente o alertaVocê não tem permissão para acessar este local., embora o CRUD funcione. O alerta deve ser exclusivo para tentativas de acesso a páginas de terceiros. -
Comportamento Esperado: Ajustar o hook em
conn2flow-site(admin-paginas.hooks.phpe arquivos relacionados) para que a validação de propriedade seja correta:-
O alerta
Você não tem permissão para acessar este local.só deve ser acionado se o usuário tentar visualizar, editar ou clonar um ID de página que realmente não lhe pertence. -
Nesse caso de violação de acesso, o usuário deve ser redirecionado para a listagem do módulo
/admin-paginas/exibindo o alerta correspondente.
-
-
Proposta de Alterações Detalhada
1. Ocultação Dinâmica do Dropdown "Página" na Editbar
-
Nos templates HTML (
gestor/modulos/dashboard/resources/{pt-br,en}/pages/dashboard-site-toolbar/dashboard-site-toolbar.html):-
Envolver o elemento
#c2f-page-dropdowncom os comentários delimitadores<!-- dropdown-page < -->e<!-- dropdown-page > -->.
-
-
No PHP (
gestor/modulos/dashboard/dashboard.php-dashboard_site_toolbar):-
Carregar os campos
id_usuariosepublisher_idao consultar a página atual ($pagina_atual). -
Validar a permissão chamando
dashboard_site_toolbar_verificar_permissao_pagina($pagina_atual). -
Se o retorno for falso, invocar
modelo_tag_del()para remover o dropdown de página do HTML da Editbar. -
Se for verdadeiro, remover as tags de comentários com
str_replace.
-
2. Correção de Alerta de Permissão em admin-paginas.hooks.php
-
No projeto (
conn2flow-site->gestor/project/hooks/controllers/admin-paginas.hooks.php):-
Revisar a lógica nos hooks de formulário e pre-banco (
editar.parametros,editar.pre-banco). -
Certificar-se de que a validação de propriedade do registro (
id_usuariosda página comparado com o do usuário logado) só aciona o redirecionamento e a mensagem de erro quando houver uma tentativa real de acessar um registro não pertencente ao usuário. -
Impedir que acessos legítimos disparem a variável global de mensagem ou alertas de erro.
-
Validação e Testes
-
Validação de Sintaxe:
-
Executar
php -lnos arquivos modificados. -
Executar
npm run testecomposer testpara garantir que não haja regressão no core.
-
-
Validação Visual e Manual:
-
Logar com um usuário de plano restrito, abrir o site e acessar uma página pertencente a outro usuário: confirmar que a Editbar não mostra o dropdown "Página", mas exibe o menu do usuário e demais navegações.
-
Acessar uma página própria e verificar se o dropdown "Página" é renderizado normalmente com todas as opções.
-
No painel de administração (
/admin-paginas/), gerenciar e editar registros de páginas do próprio usuário e certificar-se de que nenhum alerta de falta de permissão é exibido incorretamente na tela. -
Tentar forçar o URL de edição de uma página de outro usuário (ex:
/admin-paginas/editar/?id=ID_DE_OUTRO) e validar se ocorre o redirecionamento para/admin-paginas/acompanhado do alerta de sem permissão.
-