You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
225 lines
4.4 KiB
225 lines
4.4 KiB
<?php |
|
|
|
namespace App\Entity; |
|
|
|
use DateTime; |
|
use DateTimeInterface; |
|
use Doctrine\Common\Collections\ArrayCollection; |
|
use Doctrine\ORM\Mapping as ORM; |
|
use Symfony\Component\Security\Core\User\UserInterface; |
|
|
|
/** |
|
* @ORM\Entity(repositoryClass="App\Repository\UserRepository") |
|
* @ORM\HasLifecycleCallbacks() |
|
*/ |
|
class User implements UserInterface, \JsonSerializable |
|
{ |
|
/** |
|
* @ORM\Id() |
|
* @ORM\GeneratedValue() |
|
* @ORM\Column(type="integer") |
|
* @var int |
|
*/ |
|
private $id; |
|
|
|
/** |
|
* @ORM\Column(type="string", length=100, unique=true) |
|
* @var string |
|
*/ |
|
private $username; |
|
|
|
/** |
|
* @ORM\Column(type="string", length=255) |
|
* @var string |
|
*/ |
|
private $password; |
|
|
|
/** |
|
* @ORM\Column(type="string", length=100, unique=true) |
|
* @var string |
|
*/ |
|
private $email; |
|
|
|
/** |
|
* @ORM\Column(type="string", length=255, options={"default": "user"}) |
|
* @var string |
|
*/ |
|
private $role = 'user'; |
|
|
|
/** |
|
* @ORM\Column(type="datetime") |
|
* @var DateTime |
|
*/ |
|
private $created_at; |
|
|
|
/** |
|
* @ORM\OneToMany(targetEntity="App\Entity\Streams", mappedBy="user") |
|
* @var ArrayCollection |
|
*/ |
|
private $streams; |
|
|
|
/** |
|
* User constructor. |
|
* @author Soner Sayakci <shyim@posteo.de> |
|
*/ |
|
public function __construct() |
|
{ |
|
$this->streams = new ArrayCollection(); |
|
} |
|
|
|
/** |
|
* @return int |
|
* @author Soner Sayakci <shyim@posteo.de> |
|
*/ |
|
public function getId() |
|
{ |
|
return $this->id; |
|
} |
|
|
|
/** |
|
* @return null|string |
|
* @author Soner Sayakci <shyim@posteo.de> |
|
*/ |
|
public function getUsername(): ?string |
|
{ |
|
return $this->username; |
|
} |
|
|
|
/** |
|
* @param string $username |
|
* @return User |
|
* @author Soner Sayakci <shyim@posteo.de> |
|
*/ |
|
public function setUsername(string $username): self |
|
{ |
|
$this->username = $username; |
|
|
|
return $this; |
|
} |
|
|
|
/** |
|
* @return null|string |
|
* @author Soner Sayakci <shyim@posteo.de> |
|
*/ |
|
public function getPassword(): ?string |
|
{ |
|
return $this->password; |
|
} |
|
|
|
/** |
|
* @param string $password |
|
* @return User |
|
* @author Soner Sayakci <shyim@posteo.de> |
|
*/ |
|
public function setPassword(string $password): self |
|
{ |
|
$this->password = $password; |
|
|
|
return $this; |
|
} |
|
|
|
/** |
|
* @return null|string |
|
* @author Soner Sayakci <shyim@posteo.de> |
|
*/ |
|
public function getEmail(): ?string |
|
{ |
|
return $this->email; |
|
} |
|
|
|
/** |
|
* @param string $email |
|
* @return User |
|
* @author Soner Sayakci <shyim@posteo.de> |
|
*/ |
|
public function setEmail(string $email): self |
|
{ |
|
$this->email = $email; |
|
|
|
return $this; |
|
} |
|
|
|
/** |
|
* @return DateTimeInterface|null |
|
* @author Soner Sayakci <shyim@posteo.de> |
|
*/ |
|
public function getCreatedAt(): ?DateTimeInterface |
|
{ |
|
return $this->created_at; |
|
} |
|
|
|
/** |
|
* @param DateTimeInterface $created_at |
|
* @return User |
|
* @author Soner Sayakci <shyim@posteo.de> |
|
*/ |
|
public function setCreatedAt(DateTimeInterface $created_at): self |
|
{ |
|
$this->created_at = $created_at; |
|
|
|
return $this; |
|
} |
|
|
|
/** |
|
* @return array |
|
* @author Soner Sayakci <shyim@posteo.de> |
|
*/ |
|
public function getRoles() |
|
{ |
|
return [strtoupper($this->role)]; |
|
} |
|
|
|
/** |
|
* @return null|string |
|
* @author Soner Sayakci <shyim@posteo.de> |
|
*/ |
|
public function getSalt() |
|
{ |
|
return null; |
|
} |
|
|
|
/** |
|
* @return array |
|
* @author Soner Sayakci <shyim@posteo.de> |
|
*/ |
|
public function eraseCredentials() |
|
{ |
|
return []; |
|
} |
|
|
|
/** |
|
* @return ArrayCollection |
|
* @author Soner Sayakci <shyim@posteo.de> |
|
*/ |
|
public function getStreams() |
|
{ |
|
return $this->streams; |
|
} |
|
|
|
/** |
|
* @param mixed $streams |
|
* @author Soner Sayakci <shyim@posteo.de> |
|
*/ |
|
public function setStreams($streams): void |
|
{ |
|
$this->streams = $streams; |
|
} |
|
|
|
/** |
|
* @ORM\PrePersist() |
|
* @author Soner Sayakci <shyim@posteo.de> |
|
*/ |
|
public function prePersist() |
|
{ |
|
$this->created_at = new DateTime(); |
|
} |
|
|
|
/** |
|
* @return array|mixed |
|
* @author Soner Sayakci <shyim@posteo.de> |
|
*/ |
|
public function jsonSerialize() |
|
{ |
|
return get_object_vars($this); |
|
} |
|
}
|
|
|