feat: Módulo Site Users para customização de perfis de usuário

Módulo Drupal para gerenciamento de campos e fotos de perfil de usuários:
- Campos customizados: nome, telefone, categoria, departamento, biografia
- Suporte a múltiplas fotos com seleção de foto padrão
- Controle de permissões granular para visualização e edição
- Bloco de informações do usuário para exibição em páginas
- Configurações administrativas para limite de fotos e integração LDAP

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
2026-02-04 07:25:51 -03:00
commit 6215759045
28 changed files with 1554 additions and 0 deletions

View File

@@ -0,0 +1,73 @@
<?php
namespace Drupal\site_users\Form;
use Drupal\Core\Form\ConfigFormBase;
use Drupal\Core\Form\FormStateInterface;
/**
* Formulário de configuração do módulo Site Users.
*/
class SiteUsersSettingsForm extends ConfigFormBase {
/**
* {@inheritdoc}
*/
public function getFormId() {
return 'site_users_settings_form';
}
/**
* {@inheritdoc}
*/
protected function getEditableConfigNames() {
return ['site_users.settings'];
}
/**
* {@inheritdoc}
*/
public function buildForm(array $form, FormStateInterface $form_state) {
$config = $this->config('site_users.settings');
// Fieldset para configurações de fotos.
$form['photos'] = [
'#type' => 'fieldset',
'#title' => $this->t('Configurações de Fotos'),
'#collapsible' => FALSE,
];
$form['photos']['photos_max_count'] = [
'#type' => 'number',
'#title' => $this->t('Quantidade de fotos permitidas'),
'#description' => $this->t('Número máximo de fotos que um usuário pode adicionar ao perfil.'),
'#default_value' => $config->get('photos.max_count') ?? 5,
'#min' => 1,
'#max' => 100,
'#required' => TRUE,
];
$form['photos']['photos_ldap_attribute'] = [
'#type' => 'textfield',
'#title' => $this->t('Atributo LDAP da foto'),
'#description' => $this->t('Se LDAP estiver habilitado, informe o nome do atributo que contém a foto do usuário (ex: thumbnailPhoto, jpegPhoto).'),
'#default_value' => $config->get('photos.ldap_attribute') ?? 'jpegPhoto',
'#maxlength' => 255,
];
return parent::buildForm($form, $form_state);
}
/**
* {@inheritdoc}
*/
public function submitForm(array &$form, FormStateInterface $form_state) {
$this->config('site_users.settings')
->set('photos.max_count', $form_state->getValue('photos_max_count'))
->set('photos.ldap_attribute', $form_state->getValue('photos_ldap_attribute'))
->save();
parent::submitForm($form, $form_state);
}
}