src/Entity/User.php line 19

Open in your IDE?
  1. <?php
  2. namespace App\Entity;
  3. use App\Service\Helper\DateTimeHelper;
  4. use DateTime;
  5. use Doctrine\Common\Collections\ArrayCollection;
  6. use Doctrine\Common\Collections\Collection;
  7. use Doctrine\ORM\Mapping as ORM;
  8. use Exception;
  9. /**
  10.  * @ORM\Entity(repositoryClass="App\Repository\UserRepository")
  11.  * @ORM\Table(name="users__users",
  12.  *     indexes={
  13.  *          @ORM\Index(name="password", columns={"password"})
  14.  *     })
  15.  */
  16. class User
  17. {
  18.     use IdTrait;
  19.     /**
  20.      * @ORM\Column(name="created_at", type="datetime", nullable=false)
  21.      */
  22.     private DateTime $createdAt;
  23.     /**
  24.      * @ORM\Column(name="phone", type="string", nullable=false, unique=true)
  25.      */
  26.     private string $phone;
  27.     /**
  28.      * @ORM\Column(name="password", type="string", nullable=false)
  29.      */
  30.     private string $password;
  31.     /**
  32.      * @ORM\Column(name="cookie", type="string", nullable=false)
  33.      */
  34.     private string $cookie;
  35.     /**
  36.      * @var Collection|UserRole[]
  37.      *
  38.      * @ORM\OneToMany(targetEntity="App\Entity\UserRole", mappedBy="user")
  39.      */
  40.     private $roles;
  41.     /**
  42.      * @ORM\OneToOne(targetEntity="App\Entity\Cart", mappedBy="user")
  43.      */
  44.     private ?Cart $cart null;
  45.     /**
  46.      * @ORM\OneToOne(targetEntity="Manager", mappedBy="user")
  47.      */
  48.     private ?Manager $manager null;
  49.     /**
  50.      * @throws Exception
  51.      */
  52.     public function __construct(string $phonestring $password)
  53.     {
  54.         $this->createdAt DateTimeHelper::getNowDateTime();
  55.         $this->phone $phone;
  56.         $this->password $password;
  57.         $this->roles = new ArrayCollection();
  58.         $this->cookie $this->generateCookie();
  59.     }
  60.     /**
  61.      * @return DateTime
  62.      */
  63.     public function getCreatedAt(): DateTime
  64.     {
  65.         return $this->createdAt;
  66.     }
  67.     /**
  68.      * @return string
  69.      */
  70.     public function getPhone(): string
  71.     {
  72.         return $this->phone;
  73.     }
  74.     /**
  75.      * @return string
  76.      */
  77.     public function getPassword(): string
  78.     {
  79.         return $this->password;
  80.     }
  81.     /**
  82.      * @return UserRole[]|Collection
  83.      */
  84.     public function getRoles()
  85.     {
  86.         return $this->roles;
  87.     }
  88.     /**
  89.      * @return Cart|null
  90.      */
  91.     public function getCart(): ?Cart
  92.     {
  93.         return $this->cart;
  94.     }
  95.     public function getManager(): ?Manager
  96.     {
  97.         return $this->manager;
  98.     }
  99.     public function setCookie(string $cookie): User
  100.     {
  101.         $this->cookie $cookie;
  102.         return $this;
  103.     }
  104.     public function getCookie(): string
  105.     {
  106.         return $this->cookie;
  107.     }
  108.     public function renewCookie(): User
  109.     {
  110.         return $this->setCookie($this->generateCookie());
  111.     }
  112.     public function generateCookie(): string
  113.     {
  114.         return md5(time() . $this->getPhone() . $this->getPassword());
  115.     }
  116.     public function isInRoles(array $roles)
  117.     {
  118.         foreach ($this->getRoles() as $userRole) {
  119.             if(in_array($userRole->getRole(), $roles)) return true;
  120.         }
  121.         return false;
  122.     }
  123. }