Compare commits

...

5 Commits

Author SHA1 Message Date
7f8664a059 Adiciona composer.json ao projeto. 2026-03-24 16:20:53 -03:00
c74a7edfa0 Adiciona mapeamento LDAP para field_user_mathscinetid
Inclui o campo mathSciNetId no ldap_user.settings e update hook
10001 para aplicar o mapeamento em instalações existentes.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-09 08:11:37 -03:00
c872fce60a Refatora hook_install para carregar configs LDAP a partir dos YAMLs
Substitui a definição manual de valores no código PHP pela leitura dos
arquivos config/optional/ via FileStorage. Adiciona os YAMLs faltantes
(authorization.settings, ldap_servers.settings, ldap_authentication.settings)
e atualiza ldap_user.settings com os prov_module corretos.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-06 13:55:38 -03:00
1ae139afcf Corrige prov_module nos mapeamentos LDAP para refletir os módulos corretos
Campos field_user_category, field_user_dept_code e field_user_work_phone
passam a apontar para ldap_departments_sync; campos field_user_id_lattes,
field_user_name e field_user_orcid passam a apontar para site_users.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-06 13:55:38 -03:00
root
28c26e1514 Adicionado os mapeamentos/papéis de alunos. 2026-03-06 09:23:56 -03:00
7 changed files with 194 additions and 124 deletions

View File

