mirror of
https://gitlab.unicamp.br/infimecc_drupal11_modules/site_users.git
synced 2026-03-10 02:07:41 -03:00
feat: Sincroniza foto LDAP para field_user_photos no login
Implementa hook_ldap_user_edit_user_alter() para capturar a foto do atributo LDAP configurado e adicioná-la como primeira entrada em field_user_photos, sem queries adicionais ao servidor. Inclui LdapPhotoSyncService com detecção de tipo via exif_imagetype, deduplicação por MD5 e reutilização de media entity existente. Adiciona checkbox para ativar/desativar o sync no formulário de settings, com visibilidade condicional do campo de atributo via #states. Corrige acesso a mídias publicadas para usuários autenticados via hook_media_access(), resolvendo "Acesso restrito" no widget e na visualização do perfil. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -17,6 +17,7 @@ use Drupal\field\FieldConfigInterface;
|
||||
use Drupal\media\MediaInterface;
|
||||
use Drupal\site_users\Plugin\Field\FieldType\SocialLinkItem;
|
||||
use Drupal\user\UserInterface;
|
||||
use Symfony\Component\Ldap\Entry;
|
||||
|
||||
/**
|
||||
* Implements hook_theme().
|
||||
@@ -331,6 +332,25 @@ function site_users_user_presave(UserInterface $user) {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Implements hook_ENTITY_TYPE_access() for media entities.
|
||||
*/
|
||||
function site_users_media_access(\Drupal\media\MediaInterface $entity, string $operation, AccountInterface $account): AccessResult {
|
||||
if ($operation === 'view' && $entity->isPublished() && $account->isAuthenticated()) {
|
||||
return AccessResult::allowed()
|
||||
->cachePerUser()
|
||||
->addCacheableDependency($entity);
|
||||
}
|
||||
return AccessResult::neutral();
|
||||
}
|
||||
|
||||
/**
|
||||
* Implements hook_ldap_user_edit_user_alter().
|
||||
*/
|
||||
function site_users_ldap_user_edit_user_alter(UserInterface &$account, Entry $ldapEntry, array $context): void {
|
||||
\Drupal::service('site_users.ldap_photo_sync')->syncFromLdapEntry($account, $ldapEntry);
|
||||
}
|
||||
|
||||
/**
|
||||
* Implements hook_user_format_name_alter().
|
||||
*/
|
||||
|
||||
Reference in New Issue
Block a user