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

100 lines
3.4 KiB
Markdown

# 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:
```yaml
meu_modulo.access_rules:
class: Drupal\ldap_groups_sync\GroupAccessRulesService
arguments: ['@config.factory', '@entity_type.manager', 'meu_modulo.settings']
```
4. Crie `src/Form/AccessRulesForm.php` estendendo `AccessRulesFormBase`:
```php
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'; }
}
```
5. Crie `src/Form/AccessRuleForm.php` estendendo `AccessRuleFormBase`:
```php
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