EM ANDAMENTO
Resumo técnico
Plugin nativo do NEXUS para gerenciar grupos de usuários e aplicar ACL aos plugins core. Permissões de tarefas, perfil, IA e acesso por plugin são combinadas entre os grupos do operador, enquanto administradores e autenticações internas preservam acesso; a interface mantém membros, grupos protegidos e eventos de webhook.
Escopo executado
groups_init_db()— DDL e seed no próprio plugin (seminstall.sql): crianx_groupsenx_group_members, auto-migration da colunapermissions, seed deadmin/memberscom permissões padrão e associação automática dos usuários existentes porrole.- 4 actions de API via
PluginManager::registerApiAction—groups_list(grupos +core_pluginspara a UI, compatível com payload legado array),groups_save(cria comuniqid('grp_')ou edita; protege nome dos grupos de sistema),groups_delete(bloqueiaadmin/members),groups_members_save(diff de adicionados/removidos + upsert). - ACL por plugin core:
groups_core_plugins()lista pluginsis_core/protected/categoria NEXUS ou Administração;groups_normalize_permissions()garanteplugin_access[slug] = { functions, tasks }para todos (default: functions ←access_plugins/access_admin; tasks ←view_tasks/access_admin). groups_user_plugin_flag($username, $slug, flag)— OR entre grupos,nullquando nenhum grupo define política, bypass emapi_master_auth/api_node_auth.- Integração core:
PluginManager::userHasAccess()(core/plugin-loader.php:315) →groups_user_plugin_flag(...,'functions')(bloqueia aba/actions); hooks de tarefas (linhas 228-251) → flag'tasks'(filtrostask_read/comment_*); Admin de sistema sempre liberado. - Integração usuários:
users.phpenriquece a listagem de usuários com os grupos (JOINnx_group_members/nx_groups) e associa grupo nouser_save. - Webhooks:
webhook.phpdeclara 5 eventos —group.created,group.updated,group.deleted,group.member_added,group.member_removed— disparados viawebhook_dispatch()no backend (diff de membros nogroup_members_save). - UI Alpine.js:
tab.php(169 linhas) — tabela ultra compacta com busca, paginação client-side (5/10/20/50), badges de membros por role, badge "Sistema" para grupos padrão, botão "Novo Grupo" e ações editar/excluir (excluir oculto emadmin/members);modals/group.php(22 KB) — modal com seletor de operadores (busca), flags de permissão e gridplugin_access[p.slug]por plugin core (comx-ifque evita erro do Alpine com o modal fechado). - Registros:
registerTab("groups", "Grupos", "users", tab.php, "NEXUS"),registerDoc("groups", "Gerenciamento de Grupos", "users", doc.md),registerModal("group", modals/group.php).
Stack e ferramentas
- PHP 8 (sem framework)
- MySQL 8 (
nx_groups,nx_group_members) - Alpine.js + Tailwind CSS
- Sistema de plugins do NEXUS (
PluginManager::registerTab/registerDoc/registerModal/registerApiAction) - Webhooks do NEXUS (
webhook_dispatch)
Tags operacionais
- Grupos
- Permissões
- ACL
- Operadores
- RBAC
- Plugin NEXUS
- Webhooks
Resultado operacional
- RBAC completo do NEXUS: grupos de operadores com permissões granulares e ACL por plugin core (functions/tasks) avaliado diretamente pelo
PluginManager::userHasAccess— sem plugin, todo usuário tinha acesso a todas as abas/actions. - Admin de sistema sempre passa e grupos
admin/memberssão protegidos (nome imutável, exclusão bloqueada), garantindo que nunca exista um painel sem grupo master. - União OR entre grupos: um operador herda a maior permissão entre todos os grupos que participa;
null(nenhuma política) mantém o comportamento padrão sem restringir. - Webhooks de ciclo de vida (criar/editar/excluir grupo, adicionar/remover operador) permitem automação externa e auditoria das mudanças de acesso.
- Migração zero: DDL + seed executados no carregamento do plugin, com auto-migration da coluna
permissionsem instalações antigas.
Andamento no GitHub (issues)
Painel em tempo real com as issues mais recentes do repositório.
live feed
abrir issues no githubcarregando andamento...
não foi possivel carregar as issues agora. abra no github pelo link acima.
Resultados reais
Plugin nativo do NEXUS (is_core) de grupos de usuários e níveis de acesso: ACL por plugin core (functions/tasks), permissões granulares, associação de operadores e eventos de webhook — com OR entre grupos e Admin de sistema sempre liberado.
Arquitetura e organização
- PHP 8
- MySQL 8
- Alpine.js
- Tailwind CSS
- Plugin NEXUS
Execução e operação
O projeto segue fluxo reprodutível de execução com validação técnica em ambiente de produção/similar.
Screenshots
Falar sobre este projeto
Aplique este modelo no seu ambiente e acelere a entrega com consistência técnica.