mirror of
https://gitlab.unicamp.br/infimecc_drupal11_modules/ldap_groups_sync.git
synced 2026-03-08 01:17:41 -03:00
72813e0f30af8ad44eeca7dad005dd12da8971b8
- 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>
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
-
Crie o diretório do módulo dentro de
ldap_groups_sync/. -
Declare
ldap_groups_sync:ldap_groups_synccomo dependência no.info.yml. -
No
.services.yml, useGroupAccessRulesServicecom 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']
- Crie
src/Form/AccessRulesForm.phpestendendoAccessRulesFormBase:
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'; }
}
- Crie
src/Form/AccessRuleForm.phpestendendoAccessRuleFormBase:
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:optionsdrupal:telephonegroup:groupldap:ldap_serverssite_tools
Licença
GPL-2.0-or-later
Autor
Desenvolvido para o IME - UNICAMP
Description
Languages
PHP
98.7%
CSS
1.3%