mirror of
https://gitlab.com/Chill-Projet/chill-bundles.git
synced 2025-06-07 18:44:08 +00:00
userpicker: fix role type: adapt on both allowed types
This commit is contained in:
parent
46ecab24c2
commit
75dda5b999
@ -16,6 +16,7 @@ use Chill\MainBundle\Entity\User;
|
||||
use Chill\MainBundle\Repository\UserACLAwareRepositoryInterface;
|
||||
use Chill\MainBundle\Repository\UserRepository;
|
||||
use Chill\MainBundle\Security\Authorization\AuthorizationHelper;
|
||||
use Chill\MainBundle\Templating\Entity\UserRender;
|
||||
use Symfony\Bridge\Doctrine\Form\Type\EntityType;
|
||||
use Symfony\Component\Form\AbstractType;
|
||||
use Symfony\Component\OptionsResolver\Options;
|
||||
@ -47,16 +48,20 @@ class UserPickerType extends AbstractType
|
||||
|
||||
protected UserRepository $userRepository;
|
||||
|
||||
private UserRender $userRender;
|
||||
|
||||
public function __construct(
|
||||
AuthorizationHelper $authorizationHelper,
|
||||
TokenStorageInterface $tokenStorage,
|
||||
UserRepository $userRepository,
|
||||
UserACLAwareRepositoryInterface $userACLAwareRepository
|
||||
UserACLAwareRepositoryInterface $userACLAwareRepository,
|
||||
UserRender $userRender
|
||||
) {
|
||||
$this->authorizationHelper = $authorizationHelper;
|
||||
$this->tokenStorage = $tokenStorage;
|
||||
$this->userRepository = $userRepository;
|
||||
$this->userACLAwareRepository = $userACLAwareRepository;
|
||||
$this->userRender = $userRender;
|
||||
}
|
||||
|
||||
public function configureOptions(OptionsResolver $resolver)
|
||||
@ -74,14 +79,19 @@ class UserPickerType extends AbstractType
|
||||
->setAllowedTypes('having_permissions_group_flag', ['string', 'null'])
|
||||
->setDefault('class', User::class)
|
||||
->setDefault('placeholder', 'Choose an user')
|
||||
->setDefault('choice_label', static function (User $u) {
|
||||
return $u->getUsername();
|
||||
->setDefault('choice_label', function (User $u) {
|
||||
return $this->userRender->renderString($u, []);
|
||||
})
|
||||
->setDefault('scope', null)
|
||||
->setAllowedTypes('scope', [Scope::class, 'array', 'null'])
|
||||
->setNormalizer('choices', function (Options $options) {
|
||||
if ($options['role'] instanceof Role) {
|
||||
$role = $options['role']->getRole();
|
||||
} else {
|
||||
$role = $options['role'];
|
||||
}
|
||||
$users = $this->userACLAwareRepository
|
||||
->findUsersByReachedACL($options['role']->getRole(), $options['center'], $options['scope'], true);
|
||||
->findUsersByReachedACL($role, $options['center'], $options['scope'], true);
|
||||
|
||||
if (null !== $options['having_permissions_group_flag']) {
|
||||
return $this->userRepository
|
||||
|
Loading…
x
Reference in New Issue
Block a user