vendor/thelia/core/lib/Thelia/Action/Administrator.php line 87

Open in your IDE?
  1. <?php
  2. /*
  3.  * This file is part of the Thelia package.
  4.  * http://www.thelia.net
  5.  *
  6.  * (c) OpenStudio <info@thelia.net>
  7.  *
  8.  * For the full copyright and license information, please view the LICENSE
  9.  * file that was distributed with this source code.
  10.  */
  11. namespace Thelia\Action;
  12. use Symfony\Component\EventDispatcher\EventDispatcherInterface;
  13. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  14. use Thelia\Core\Event\Administrator\AdministratorEvent;
  15. use Thelia\Core\Event\Administrator\AdministratorUpdatePasswordEvent;
  16. use Thelia\Core\Event\TheliaEvents;
  17. use Thelia\Mailer\MailerFactory;
  18. use Thelia\Model\Admin as AdminModel;
  19. use Thelia\Model\AdminQuery;
  20. use Thelia\Model\ConfigQuery;
  21. use Thelia\Tools\TokenProvider;
  22. class Administrator extends BaseAction implements EventSubscriberInterface
  23. {
  24.     /** @var MailerFactory */
  25.     protected $mailer;
  26.     /** @var TokenProvider */
  27.     protected $tokenProvider;
  28.     public function __construct(MailerFactory $mailerTokenProvider $tokenProvider)
  29.     {
  30.         $this->mailer $mailer;
  31.         $this->tokenProvider $tokenProvider;
  32.     }
  33.     /**
  34.      * @param $eventName
  35.      */
  36.     public function create(AdministratorEvent $event$eventNameEventDispatcherInterface $dispatcher): void
  37.     {
  38.         $administrator = new AdminModel();
  39.         $administrator
  40.             ->setFirstname($event->getFirstname())
  41.             ->setLastname($event->getLastname())
  42.             ->setEmail($event->getEmail())
  43.             ->setLogin($event->getLogin())
  44.             ->setPassword($event->getPassword())
  45.             ->setProfileId($event->getProfile())
  46.             ->setLocale($event->getLocale())
  47.         ;
  48.         $administrator->save();
  49.         $event->setAdministrator($administrator);
  50.     }
  51.     /**
  52.      * @param $eventName
  53.      */
  54.     public function update(AdministratorEvent $event$eventNameEventDispatcherInterface $dispatcher): void
  55.     {
  56.         if (null !== $administrator AdminQuery::create()->findPk($event->getId())) {
  57.             $administrator
  58.                 ->setFirstname($event->getFirstname())
  59.                 ->setLastname($event->getLastname())
  60.                 ->setLogin($event->getLogin())
  61.                 ->setEmail($event->getEmail())
  62.                 ->setProfileId($event->getProfile())
  63.                 ->setLocale($event->getLocale())
  64.             ;
  65.             if ('' !== $event->getPassword()) {
  66.                 $administrator->setPassword($event->getPassword());
  67.             }
  68.             $administrator->save();
  69.             $event->setAdministrator($administrator);
  70.         }
  71.     }
  72.     public function delete(AdministratorEvent $event): void
  73.     {
  74.         if (null !== $administrator AdminQuery::create()->findPk($event->getId())) {
  75.             $administrator
  76.                 ->delete()
  77.             ;
  78.             $event->setAdministrator($administrator);
  79.         }
  80.     }
  81.     public function updatePassword(AdministratorUpdatePasswordEvent $event): void
  82.     {
  83.         $admin $event->getAdmin();
  84.         $admin
  85.             ->setPassword($event->getPassword())
  86.             ->setPasswordRenewToken(null)
  87.             ->save();
  88.     }
  89.     public function createPassword(AdministratorEvent $event): void
  90.     {
  91.         $admin $event->getAdministrator();
  92.         $email $admin->getEmail();
  93.         if (!empty($email)) {
  94.             $renewToken $this->tokenProvider->getToken();
  95.             $admin
  96.                 ->setPasswordRenewToken($renewToken)
  97.                 ->save();
  98.             $this->mailer->sendEmailMessage(
  99.                 'new_admin_password',
  100.                 [ConfigQuery::getStoreEmail() => ConfigQuery::getStoreName()],
  101.                 [$email => $admin->getFirstname().' '.$admin->getLastname()],
  102.                 [
  103.                     'token' => $renewToken,
  104.                     'admin' => $admin,
  105.                 ]
  106.             );
  107.         }
  108.     }
  109.     /**
  110.      * {@inheritdoc}
  111.      */
  112.     public static function getSubscribedEvents()
  113.     {
  114.         return [
  115.             TheliaEvents::ADMINISTRATOR_CREATE => ['create'128],
  116.             TheliaEvents::ADMINISTRATOR_UPDATE => ['update'128],
  117.             TheliaEvents::ADMINISTRATOR_DELETE => ['delete'128],
  118.             TheliaEvents::ADMINISTRATOR_UPDATEPASSWORD => ['updatePassword'128],
  119.             TheliaEvents::ADMINISTRATOR_CREATEPASSWORD => ['createPassword'128],
  120.         ];
  121.     }
  122. }