* @copyright Since 2007 PrestaShop SA and Contributors * @license https://opensource.org/licenses/OSL-3.0 Open Software License (OSL 3.0) */ namespace PrestaShopBundle\Security\Admin; use Symfony\Component\Security\Core\User\EquatableInterface; use Symfony\Component\Security\Core\User\UserInterface; /** * Class Employee is used for Symfony security components to authenticate the user. */ class Employee implements UserInterface, EquatableInterface { /** * @var int */ private $id; /** * @var string */ private $username; /** * @var string */ private $password; /** * @var string */ private $salt; /** * @var array */ private $roles = []; private $data; /** * Constructor. * * @param object $data The employee legacy object */ public function __construct($data) { $this->username = $data->email; $this->password = $data->passwd; $this->salt = ''; $this->data = $data; $this->id = (int) $data->id; } public function __toString() { return $this->username; } /** * Returns roles for the current employee. * * @return array */ public function getRoles() { return $this->roles; } /** * Get typed password. * * @return string */ public function getPassword() { return $this->password; } /** * The salt used to hash the password. * * @return string */ public function getSalt() { return $this->salt; } /** * Get the login of the current employee. * * @return string */ public function getUsername() { return $this->username; } /** * Get the id of the current employee. * * @return int */ public function getId() { return $this->id; } /** * Get the data parameter of the current employee. * * @return object */ public function getData() { return $this->data; } /** * Used by Symfony to ensure credentials are removed when logout. */ public function eraseCredentials() { } /** * @param array $roles * * @return Employee */ public function setRoles(array $roles) { $this->roles = $roles; return $this; } /** * Test equality between two Employee entities * (instance of class, password, salt and username). * * @param UserInterface $user * * @return bool */ public function isEqualTo(UserInterface $user) { if (!$user instanceof static) { return false; } if ($this->password !== $user->getPassword()) { return false; } if ($this->salt !== $user->getSalt()) { return false; } if ($this->username !== $user->getUsername()) { return false; } return true; } }