mirror of
https://gitlab.unicamp.br/infimecc_drupal11_modules/ldap_groups_sync.git
synced 2026-03-09 01:47:41 -03:00
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>
This commit is contained in:
99
README.md
Normal file
99
README.md
Normal file
@@ -0,0 +1,99 @@
|
||||
# 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
|
||||
Reference in New Issue
Block a user