Files
ldap_groups_sync/README.md
Quintino A. G. Souza 346b897e25 Inicializa módulo base ldap_groups_sync
Cria super-módulo com infraestrutura compartilhada de regras de acesso
para os módulos de sincronização LDAP de grupos.

- GroupAccessRulesService: serviço parametrizável por config name
- AccessRulesFormBase: listagem/remoção de regras (classe abstrata)
- AccessRuleFormBase: formulário modal de criação/edição (classe abstrata)
- Sub-módulos ldap_departments_sync e ldap_research_groups_sync refatorados
  para estender as classes base com subclasses mínimas
- Traduções pt-br centralizadas em ldap_groups_sync.pt-br.po

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

3.4 KiB

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