mirror of
https://gitlab.unicamp.br/infimecc_drupal11_modules/ldap_groups_sync.git
synced 2026-03-08 01:17:41 -03:00
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>
100 lines
3.4 KiB
Markdown
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
|