@@ -13,130 +13,46 @@
* de conflito ao importar via config/install. * de conflito ao importar via config/install.
*/ */
function base_site_config_install() { function base_site_config_install() {
$config_factory = \Drupal::configFactory(); $module_path = \Drupal::service('extension.list.module')->getPath('base_site_config');
$source = new \Drupal\Core\Config\FileStorage($module_path . '/config/optional');
// authorization.settings $configs = [
$config_factory->getEditable('authorization.settings') 'authorization.settings',
->set('authorization_message', TRUE) 'ldap_servers.settings',
->save(); 'ldap_authentication.settings',
'ldap_user.settings',
];
// ldap_servers.settings foreach ($configs as $config_name) {
$config_factory->getEditable('ldap_servers.settings') $data = $source->read($config_name);
->set('watchdog_detail', TRUE) if ($data !== FALSE) {
->save(); \Drupal::configFactory()->getEditable($config_name)->setData($data)->save();
}
// ldap_authentication.settings }
$config_factory->getEditable('ldap_authentication.settings') }
->set('sids', [
'ads1_ime_unicamp_br' => 'ads1_ime_unicamp_br', /**
'ldap_ime_unicamp_br' => '0', * Adds field_user_mathscinetid LDAP sync mapping.
]) */
->set('authenticationMode', 'mixed') function base_site_config_update_10001() {
->set('loginUIUsernameTxt', '') $config = \Drupal::configFactory()->getEditable('ldap_user.settings');
->set('loginUIPasswordTxt', '') $mappings = $config->get('ldapUserSyncMappings');
->set('ldapUserHelpLinkUrl', '')
->set('ldapUserHelpLinkText', '') if (!isset($mappings['drupal']['field-field_user_mathscinetid'])) {
->set('emailOption', 'disable') $mappings['drupal']['field-field_user_mathscinetid'] = [
->set('emailUpdate', 'update_notify') 'ldap_attr' => '[mathSciNetId]',
->set('emailTemplateHandling', 'none') 'user_attr' => '[field.field_user_mathscinetid]',
->set('emailTemplate', '@username@example.com') 'convert' => FALSE,
->set('emailTemplateUsageResolveConflict', FALSE) 'user_tokens' => '',
->set('emailTemplateUsageNeverUpdate', FALSE) 'config_module' => 'ldap_user',
->set('emailTemplateUsagePromptUser', FALSE) 'prov_module' => 'site_users',
->set('emailTemplateUsageRedirectOnLogin', FALSE) 'prov_events' => [
->set('emailTemplateUsagePromptRegex', '.*@example\.com') 'create_drupal_user',
->set('passwordOption', 'hide') 'sync_to_drupal_user',
->set('allowOnlyIfTextInDn', []) ],
->set('excludeIfTextInDn', []) ];
->set('excludeIfNoAuthorizations', FALSE) $config->set('ldapUserSyncMappings', $mappings)->save();
->set('skipAdministrators', TRUE) }
->save();
return t('LDAP sync mapping for field_user_mathscinetid added.');
// ldap_user.settings
$config_factory->getEditable('ldap_user.settings')
->set('drupalAcctProvisionServer', 'ldap_ime_unicamp_br')
->set('ldapEntryProvisionServer', 'ldap_ime_unicamp_br')
->set('drupalAcctProvisionTriggers', ['drupal_on_update_create'])
->set('ldapEntryProvisionTriggers', [])
->set('orphanedIncludeDisabledUsers', TRUE)
->set('orphanedDrupalAcctBehavior', 'user_cancel_delete')
->set('orphanedDrupalAcctReportingInbox', '')
->set('orphanedCheckQty', 100)
->set('orphanedAccountCheckInterval', 'always')
->set('userConflictResolve', 'resolve')
->set('manualAccountConflict', 'conflict_associate')
->set('acctCreation', 'ldap_behavior')
->set('disableAdminPasswordField', FALSE)
->set('userUpdateCronQuery', 'people_sync')
->set('userUpdateCronInterval', 'always')
->set('userUpdateOnly', FALSE)
->set('ldapUserSyncMappings', [
'drupal' => [
'field-preferred_langcode' => [
'ldap_attr' => '[preferredLanguage]',
'user_attr' => '[field.preferred_langcode]',
'convert' => FALSE,
'user_tokens' => '',
'config_module' => 'ldap_user',
'prov_module' => 'ldap_user',
'prov_events' => ['create_drupal_user', 'sync_to_drupal_user'],
],
'field-field_user_category' => [
'ldap_attr' => '[employeeType]',
'user_attr' => '[field.field_user_category]',
'convert' => FALSE,
'user_tokens' => '',
'config_module' => 'ldap_user',
'prov_module' => 'ldap_user',
'prov_events' => ['create_drupal_user', 'sync_to_drupal_user'],
],
'field-field_user_dept_code' => [
'ldap_attr' => '[departmentNumber]',
'user_attr' => '[field.field_user_dept_code]',
'convert' => FALSE,
'user_tokens' => '',
'config_module' => 'ldap_user',
'prov_module' => 'ldap_user',
'prov_events' => ['create_drupal_user', 'sync_to_drupal_user'],
],
'field-field_user_id_lattes' => [
'ldap_attr' => '[lattesId]',
'user_attr' => '[field.field_user_id_lattes]',
'convert' => FALSE,
'user_tokens' => '',
'config_module' => 'ldap_user',
'prov_module' => 'ldap_user',
'prov_events' => ['create_drupal_user', 'sync_to_drupal_user'],
],
'field-field_user_name' => [
'ldap_attr' => '[displayName]',
'user_attr' => '[field.field_user_name]',
'convert' => FALSE,
'user_tokens' => '',
'config_module' => 'ldap_user',
'prov_module' => 'ldap_user',
'prov_events' => ['create_drupal_user'],
],
'field-field_user_work_phone' => [
'ldap_attr' => '[telephoneNumber]',
'user_attr' => '[field.field_user_work_phone]',
'convert' => FALSE,
'user_tokens' => '',
'config_module' => 'ldap_user',
'prov_module' => 'ldap_user',
'prov_events' => ['create_drupal_user', 'sync_to_drupal_user'],
],
'field-field_user_orcid' => [
'ldap_attr' => '[orcID]',
'user_attr' => '[field.field_user_orcid]',
'convert' => FALSE,
'user_tokens' => '',
'config_module' => 'ldap_user',
'prov_module' => 'ldap_user',
'prov_events' => ['create_drupal_user', 'sync_to_drupal_user'],
],
],
'ldap' => [],
])
->save();
} }

10
composer.json Normal file
View File

@@ -0,0 +1,10 @@
{
"name": "imecc/base_site_config",
"description": "Configurações básicas específicas para o site do IMECC.",
"type": "drupal-module",
"license": "GPL-2.0-or-later",
"require": {
"php": ">=8.1",
"drupal/core": "^10.3 || ^11"
}
}

View File

@@ -28,6 +28,12 @@ provider_mappings:
- -
query: 'cn=posdoutorandos,ou=Group,dc=ime,dc=unicamp,dc=br' query: 'cn=posdoutorandos,ou=Group,dc=ime,dc=unicamp,dc=br'
is_regex: false is_regex: false
-
query: 'cn=graduandos,ou=Group,dc=ime,dc=unicamp,dc=br'
is_regex: false
-
query: 'cn=posgraduandos,ou=Group,dc=ime,dc=unicamp,dc=br'
is_regex: false
consumer: authorization_drupal_roles consumer: authorization_drupal_roles
consumer_config: { } consumer_config: { }
consumer_mappings: consumer_mappings:
@@ -39,6 +45,10 @@ consumer_mappings:
role: pesquisador role: pesquisador
- -
role: posdoutorando role: posdoutorando
-
role: undergraduate_student
-
role: graduate_student
synchronization_modes: synchronization_modes:
user_logon: user_logon user_logon: user_logon
synchronization_actions: synchronization_actions:

View File

@@ -0,0 +1 @@
authorization_message: true

View File

@@ -0,0 +1,23 @@
langcode: en
sids:
ads1_ime_unicamp_br: ads1_ime_unicamp_br
ldap_ime_unicamp_br: '0'
authenticationMode: mixed
loginUIUsernameTxt: ''
loginUIPasswordTxt: ''
ldapUserHelpLinkUrl: ''
ldapUserHelpLinkText: ''
emailOption: disable
emailUpdate: update_notify
emailTemplateHandling: none
emailTemplate: '@username@example.com'
emailTemplateUsageResolveConflict: false
emailTemplateUsageNeverUpdate: false
emailTemplateUsagePromptUser: false
emailTemplateUsageRedirectOnLogin: false
emailTemplateUsagePromptRegex: '.*@example\.com'
passwordOption: hide
allowOnlyIfTextInDn: { }
excludeIfTextInDn: { }
excludeIfNoAuthorizations: false
skipAdministrators: true

View File

@@ -0,0 +1 @@
watchdog_detail: true

View File

@@ -0,0 +1,109 @@
drupalAcctProvisionServer: ldap_ime_unicamp_br
ldapEntryProvisionServer: ldap_ime_unicamp_br
drupalAcctProvisionTriggers:
- drupal_on_update_create
ldapEntryProvisionTriggers: { }
orphanedIncludeDisabledUsers: true
orphanedDrupalAcctBehavior: user_cancel_delete
orphanedDrupalAcctReportingInbox: ''
orphanedCheckQty: 100
orphanedAccountCheckInterval: always
userConflictResolve: resolve
manualAccountConflict: conflict_associate
acctCreation: ldap_behavior
disableAdminPasswordField: false
userUpdateCronQuery: people_sync
userUpdateCronInterval: always
userUpdateOnly: false
ldapUserSyncMappings:
drupal:
field-preferred_langcode:
ldap_attr: '[preferredLanguage]'
user_attr: '[field.preferred_langcode]'
convert: false
user_tokens: ''
config_module: ldap_user
prov_module: ldap_user
prov_events:
- create_drupal_user
- sync_to_drupal_user
field-field_user_category:
ldap_attr: '[employeeType]'
user_attr: '[field.field_user_category]'
convert: false
user_tokens: ''
config_module: ldap_user
prov_module: ldap_departments_sync
prov_events:
- create_drupal_user
- sync_to_drupal_user
field-field_user_dept_code:
ldap_attr: '[departmentNumber]'
user_attr: '[field.field_user_dept_code]'
convert: false
user_tokens: ''
config_module: ldap_user
prov_module: ldap_departments_sync
prov_events:
- create_drupal_user
- sync_to_drupal_user
field-field_user_id_lattes:
ldap_attr: '[lattesId]'
user_attr: '[field.field_user_id_lattes]'
convert: false
user_tokens: ''
config_module: ldap_user
prov_module: site_users
prov_events:
- create_drupal_user
- sync_to_drupal_user
field-field_user_name:
ldap_attr: '[displayName]'
user_attr: '[field.field_user_name]'
convert: false
user_tokens: ''
config_module: ldap_user
prov_module: site_users
prov_events:
- create_drupal_user
field-field_user_orcid:
ldap_attr: '[orcID]'
user_attr: '[field.field_user_orcid]'
convert: false
user_tokens: ''
config_module: ldap_user
prov_module: site_users
prov_events:
- create_drupal_user
- sync_to_drupal_user
field-field_user_work_phone:
ldap_attr: '[telephoneNumber]'
user_attr: '[field.field_user_work_phone]'
convert: false
user_tokens: ''
config_module: ldap_user
prov_module: ldap_departments_sync
prov_events:
- create_drupal_user
- sync_to_drupal_user
field-field_person_id:
ldap_attr: '[employeeNumber]'
user_attr: '[field.field_person_id]'
convert: false
user_tokens: ''
config_module: ldap_user
prov_module: site_users
prov_events:
- create_drupal_user
- sync_to_drupal_user
field-field_user_mathscinetid:
ldap_attr: '[mathSciNetId]'
user_attr: '[field.field_user_mathscinetid]'
convert: false
user_tokens: ''
config_module: ldap_user
prov_module: site_users
prov_events:
- create_drupal_user
- sync_to_drupal_user
ldap: { }