mirror of
https://gitlab.unicamp.br/infimecc_drupal11_modules/ldap_groups_sync.git
synced 2026-03-08 01:17:41 -03:00
master
Cria o módulo modules/ldap_courses_sync/ seguindo o mesmo padrão do ldap_research_groups_sync, com bundle `course`, campos field_course_* e field_user_courses, sincronização de membros via atributo LDAP, e aba "Courses Sync" no painel unificado. Também registra `courses` no módulo pai (routing, UnifiedAccessRulesForm e GlobalAccessRuleForm) para suporte a access rules unificadas. 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%