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\UserACLAwareRepositoryInterface;
|
||||||
use Chill\MainBundle\Repository\UserRepository;
|
use Chill\MainBundle\Repository\UserRepository;
|
||||||
use Chill\MainBundle\Security\Authorization\AuthorizationHelper;
|
use Chill\MainBundle\Security\Authorization\AuthorizationHelper;
|
||||||
|
use Chill\MainBundle\Templating\Entity\UserRender;
|
||||||
use Symfony\Bridge\Doctrine\Form\Type\EntityType;
|
use Symfony\Bridge\Doctrine\Form\Type\EntityType;
|
||||||
use Symfony\Component\Form\AbstractType;
|
use Symfony\Component\Form\AbstractType;
|
||||||
use Symfony\Component\OptionsResolver\Options;
|
use Symfony\Component\OptionsResolver\Options;
|
||||||
@ -47,16 +48,20 @@ class UserPickerType extends AbstractType
|
|||||||
|
|
||||||
protected UserRepository $userRepository;
|
protected UserRepository $userRepository;
|
||||||
|
|
||||||
|
private UserRender $userRender;
|
||||||
|
|
||||||
public function __construct(
|
public function __construct(
|
||||||
AuthorizationHelper $authorizationHelper,
|
AuthorizationHelper $authorizationHelper,
|
||||||
TokenStorageInterface $tokenStorage,
|
TokenStorageInterface $tokenStorage,
|
||||||
UserRepository $userRepository,
|
UserRepository $userRepository,
|
||||||
UserACLAwareRepositoryInterface $userACLAwareRepository
|
UserACLAwareRepositoryInterface $userACLAwareRepository,
|
||||||
|
UserRender $userRender
|
||||||
) {
|
) {
|
||||||
$this->authorizationHelper = $authorizationHelper;
|
$this->authorizationHelper = $authorizationHelper;
|
||||||
$this->tokenStorage = $tokenStorage;
|
$this->tokenStorage = $tokenStorage;
|
||||||
$this->userRepository = $userRepository;
|
$this->userRepository = $userRepository;
|
||||||
$this->userACLAwareRepository = $userACLAwareRepository;
|
$this->userACLAwareRepository = $userACLAwareRepository;
|
||||||
|
$this->userRender = $userRender;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function configureOptions(OptionsResolver $resolver)
|
public function configureOptions(OptionsResolver $resolver)
|
||||||
@ -74,14 +79,19 @@ class UserPickerType extends AbstractType
|
|||||||
->setAllowedTypes('having_permissions_group_flag', ['string', 'null'])
|
->setAllowedTypes('having_permissions_group_flag', ['string', 'null'])
|
||||||
->setDefault('class', User::class)
|
->setDefault('class', User::class)
|
||||||
->setDefault('placeholder', 'Choose an user')
|
->setDefault('placeholder', 'Choose an user')
|
||||||
->setDefault('choice_label', static function (User $u) {
|
->setDefault('choice_label', function (User $u) {
|
||||||
return $u->getUsername();
|
return $this->userRender->renderString($u, []);
|
||||||
})
|
})
|
||||||
->setDefault('scope', null)
|
->setDefault('scope', null)
|
||||||
->setAllowedTypes('scope', [Scope::class, 'array', 'null'])
|
->setAllowedTypes('scope', [Scope::class, 'array', 'null'])
|
||||||
->setNormalizer('choices', function (Options $options) {
|
->setNormalizer('choices', function (Options $options) {
|
||||||
|
if ($options['role'] instanceof Role) {
|
||||||
|
$role = $options['role']->getRole();
|
||||||
|
} else {
|
||||||
|
$role = $options['role'];
|
||||||
|
}
|
||||||
$users = $this->userACLAwareRepository
|
$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']) {
|
if (null !== $options['having_permissions_group_flag']) {
|
||||||
return $this->userRepository
|
return $this->userRepository
|
||||||
|
Loading…
x
Reference in New Issue
Block a user