X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=src%2FWallabag%2FCoreBundle%2FEntity%2FUser.php;h=510a1594e2a38821619fb2ee6aa3ce544d647229;hb=9c08a891f9bb90bc3f23a575a734283c1ee00ba1;hp=6abfd3ae46374f2080c87d6ebcb25dea14b5c458;hpb=2f69eb4afa2c923cddca2ba0d16d8d7b0bc97680;p=github%2Fwallabag%2Fwallabag.git diff --git a/src/Wallabag/CoreBundle/Entity/User.php b/src/Wallabag/CoreBundle/Entity/User.php index 6abfd3ae..510a1594 100644 --- a/src/Wallabag/CoreBundle/Entity/User.php +++ b/src/Wallabag/CoreBundle/Entity/User.php @@ -2,22 +2,32 @@ namespace Wallabag\CoreBundle\Entity; +use Doctrine\Common\Collections\ArrayCollection; use Doctrine\ORM\Mapping as ORM; +use Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntity; use Symfony\Component\Security\Core\User\UserInterface; use Symfony\Component\Security\Core\User\AdvancedUserInterface; +use Symfony\Component\Validator\Constraints as Assert; +use JMS\Serializer\Annotation\ExclusionPolicy; +use JMS\Serializer\Annotation\Expose; /** - * User + * User. * - * @ORM\Table(name="user") - * @ORM\Entity + * @ORM\Entity(repositoryClass="Wallabag\CoreBundle\Repository\UserRepository") + * @ORM\Table * @ORM\HasLifecycleCallbacks() + * @ExclusionPolicy("all") + * + * @UniqueEntity("email") + * @UniqueEntity("username") */ class User implements AdvancedUserInterface, \Serializable { /** - * @var integer + * @var int * + * @Expose * @ORM\Column(name="id", type="integer") * @ORM\Id * @ORM\GeneratedValue(strategy="AUTO") @@ -28,6 +38,11 @@ class User implements AdvancedUserInterface, \Serializable * @var string * * @ORM\Column(name="username", type="text") + * @Assert\NotBlank() + * @Assert\Length( + * min = "3", + * max = "255" + * ) */ private $username; @@ -55,14 +70,26 @@ class User implements AdvancedUserInterface, \Serializable /** * @var string * - * @ORM\Column(name="email", type="text", nullable=true) + * @ORM\Column(name="email", type="text", nullable=false) + * @Assert\Email() + * @Assert\NotBlank() */ private $email; /** - * @ORM\Column(name="is_active", type="boolean") + * @ORM\Column(name="is_active", type="boolean", nullable=false) + */ + private $isActive = true; + + /** + * @ORM\Column(name="confirmation_token", type="string", nullable=true) + */ + private $confirmationToken; + + /** + * @ORM\Column(name="password_requested_at", type="datetime", nullable=true) */ - private $isActive; + private $passwordRequestedAt; /** * @var date @@ -78,10 +105,27 @@ class User implements AdvancedUserInterface, \Serializable */ private $updatedAt; + /** + * @ORM\OneToMany(targetEntity="Entry", mappedBy="user", cascade={"remove"}) + */ + private $entries; + + /** + * @ORM\OneToOne(targetEntity="Config", mappedBy="user") + */ + private $config; + + /** + * @ORM\OneToMany(targetEntity="Tag", mappedBy="user", cascade={"remove"}) + */ + private $tags; + public function __construct() { $this->isActive = true; $this->salt = md5(uniqid(null, true)); + $this->entries = new ArrayCollection(); + $this->tags = new ArrayCollection(); } /** @@ -98,9 +142,9 @@ class User implements AdvancedUserInterface, \Serializable } /** - * Get id + * Get id. * - * @return integer + * @return int */ public function getId() { @@ -108,9 +152,10 @@ class User implements AdvancedUserInterface, \Serializable } /** - * Set username + * Set username. + * + * @param string $username * - * @param string $username * @return User */ public function setUsername($username) @@ -121,7 +166,7 @@ class User implements AdvancedUserInterface, \Serializable } /** - * Get username + * Get username. * * @return string */ @@ -131,7 +176,7 @@ class User implements AdvancedUserInterface, \Serializable } /** - * @inheritDoc + * {@inheritdoc} */ public function getSalt() { @@ -139,7 +184,7 @@ class User implements AdvancedUserInterface, \Serializable } /** - * @inheritDoc + * {@inheritdoc} */ public function getRoles() { @@ -147,20 +192,25 @@ class User implements AdvancedUserInterface, \Serializable } /** - * Set password + * Set password. + * + * @param string $password * - * @param string $password * @return User */ public function setPassword($password) { - $this->password = $password; + if (!$password && 0 === strlen($password)) { + return; + } + + $this->password = sha1($password.$this->getUsername().$this->getSalt()); return $this; } /** - * Get password + * Get password. * * @return string */ @@ -170,9 +220,10 @@ class User implements AdvancedUserInterface, \Serializable } /** - * Set name + * Set name. + * + * @param string $name * - * @param string $name * @return User */ public function setName($name) @@ -183,7 +234,7 @@ class User implements AdvancedUserInterface, \Serializable } /** - * Get name + * Get name. * * @return string */ @@ -193,9 +244,10 @@ class User implements AdvancedUserInterface, \Serializable } /** - * Set email + * Set email. + * + * @param string $email * - * @param string $email * @return User */ public function setEmail($email) @@ -206,7 +258,7 @@ class User implements AdvancedUserInterface, \Serializable } /** - * Get email + * Get email. * * @return string */ @@ -232,7 +284,46 @@ class User implements AdvancedUserInterface, \Serializable } /** - * @inheritDoc + * @param Entry $entry + * + * @return User + */ + public function addEntry(Entry $entry) + { + $this->entries[] = $entry; + + return $this; + } + + /** + * @return ArrayCollection + */ + public function getEntries() + { + return $this->entries; + } + + /** + * @param Entry $entry + * + * @return User + */ + public function addTag(Tag $tag) + { + $this->tags[] = $tag; + + return $this; + } + + /** + * @return ArrayCollection + */ + public function getTags() + { + return $this->tags; + } + /** + * {@inheritdoc} */ public function eraseCredentials() { @@ -254,8 +345,7 @@ class User implements AdvancedUserInterface, \Serializable public function unserialize($serialized) { list( - $this->id, - ) = unserialize($serialized); + $this->id) = unserialize($serialized); } public function isEqualTo(UserInterface $user) @@ -282,4 +372,75 @@ class User implements AdvancedUserInterface, \Serializable { return $this->isActive; } + /** + * Set config. + * + * @param \Wallabag\CoreBundle\Entity\Config $config + * + * @return User + */ + public function setConfig(\Wallabag\CoreBundle\Entity\Config $config = null) + { + $this->config = $config; + + return $this; + } + + /** + * Get config. + * + * @return \Wallabag\CoreBundle\Entity\Config + */ + public function getConfig() + { + return $this->config; + } + + /** + * Set confirmationToken. + * + * @param string $confirmationToken + * + * @return User + */ + public function setConfirmationToken($confirmationToken) + { + $this->confirmationToken = $confirmationToken; + + return $this; + } + + /** + * Get confirmationToken. + * + * @return string + */ + public function getConfirmationToken() + { + return $this->confirmationToken; + } + + /** + * Set passwordRequestedAt. + * + * @param \DateTime $passwordRequestedAt + * + * @return User + */ + public function setPasswordRequestedAt($passwordRequestedAt) + { + $this->passwordRequestedAt = $passwordRequestedAt; + + return $this; + } + + /** + * Get passwordRequestedAt. + * + * @return \DateTime + */ + public function getPasswordRequestedAt() + { + return $this->passwordRequestedAt; + } }