src/EasyAdmin/Controller/AccessUserCrudController.php line 39

Open in your IDE?
  1. <?php
  2. namespace App\EasyAdmin\Controller;
  3. use App\Entity\AccessControl\AccessUser;
  4. use EasyCorp\Bundle\EasyAdminBundle\Controller\AbstractCrudController;
  5. use EasyCorp\Bundle\EasyAdminBundle\Event\BeforeEntityPersistedEvent;
  6. use EasyCorp\Bundle\EasyAdminBundle\Event\BeforeEntityUpdatedEvent;
  7. use EasyCorp\Bundle\EasyAdminBundle\Field\ArrayField;
  8. use EasyCorp\Bundle\EasyAdminBundle\Field\AssociationField;
  9. use EasyCorp\Bundle\EasyAdminBundle\Field\ChoiceField;
  10. use EasyCorp\Bundle\EasyAdminBundle\Field\EmailField;
  11. use EasyCorp\Bundle\EasyAdminBundle\Field\ImageField;
  12. use EasyCorp\Bundle\EasyAdminBundle\Field\TextField;
  13. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  14. use Symfony\Component\Security\Core\Encoder\UserPasswordEncoderInterface;
  15. use EasyCorp\Bundle\EasyAdminBundle\Config\Actions;
  16. use EasyCorp\Bundle\EasyAdminBundle\Config\Action;
  17. use EasyCorp\Bundle\EasyAdminBundle\Config\Crud;
  18. class AccessUserCrudController extends AbstractCrudController implements EventSubscriberInterface
  19. {
  20.     private $passwordEncoder;
  21.     public function __construct(UserPasswordEncoderInterface $passwordEncoder)
  22.     {
  23.         $this->passwordEncoder $passwordEncoder;
  24.     }
  25.     public static function getSubscribedEvents(): array
  26.     {
  27.         return [
  28.             BeforeEntityPersistedEvent::class => 'hashPassword',
  29.             BeforeEntityUpdatedEvent::class => 'hashPassword',
  30.         ];
  31.     }
  32.     public function hashPassword($event): void
  33.     {
  34.         $entity $event->getEntityInstance();
  35.         if (!$entity instanceof AccessUser) {
  36.             return;
  37.         }
  38.         if(empty($entity->getUsername())) {
  39.             $entity->setUsername($entity->getEmail());
  40.         }
  41.         if (!empty($entity->plainPassword)) {
  42.             $hashedPassword $this->passwordEncoder->encodePassword($entity$entity->plainPassword);
  43.             $entity->setPassword($hashedPassword);
  44.         }
  45.     }
  46.     public static function getEntityFqcn(): string
  47.     {
  48.         return AccessUser::class;
  49.     }
  50.        /* public function configureActions(Actions $actions): Actions
  51.     {
  52.         $enable2FA = Action::new('enable2fa', 'Enable 2FA')
  53.             ->linkToRoute('enable_2fa', function (AccessUser $user): array {
  54.                 return [
  55.                     'id' => $user->getId(), 
  56.                 ];
  57.             })
  58.             ->setCssClass('btn btn-success');
  59.         return $actions
  60.             ->add(Crud::PAGE_INDEX, $enable2FA);
  61.     }*/
  62.     public function configureFields(string $pageName): iterable
  63.     {
  64.         return [
  65.             ChoiceField::new('roles''Rôles')
  66.                ->setChoices([
  67.         'Super Administrateur' => 'ROLE_SUPER_ADMIN',
  68.         'Partenaire de rédaction' => 'ROLE_CONTENT_WRITER',
  69.         'Client Optique Center' => 'ROLE_OPTICAL',
  70.     ])
  71.                 ->allowMultipleChoices()
  72.                 ->onlyOnForms(),
  73.             TextField::new('name''Prénom')->setColumns(6),
  74.             TextField::new('lastname''Nom')->setColumns(6),
  75.             EmailField::new('email''Email')->setColumns(6),
  76.             TextField::new('plainPassword''Mot de passe')
  77.                 ->setFormTypeOption('attr', ['type' => 'password'])
  78.                 ->setRequired(false)
  79.                 ->setHelp('Le mot de passe sera encodé automatiquement.')->onlyOnForms()->setColumns(6),
  80.         ];
  81.     }
  82. }