From 66594b286a5ee104fc8a109acb0902a8fa7f6351 Mon Sep 17 00:00:00 2001 From: Kevin Papst Date: Fri, 2 Aug 2019 08:31:45 +0200 Subject: [PATCH] remove default role from user filter and role select (#993) --- src/Form/Type/UserRoleType.php | 24 +++++++++++++++------- src/Form/UserRolesType.php | 2 +- tests/Controller/ProfileControllerTest.php | 4 ++-- 3 files changed, 20 insertions(+), 10 deletions(-) diff --git a/src/Form/Type/UserRoleType.php b/src/Form/Type/UserRoleType.php index 5eaa4f70..baf01484 100644 --- a/src/Form/Type/UserRoleType.php +++ b/src/Form/Type/UserRoleType.php @@ -9,9 +9,11 @@ namespace App\Form\Type; +use App\Entity\User; use App\Security\RoleService; use Symfony\Component\Form\AbstractType; use Symfony\Component\Form\Extension\Core\Type\ChoiceType; +use Symfony\Component\OptionsResolver\Options; use Symfony\Component\OptionsResolver\OptionsResolver; /** @@ -22,7 +24,7 @@ class UserRoleType extends AbstractType /** * @var RoleService */ - protected $roles; + private $roles; public function __construct(RoleService $roles) { @@ -34,15 +36,23 @@ class UserRoleType extends AbstractType */ public function configureOptions(OptionsResolver $resolver) { - $roles = []; - foreach ($this->roles->getAvailableNames() as $name) { - $roles[$name] = $name; - } - $resolver->setDefaults([ 'label' => 'label.roles', - 'choices' => $roles, + 'include_default' => false, ]); + + $resolver->setDefault('choices', function (Options $options) { + $roles = []; + foreach ($this->roles->getAvailableNames() as $name) { + $roles[$name] = $name; + } + + if ($options['include_default'] !== true && isset($roles[User::DEFAULT_ROLE])) { + unset($roles[User::DEFAULT_ROLE]); + } + + return $roles; + }); } /** diff --git a/src/Form/UserRolesType.php b/src/Form/UserRolesType.php index ebf1b042..442708b7 100644 --- a/src/Form/UserRolesType.php +++ b/src/Form/UserRolesType.php @@ -26,10 +26,10 @@ class UserRolesType extends AbstractType public function buildForm(FormBuilderInterface $builder, array $options) { $builder - // string[] ->add('roles', UserRoleType::class, [ 'label' => 'label.roles', 'multiple' => true, + 'expanded' => true, ]) ; } diff --git a/tests/Controller/ProfileControllerTest.php b/tests/Controller/ProfileControllerTest.php index ba3eccae..ab0f8595 100644 --- a/tests/Controller/ProfileControllerTest.php +++ b/tests/Controller/ProfileControllerTest.php @@ -298,8 +298,8 @@ class ProfileControllerTest extends ControllerBaseTest $form = $client->getCrawler()->filter('form[name=user_roles]')->form(); $client->submit($form, [ 'user_roles[roles]' => [ - 'ROLE_TEAMLEAD', - 'ROLE_SUPER_ADMIN', + 0 => 'ROLE_TEAMLEAD', + 2 => 'ROLE_SUPER_ADMIN', ] ]);