src/Entity/User/AdminUser.php line 24

Open in your IDE?
  1. <?php
  2. declare(strict_types=1);
  3. namespace App\Entity\User;
  4. use App\Entity\Customer\Customer;
  5. use App\Entity\Order\Order;
  6. use App\Entity\Refund\Refund;
  7. use App\Trait\Archivable;
  8. use BitBag\SyliusAclPlugin\Entity\Role;
  9. use BitBag\SyliusAclPlugin\Entity\RoleInterface;
  10. use BitBag\SyliusAclPlugin\Model\RoleableTrait;
  11. use BitBag\SyliusAclPlugin\Model\ToggleablePermissionCheckerTrait;
  12. use Doctrine\Common\Collections\ArrayCollection;
  13. use Doctrine\Common\Collections\Collection;
  14. use Doctrine\ORM\Mapping as ORM;
  15. use Scheb\TwoFactorBundle\Model\Google\TwoFactorInterface;
  16. use Sylius\Component\Core\Model\AdminUser as BaseAdminUser;
  17. use TheCodingMachine\DoubleAuthenticationPlugin\Model\TcmDoubleAuthenticationPluginTrait;
  18. #[ORM\Table(name'sylius_admin_user')]
  19. #[ORM\Entity]
  20. class AdminUser extends BaseAdminUser implements TwoFactorInterface
  21. {
  22.     use ToggleablePermissionCheckerTrait;
  23.     use RoleableTrait;
  24.     use TcmDoubleAuthenticationPluginTrait;
  25.     use Archivable;
  26.     /** @var bool */
  27.     #[ORM\Column(type'boolean')]
  28.     protected $enablePermissionChecker false;
  29.     /** @var Collection<int, RoleInterface>|RoleInterface[] */
  30.     #[ORM\JoinTable(name'bitbag_admin_users_roles_resources')]
  31.     #[ORM\JoinColumn(name'admin_user_id'referencedColumnName'id'uniquefalse)]
  32.     #[ORM\InverseJoinColumn(name'role_resource_id'referencedColumnName'id'uniquefalse)]
  33.     #[ORM\ManyToMany(targetEntity'BitBag\SyliusAclPlugin\Entity\Role')]
  34.     protected $rolesResources;
  35.     #[ORM\OneToOne(mappedBy'adminUser'targetEntityCustomer::class, cascade: ['all'])]
  36.     private Customer|null $customer null;
  37.     #[ORM\OneToMany(mappedBy'createdBy'targetEntityRefund::class, cascade: ['all'], orphanRemovaltrue)]
  38.     private Collection $createdRefunds;
  39.     #[ORM\OneToMany(mappedBy'adminUserWhoValidated'targetEntityOrder::class, cascade: ['all'], orphanRemovaltrue)]
  40.     private Collection $validatedOrders;
  41.     #[ORM\OneToMany(mappedBy'adminUserReservedBy'targetEntityOrder::class, cascade: ['all'], orphanRemovaltrue)]
  42.     private Collection $reservedOrders;
  43.     #[ORM\OneToMany(mappedBy'attachedPDM'targetEntityCustomer::class, cascade: ['all'], orphanRemovaltrue)]
  44.     private Collection $attachedCustomers;
  45.     public function __construct()
  46.     {
  47.         parent::__construct();
  48.         $this->rolesResources = new ArrayCollection();
  49.         $this->createdRefunds = new ArrayCollection();
  50.         $this->validatedOrders = new ArrayCollection();
  51.         $this->reservedOrders = new ArrayCollection();
  52.         $this->attachedCustomers = new ArrayCollection();
  53.     }
  54.     public function getCustomer(): Customer|null
  55.     {
  56.         return $this->customer;
  57.     }
  58.     public function setCustomer(Customer|null $customer): void
  59.     {
  60.         $this->customer $customer;
  61.     }
  62.     public function hasRoleResourceByCode(string $code): bool
  63.     {
  64.         /** @var Role[] $roles */
  65.         $roles $this->rolesResources;
  66.         foreach ($roles as $role) {
  67.             if ($role->getCode() === $code) {
  68.                 return true;
  69.             }
  70.         }
  71.         return false;
  72.     }
  73.     public function getCreatedRefunds(): Collection
  74.     {
  75.         return $this->createdRefunds;
  76.     }
  77.     public function setCreatedRefunds(Collection $createdRefunds): void
  78.     {
  79.         $this->createdRefunds $createdRefunds;
  80.     }
  81.     public function addCreatedRefund(Refund $refund): void
  82.     {
  83.         if ($this->createdRefunds->contains($refund)) {
  84.             return;
  85.         }
  86.         $this->createdRefunds[] = $refund;
  87.         $refund->setCreatedBy($this);
  88.     }
  89.     public function removeCreatedRefund(Refund $refund): void
  90.     {
  91.         $this->createdRefunds->removeElement($refund);
  92.     }
  93.     /** @return Collection<array-key, Order> */
  94.     public function getValidatedOrders(): Collection
  95.     {
  96.         return $this->validatedOrders;
  97.     }
  98.     /** @param Collection<array-key, Order> $validatedOrders */
  99.     public function setValidatedOrders(Collection $validatedOrders): void
  100.     {
  101.         $this->validatedOrders $validatedOrders;
  102.     }
  103.     public function addValidatedOrder(Order $order): self
  104.     {
  105.         if (! $this->validatedOrders->contains($order)) {
  106.             $this->validatedOrders[] = $order;
  107.         }
  108.         return $this;
  109.     }
  110.     public function removeValidatedOrder(Order $order): self
  111.     {
  112.         $this->validatedOrders->removeElement($order);
  113.         return $this;
  114.     }
  115.     /** @return Collection<array-key, Order> */
  116.     public function getReservedOrders(): Collection
  117.     {
  118.         return $this->reservedOrders;
  119.     }
  120.     /** @param Collection<array-key, Order> $reservedOrders */
  121.     public function setReservedOrders(Collection $reservedOrders): void
  122.     {
  123.         $this->reservedOrders $reservedOrders;
  124.     }
  125.     public function addReservedOrder(Order $order): self
  126.     {
  127.         if (! $this->reservedOrders->contains($order)) {
  128.             $this->reservedOrders[] = $order;
  129.             $order->setAdminUserReservedBy($this);
  130.         }
  131.         return $this;
  132.     }
  133.     public function removeReservedOrder(Order $order): self
  134.     {
  135.         $this->reservedOrders->removeElement($order);
  136.         return $this;
  137.     }
  138.     /** @return Collection<array-key, Customer> */
  139.     public function getAttachedCustomers(): Collection
  140.     {
  141.         return $this->attachedCustomers;
  142.     }
  143.     /** @param Collection<array-key, Customer> $attachedCustomers */
  144.     public function setAttachedCustomers(Collection $attachedCustomers): void
  145.     {
  146.         $this->attachedCustomers $attachedCustomers;
  147.     }
  148.     public function addAttachedCustomer(Customer $customer): self
  149.     {
  150.         if (! $this->attachedCustomers->contains($customer)) {
  151.             $this->attachedCustomers[] = $customer;
  152.             $customer->setAttachedPDM($this);
  153.         }
  154.         return $this;
  155.     }
  156.     public function removeAttachedCustomer(Customer $customer): self
  157.     {
  158.         $this->$customer->removeElement($customer);
  159.         return $this;
  160.     }
  161.     public function getGoogleAuthenticatorUsername(): string
  162.     {
  163.         return $this->email ?: '';
  164.     }
  165.     public function getFullName(): string
  166.     {
  167.         return $this->firstName ' ' $this->lastName;
  168.     }
  169.     public function isLocked(): bool
  170.     {
  171.         return $this->locked;
  172.     }
  173.     public function hasPermission(string $permission): bool
  174.     {
  175.         foreach ($this->rolesResources as $roleResource) {
  176.             foreach ($roleResource->getPermissions() as $p) {
  177.                 if ($permission === $p) {
  178.                     return true;
  179.                 }
  180.             }
  181.         }
  182.         return false;
  183.     }
  184. }