Quintino A. G. Souza 72813e0f30 Centraliza configuração de access rules no módulo pai
- Adiciona rota, menu e abas unificados em ldap_groups_sync
- Cria LdapGroupsSyncController (overview dos submódulos)
- Cria UnifiedAccessRulesForm: tabela combinada de regras de todos os
  submódulos habilitados, com único botão "Add Rule"
- Cria GlobalAccessRuleForm: estende AccessRuleFormBase com parâmetro
  {group_type} na rota; exibe select "Group Type" com AJAX rebuild ao
  criar novas regras (desabilitado ao editar)
- Remove rotas access_rules e access_rule_form dos submódulos
- Remove entradas de menu dos submódulos (módulo pai fornece a entrada)
- Atualiza abas dos submódulos para base_route: ldap_groups_sync.config

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-02 09:03:10 -03:00

LDAP Groups Sync

Módulo base que provê a infraestrutura compartilhada de regras de acesso para os módulos de sincronização LDAP de grupos.

Não realiza sincronização por si só — funciona como biblioteca de classes abstratas instanciada pelos sub-módulos que ficam dentro deste repositório.

Sub-módulos incluídos

Módulo Tipo de grupo Rota de configuração
ldap_departments_sync departments /admin/config/local-modules/ldap-departments-sync
ldap_research_groups_sync research_group /admin/config/local-modules/ldap-research-groups-sync

Estrutura

ldap_groups_sync/
├── src/
│   ├── GroupAccessRulesService.php      # serviço de verificação de acesso
│   └── Form/
│       ├── AccessRulesFormBase.php      # listagem e remoção de regras
│       └── AccessRuleFormBase.php       # criação/edição de regra (modal)
├── translations/
│   └── ldap_groups_sync.pt-br.po
│
├── ldap_departments_sync/               # sub-módulo
└── ldap_research_groups_sync/           # sub-módulo

Regras de acesso

A infraestrutura de regras de acesso permite configurar, por interface, quais operações (create, update, delete, view) cada entidade permite — e a quais membros de grupo com quais papéis.

Cada regra define:

  • Tipo de entidade / bundle ao qual se aplica
  • Operações controladas
  • Modo: Restritivo (nega quem não satisfaz) ou Aditivo (só concede, sem negar)
  • Requisitos de membro: um ou mais pares (grupo + papéis requeridos)
  • Condições de campo opcionais avaliadas sobre a entidade existente (para update/delete/view)

Como adicionar um novo sub-módulo

  1. Crie o diretório do módulo dentro de ldap_groups_sync/.

  2. Declare ldap_groups_sync:ldap_groups_sync como dependência no .info.yml.

  3. No .services.yml, use GroupAccessRulesService com o config name como terceiro argumento:

meu_modulo.access_rules:
  class: Drupal\ldap_groups_sync\GroupAccessRulesService
  arguments: ['@config.factory', '@entity_type.manager', 'meu_modulo.settings']
  1. Crie src/Form/AccessRulesForm.php estendendo AccessRulesFormBase:
namespace Drupal\meu_modulo\Form;

use Drupal\ldap_groups_sync\Form\AccessRulesFormBase;

class AccessRulesForm extends AccessRulesFormBase {
  protected function getConfigName(): string        { return 'meu_modulo.settings'; }
  public    function getFormId(): string            { return 'meu_modulo_access_rules_form'; }
  protected function getAccessRuleFormRoute(): string { return 'meu_modulo.access_rule_form'; }
}
  1. Crie src/Form/AccessRuleForm.php estendendo AccessRuleFormBase:
namespace Drupal\meu_modulo\Form;

use Drupal\ldap_groups_sync\Form\AccessRuleFormBase;

class AccessRuleForm extends AccessRuleFormBase {
  protected function getConfigName(): string          { return 'meu_modulo.settings'; }
  public    function getFormId(): string              { return 'meu_modulo_access_rule_form'; }
  protected function getAccessRulesRoute(): string    { return 'meu_modulo.access_rules'; }
  protected function getDefaultGroupTypeId(): string  { return 'meu_group_type'; }
}

Dependências

  • drupal:options
  • drupal:telephone
  • group:group
  • ldap:ldap_servers
  • site_tools

Licença

GPL-2.0-or-later

Autor

Desenvolvido para o IME - UNICAMP

Description
No description provided
Readme 126 KiB
Languages
PHP 98.7%
CSS 1.3%