lib/boab/cms-bundle/src/Entity/User.php line 23

Open in your IDE?
  1. <?php
  2. namespace Boab\CmsBundle\Entity;
  3. use Boab\CmsBundle\Contract\ThumbnailInterface;
  4. use Boab\CmsBundle\Contract\ThumbnailTrait;
  5. use Doctrine\Common\Collections\ArrayCollection;
  6. use Doctrine\Common\Collections\Collection;
  7. use Doctrine\ORM\Mapping as ORM;
  8. use Symfony\Component\Serializer\Annotation\Groups;
  9. use Symfony\Component\Security\Core\User\EquatableInterface;
  10. use Symfony\Component\Security\Core\User\PasswordAuthenticatedUserInterface;
  11. use Symfony\Component\Security\Core\User\UserInterface as BaseUserInterface;
  12. /**
  13.  * User
  14.  *
  15.  * @ORM\Table(name="users")
  16.  * @ORM\InheritanceType("JOINED")
  17.  * @ORM\DiscriminatorColumn(name="user_type", type="string")* 
  18.  * @ORM\Entity(repositoryClass="Boab\CmsBundle\Repository\UserRepository")
  19.  */
  20. abstract class User implements UserInterfaceEquatableInterfacePasswordAuthenticatedUserInterface\SerializableThumbnailInterface
  21. {
  22.     const ROLE_DEFAULT 'ROLE_USER';
  23.     CONST DATE_FORMAT 'Y-m-d H:i:s';
  24.     CONST STATUS_ENABLE 1;
  25.     CONST STATUS_DISABLE 0;
  26.     use ThumbnailTrait;
  27.    /**
  28.      * @var integer
  29.      *
  30.      * @ORM\Column(name="id", type="integer")
  31.      * @ORM\Id
  32.      * @ORM\GeneratedValue(strategy="AUTO")
  33.      */
  34.     protected $id;
  35.     /**
  36.      * @var string
  37.      * @Groups({"detail", "list"})
  38.      * @ORM\Column(name="username", type="string", length=100, precision=0, scale=0, nullable=false, unique=true)
  39.      */
  40.     protected $username;
  41.     /**
  42.      * @var string
  43.      * @Groups({"detail", "list"})
  44.      * @ORM\Column(name="firstname", type="string", length=100, precision=0, scale=0, nullable=true, unique=false)
  45.      */
  46.     protected $firstname;
  47.     /**
  48.      * @var string
  49.      * @Groups({"detail", "list"})     
  50.      * @ORM\Column(name="lastname", type="string", length=100, precision=0, scale=0, nullable=true, unique=false)
  51.      */
  52.     protected $lastname;
  53.     /**
  54.      * @var string
  55.      * @Groups({"detail", "list"})     
  56.      * @ORM\Column(name="gender", type="string", nullable=true, unique=false)
  57.      */
  58.     protected $gender;    
  59.     /**
  60.      * @var integer
  61.      * @Groups({"detail"})     
  62.      * @ORM\Column(name="dob", type="date", nullable=true)
  63.      */
  64.     protected $dob;
  65.     /**
  66.      * @var integer
  67.      * @Groups({"detail"})
  68.      * @ORM\Column(name="contact_number", type="string", length=30, precision=0, scale=0, nullable=true, unique=false)
  69.      */
  70.     protected $contactNumber
  71.     /**
  72.      * @var string
  73.      * @Groups({"detail", "list"})
  74.      * @ORM\Column(name="email", type="string", length=100, precision=0, scale=0, nullable=false, unique=true)
  75.      */
  76.     protected $email;
  77.     /**
  78.      * @var string
  79.      * @Groups({"detail"})
  80.      * @ORM\Column(name="address", type="string", length=255, precision=0, scale=0, nullable=true, unique=false)
  81.      */
  82.     protected $address;    
  83.     /**
  84.      * @var string
  85.      * @Groups({"detail"})
  86.      * @ORM\Column(name="city", type="string", length=100, precision=0, scale=0, nullable=true, unique=false)
  87.      */
  88.     protected $city
  89.     /**
  90.      * @var string
  91.      * @Groups({"detail"})
  92.      * @ORM\Column(name="country", type="string", length=100, precision=0, scale=0, nullable=true, unique=false)
  93.      */
  94.     protected $country;    
  95.     /**
  96.      * @var string
  97.      * @Groups({"detail"})
  98.      * @ORM\Column(name="postal_code", type="string", length=100, precision=0, scale=0, nullable=true, unique=false)
  99.      */
  100.     protected $postalCode;
  101.     /**
  102.      * @var array
  103.      * @Groups({"detail"})
  104.      * @ORM\Column(type="array", name="roles")
  105.      */
  106.     protected $roles = [];
  107.     /**
  108.      * @var string
  109.      *
  110.      * @ORM\Column(name="password", type="string", length=200, precision=0, scale=0, nullable=true)
  111.      */
  112.     protected $password;
  113.     /**
  114.      * @var string
  115.      *
  116.      * @ORM\Column(name="salt", type="string", length=100, precision=0, scale=0, nullable=true, unique=false)
  117.      */
  118.     protected $salt
  119.     /**
  120.      * @var string
  121.      *
  122.      * @ORM\Column(name="account_status", type="string", length=100, precision=0, scale=0, nullable=true, unique=false)
  123.      */
  124.     protected $accountStatus;    
  125.     
  126.     /**
  127.      * @ORM\Column(name="is_activated", type="boolean", options={"default":"0"})
  128.      */
  129.     protected $isActivated
  130.     
  131.     /**
  132.      * @ORM\OneToMany(targetEntity="Boab\CmsBundle\Entity\Content", mappedBy="user")
  133.      */
  134.     private $contents;
  135.     /**
  136.      * @var \DateTime
  137.      *
  138.      * @ORM\Column(name="created_at", type="datetime", nullable=true)
  139.      */
  140.     private $createdAt;
  141.     protected $plainPassword;
  142.     /**
  143.      * @ORM\Column(type="datetime", nullable=true)
  144.      */
  145.     private $updatedAt;
  146.     public function __construct()
  147.     {
  148.         $this->contents = new ArrayCollection();
  149.     }
  150.     /**
  151.      * Get id
  152.      *
  153.      * @return integer 
  154.      */
  155.     public function getId()
  156.     {
  157.         return $this->id;
  158.     }
  159.     /**
  160.      * Set username
  161.      *
  162.      * @param string $username
  163.      * @return User
  164.      */
  165.     public function setUsername($username)
  166.     {
  167.         $this->username $username;
  168.         return $this;
  169.     }
  170.     /**
  171.      * Get username
  172.      *
  173.      * @return string 
  174.      */
  175.     public function getUsername()
  176.     {
  177.         return $this->username;
  178.     }
  179.     /**
  180.      * Set firstname
  181.      *
  182.      * @param string $firstname
  183.      * @return User
  184.      */
  185.     public function setFirstname($firstname)
  186.     {
  187.         $this->firstname $firstname;
  188.         return $this;
  189.     }
  190.     /**
  191.      * Get firstname
  192.      *
  193.      * @return string 
  194.      */
  195.     public function getFirstname(): ?string
  196.     {
  197.         return $this->firstname;
  198.     }
  199.     /**
  200.      * Set lastname
  201.      *
  202.      * @param string $lastname
  203.      * @return User
  204.      */
  205.     public function setLastname($lastname)
  206.     {
  207.         $this->lastname $lastname;
  208.         return $this;
  209.     }
  210.     /**
  211.      * Get lastname
  212.      *
  213.      * @return string 
  214.      */
  215.     public function getLastname(): string
  216.     {
  217.         return $this->lastname;
  218.     }
  219.     /**
  220.      * Set email
  221.      *
  222.      * @param string $email
  223.      * @return User
  224.      */
  225.     public function setEmail($email)
  226.     {
  227.         $this->email $email;
  228.         return $this;
  229.     }
  230.     /**
  231.      * Get email
  232.      *
  233.      * @return string 
  234.      */
  235.     public function getEmail(): string
  236.     {
  237.         return $this->email;
  238.     }
  239.     /**
  240.      * Set contactNumber
  241.      *
  242.      * @param string $contactNumber
  243.      *
  244.      * @return UserAdmin
  245.      */
  246.     public function setContactNumber($contactNumber)
  247.     {
  248.         $this->contactNumber $contactNumber;
  249.         return $this;
  250.     }
  251.     /**
  252.      * Get contactNumber
  253.      *
  254.      * @return string
  255.      */
  256.     public function getContactNumber(): ?string
  257.     {
  258.         return $this->contactNumber;
  259.     } 
  260.     public function addRole($role)
  261.     {
  262.         $role strtoupper($role);
  263.         if (!in_array($role$this->getRoles(), true)) {
  264.             $this->roles[] = $role;
  265.         }
  266.         return $this;
  267.     }
  268.     /**
  269.      * Set role
  270.      *
  271.      * @param string $role
  272.      * @return User
  273.      */
  274.     public function setRoles(array $roles)
  275.     {
  276.         $this->roles = array();
  277.         foreach ($roles as $role) {
  278.             $this->addRole($role);
  279.         }
  280.         return $this;
  281.     }
  282.     /**
  283.      * Get role
  284.      *
  285.      * @return array
  286.      */
  287.     public function getRoles()
  288.     {   
  289.         return array_unique(array_merge($this->roles, [self::ROLE_DEFAULT]));
  290.     }
  291.     public function hasRole($role)
  292.     {
  293.         return in_array(strtoupper($role), $this->getRoles(), true);
  294.     }
  295.     /**
  296.      * Set password
  297.      *
  298.      * @param string $password
  299.      * @return User
  300.      */
  301.     public function setPassword($password)
  302.     {
  303.         $this->password $password;
  304.         return $this;
  305.     }
  306.     /**
  307.      * Get password
  308.      *
  309.      * @return string 
  310.      */
  311.     public function getPassword(): ?string
  312.     {
  313.         return $this->password;
  314.     }
  315.     /**
  316.      * Set salt
  317.      *
  318.      * @param string $salt
  319.      * @return User
  320.      */
  321.     public function setSalt($salt='')
  322.     {
  323.         $this->salt = ($salt !='')? $salt uniqid(mt_rand(), true);
  324.         return $this;
  325.     }
  326.     /**
  327.      * Get salt
  328.      *
  329.      * @return string 
  330.      */
  331.     public function getSalt()
  332.     {
  333.         return $this->salt;
  334.     }
  335.     /**
  336.      * Set dob
  337.      *
  338.      * @param \DateTime $dob
  339.      *
  340.      * @return User
  341.      */
  342.     public function setDob($dob)
  343.     {
  344.         $this->dob $dob;
  345.         return $this;
  346.     }
  347.     /**
  348.      * Get dob
  349.      *
  350.      * @return \DateTime
  351.      */
  352.     public function getDob()
  353.     {
  354.         return $this->dob;
  355.     }
  356.     /**
  357.      * Set address
  358.      *
  359.      * @param string $address
  360.      *
  361.      * @return User
  362.      */
  363.     public function setAddress($address)
  364.     {
  365.         $this->address $address;
  366.         return $this;
  367.     }
  368.     /**
  369.      * Get address
  370.      *
  371.      * @return string
  372.      */
  373.     public function getAddress()
  374.     {
  375.         return $this->address;
  376.     }
  377.     /**
  378.      * Set city
  379.      *
  380.      * @param string $city
  381.      *
  382.      * @return Employee
  383.      */
  384.     public function setCity($city)
  385.     {
  386.         $this->city $city;
  387.         return $this;
  388.     }
  389.     /**
  390.      * Get city
  391.      *
  392.      * @return string
  393.      */
  394.     public function getCity()
  395.     {
  396.         return $this->city;
  397.     }
  398.     /**
  399.      * Set country
  400.      *
  401.      * @param string $country
  402.      *
  403.      * @return Employee
  404.      */
  405.     public function setCountry($country)
  406.     {
  407.         $this->country $country;
  408.         return $this;
  409.     }
  410.     /**
  411.      * Get country
  412.      *
  413.      * @return string
  414.      */
  415.     public function getCountry()
  416.     {
  417.         return $this->country;
  418.     }    
  419.     /**
  420.      * Set isActivated
  421.      *
  422.      * @param boolean $isActivated
  423.      *
  424.      * @return User
  425.      */
  426.     public function setIsActivated($isActivated)
  427.     {
  428.         $this->isActivated $isActivated;
  429.         return $this;
  430.     }
  431.     /**
  432.      * Get isActivated
  433.      *
  434.      * @return boolean
  435.      */
  436.     public function getIsActivated()
  437.     {
  438.         return $this->isActivated;
  439.     }
  440.     /**
  441.      * Get isActivated
  442.      *
  443.      * @return boolean
  444.      */
  445.     public function isActivated()
  446.     {
  447.         return $this->isActivated;
  448.     }    
  449.     public function getCreatedAt(): ?\DateTimeInterface
  450.     {
  451.         return $this->createdAt;
  452.     }
  453.     public function setCreatedAt(?\DateTimeInterface $createdAt): self
  454.     {
  455.         $this->createdAt $createdAt;
  456.         return $this;
  457.     }    
  458.     public function isAccountNonExpired()
  459.     {
  460.         return true;
  461.     }
  462.     public function isAccountNonLocked()
  463.     {
  464.         return true;
  465.     }
  466.     public function isCredentialsNonExpired()
  467.     {
  468.         return true;
  469.     }
  470.     public function isEnabled()
  471.     {
  472.         return true;
  473.     }    
  474.     
  475.     public function eraseCredentials()
  476.     {
  477.     }
  478.     public function isEqualTo(BaseUserInterface $user):bool
  479.     {
  480.         if ($this->password !== $user->getPassword()) {
  481.             return false;
  482.         }
  483.         if ($this->username !== $user->getUsername()) {
  484.             return false;
  485.         }
  486.         return true;
  487.     }    
  488.     
  489.     /** @see \Serializable::serialize() */
  490.     public function serialize()
  491.     {
  492.         return serialize(array(
  493.             $this->id,
  494.             $this->username,
  495.             $this->password,
  496.         ));
  497.     }
  498.     /** @see \Serializable::unserialize() */
  499.     public function unserialize($serialized)
  500.     {
  501.         list ($this->id$this->username$this->password) = unserialize($serialized, ['allowed_classes' => false]);
  502.     }
  503.     /**
  504.      * Set gender.
  505.      *
  506.      * @param string|null $gender
  507.      *
  508.      * @return User
  509.      */
  510.     public function setGender($gender null)
  511.     {
  512.         $this->gender $gender;
  513.         return $this;
  514.     }
  515.     /**
  516.      * Get gender.
  517.      *
  518.      * @return string|null
  519.      */
  520.     public function getGender()
  521.     {
  522.         return $this->gender;
  523.     }
  524.     /**
  525.      * Set plainPassword.
  526.      *
  527.      * @param string|null $plainPassword
  528.      *
  529.      * @return User
  530.      */
  531.     public function setPlainPassword($plainPassword null)
  532.     {
  533.         $this->plainPassword $plainPassword;
  534.         return $this;
  535.     }
  536.     /**
  537.      * Get plainPassword.
  538.      *
  539.      * @return string|null
  540.      */
  541.     public function getPlainPassword()
  542.     {
  543.         return $this->plainPassword;
  544.     }
  545.     /**
  546.      * Add content.
  547.      *
  548.      * @param \Boab\CmsBundle\Entity\Content $content
  549.      *
  550.      * @return User
  551.      */
  552.     public function addContent(\Boab\CmsBundle\Entity\Content $content)
  553.     {
  554.         $this->contents[] = $content;
  555.         return $this;
  556.     }
  557.     /**
  558.      * Remove content.
  559.      *
  560.      * @param \Boab\CmsBundle\Entity\Content $content
  561.      *
  562.      * @return boolean TRUE if this collection contained the specified element, FALSE otherwise.
  563.      */
  564.     public function removeContent(\Boab\CmsBundle\Entity\Content $content)
  565.     {
  566.         return $this->contents->removeElement($content);
  567.     }
  568.     /**
  569.      * Get contents.
  570.      *
  571.      * @return \Doctrine\Common\Collections\Collection
  572.      */
  573.     public function getContents()
  574.     {
  575.         return $this->contents;
  576.     }
  577.     public function getUserIdentifier():string
  578.     {
  579.         return $this->email;
  580.     }
  581.     public function getPostalCode(): ?string
  582.     {
  583.         return $this->postalCode;
  584.     }
  585.     public function setPostalCode(?string $postalCode): self
  586.     {
  587.         $this->postalCode $postalCode;
  588.         return $this;
  589.     }
  590.     public function getAccountStatus(): ?string
  591.     {
  592.         return $this->accountStatus;
  593.     }
  594.     public function setAccountStatus(?string $accountStatus): self
  595.     {
  596.         $this->accountStatus $accountStatus;
  597.         return $this;
  598.     }
  599.     public function getUpdatedAt(): ?\DateTimeInterface
  600.     {
  601.         return $this->updatedAt;
  602.     }
  603.     public function setUpdatedAt(?\DateTimeInterface $updatedAt): self
  604.     {
  605.         $this->updatedAt $updatedAt;
  606.         return $this;
  607.     }
  608. }