]> git.immae.eu Git - github/wallabag/wallabag.git/blobdiff - src/Wallabag/ApiBundle/Entity/Client.php
Cast client id to avoid PG error
[github/wallabag/wallabag.git] / src / Wallabag / ApiBundle / Entity / Client.php
index d449870a4fdce25d325729fc011e5c7269bf7028..78349820a0adc7e2118557a13f5ee0cfdb497ddb 100644 (file)
@@ -2,12 +2,16 @@
 
 namespace Wallabag\ApiBundle\Entity;
 
-use FOS\OAuthServerBundle\Entity\Client as BaseClient;
 use Doctrine\ORM\Mapping as ORM;
+use FOS\OAuthServerBundle\Entity\Client as BaseClient;
+use JMS\Serializer\Annotation\Groups;
+use JMS\Serializer\Annotation\SerializedName;
+use JMS\Serializer\Annotation\VirtualProperty;
+use Wallabag\UserBundle\Entity\User;
 
 /**
  * @ORM\Table("oauth2_clients")
- * @ORM\Entity
+ * @ORM\Entity(repositoryClass="Wallabag\ApiBundle\Repository\ClientRepository")
  */
 class Client extends BaseClient
 {
@@ -18,8 +22,83 @@ class Client extends BaseClient
      */
     protected $id;
 
-    public function __construct()
+    /**
+     * @var string
+     *
+     * @ORM\Column(name="name", type="text", nullable=false)
+     *
+     * @Groups({"user_api_with_client"})
+     */
+    protected $name;
+
+    /**
+     * @ORM\OneToMany(targetEntity="RefreshToken", mappedBy="client", cascade={"remove"})
+     */
+    protected $refreshTokens;
+
+    /**
+     * @ORM\OneToMany(targetEntity="AccessToken", mappedBy="client", cascade={"remove"})
+     */
+    protected $accessTokens;
+
+    /**
+     * @var string
+     *
+     * @SerializedName("client_secret")
+     * @Groups({"user_api_with_client"})
+     */
+    protected $secret;
+
+    /**
+     * @ORM\ManyToOne(targetEntity="Wallabag\UserBundle\Entity\User", inversedBy="clients")
+     */
+    private $user;
+
+    public function __construct(User $user)
     {
         parent::__construct();
+        $this->user = $user;
+    }
+
+    /**
+     * Get name.
+     *
+     * @return string
+     */
+    public function getName()
+    {
+        return $this->name;
+    }
+
+    /**
+     * Set name.
+     *
+     * @param string $name
+     *
+     * @return Client
+     */
+    public function setName($name)
+    {
+        $this->name = $name;
+
+        return $this;
+    }
+
+    /**
+     * @return User
+     */
+    public function getUser()
+    {
+        return $this->user;
+    }
+
+    /**
+     * @VirtualProperty
+     * @SerializedName("client_id")
+     * @Groups({"user_api_with_client"})
+     */
+    public function getClientId()
+    {
+        return $this->getId() . '_' . $this->getRandomId();
     }
 }