<?php
namespace App\Entity;
use App\Security\Roles;
use Doctrine\ORM\Mapping as ORM;
use EightMarq\CoreComponent\Entity\EntityTrait;
use EightMarq\CoreComponent\Model\UserInterface;
use FOS\UserBundle\Model\User as BaseUser;
use Gedmo\Blameable\Traits\BlameableEntity;
use Gedmo\SoftDeleteable\Traits\SoftDeleteableEntity;
use Gedmo\Timestampable\Traits\TimestampableEntity;
use Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntity;
/**
* @ORM\Table(name="users")
* @UniqueEntity({"email"})
* @ORM\Entity(repositoryClass="App\Repository\UserRepository")
*/
class User extends BaseUser implements UserInterface
{
use TimestampableEntity;
use SoftDeleteableEntity;
use BlameableEntity;
use EntityTrait;
/**
* @var int
*
* @ORM\Id
* @ORM\Column(type="integer")
* @ORM\GeneratedValue(strategy="IDENTITY")
*/
protected $id;
public function __construct()
{
parent::__construct();
foreach (Roles::READ_ROLES as $role) {
$this->addRole($role);
}
}
/**
* @param string|null $email
*
* @return User|BaseUser
*/
public function setEmail($email)
{
$this->email = $email;
$this->username = $email;
$this->emailCanonical = $email;
$this->usernameCanonical = $email;
return $this;
}
/**
* @return array
*/
public function getRoleTokens(): array
{
$roles = [];
foreach ($this->getRoles() as $role) {
$roles[] = Roles::getRoleTokensWithRoleIds()[$role];
}
return $roles;
}
}