3 namespace Wallabag\CoreBundle\Entity
;
5 use Doctrine\Common\Collections\ArrayCollection
;
6 use Doctrine\ORM\Mapping
as ORM
;
7 use Symfony\Component\Security\Core\User\UserInterface
;
8 use Symfony\Component\Security\Core\User\AdvancedUserInterface
;
9 use Symfony\Component\Validator\Constraints
as Assert
;
14 * @ORM\Table(name="user")
16 * @ORM\HasLifecycleCallbacks()
18 class User
implements AdvancedUserInterface
, \Serializable
23 * @ORM\Column(name="id", type="integer")
25 * @ORM\GeneratedValue(strategy="AUTO")
32 * @ORM\Column(name="username", type="text")
44 * @ORM\Column(type="string", length=32)
51 * @ORM\Column(name="password", type="text")
58 * @ORM\Column(name="name", type="text", nullable=true)
65 * @ORM\Column(name="email", type="text", nullable=false)
72 * @ORM\Column(name="is_active", type="boolean", nullable=false)
74 private $isActive = true;
79 * @ORM\Column(name="created_at", type="datetime")
86 * @ORM\Column(name="updated_at", type="datetime")
91 * @ORM\OneToMany(targetEntity="Entry", mappedBy="user", cascade={"remove"})
96 * @ORM\OneToOne(targetEntity="Config", mappedBy="user")
100 public function __construct()
102 $this->salt
= md5(uniqid(null, true));
103 $this->entries
= new ArrayCollection();
110 public function timestamps()
112 if (is_null($this->createdAt
)) {
113 $this->createdAt
= new \
DateTime();
116 $this->updatedAt
= new \
DateTime();
124 public function getId()
132 * @param string $username
135 public function setUsername($username)
137 $this->username
= $username;
147 public function getUsername()
149 return $this->username
;
155 public function getSalt()
163 public function getRoles()
165 return array('ROLE_USER');
171 * @param string $password
174 public function setPassword($password)
176 if (!$password && 0 === strlen($password)) {
180 $this->password
= sha1($password.$this->getUsername().$this->getSalt());
190 public function getPassword()
192 return $this->password
;
198 * @param string $name
201 public function setName($name)
213 public function getName()
221 * @param string $email
224 public function setEmail($email)
226 $this->email
= $email;
236 public function getEmail()
244 public function getCreatedAt()
246 return $this->createdAt
;
252 public function getUpdatedAt()
254 return $this->updatedAt
;
258 * @param Entry $entry
262 public function addEntry(Entry
$entry)
264 $this->entries
[] = $entry;
270 * @return ArrayCollection<Entry>
272 public function getEntries()
274 return $this->entries
;
280 public function eraseCredentials()
285 * @see \Serializable::serialize()
287 public function serialize()
289 return serialize(array(
295 * @see \Serializable::unserialize()
297 public function unserialize($serialized)
301 ) = unserialize($serialized);
304 public function isEqualTo(UserInterface
$user)
306 return $this->username
=== $user->getUsername();
309 public function isAccountNonExpired()
314 public function isAccountNonLocked()
319 public function isCredentialsNonExpired()
324 public function isEnabled()
326 return $this->isActive
;
331 * @param \Wallabag\CoreBundle\Entity\Config $config
334 public function setConfig(\Wallabag\CoreBundle\Entity\Config
$config = null)
336 $this->config
= $config;
344 * @return \Wallabag\CoreBundle\Entity\Config
346 public function getConfig()
348 return $this->config
;