3 // src/Rapsys/UserBundle/Entity/User.php 
   4 namespace Rapsys\UserBundle\Entity
; 
   6 use Rapsys\UserBundle\Entity\Group
; 
   7 use Symfony\Component\Security\Core\User\UserInterface
; 
   8 use Doctrine\Common\Collections\ArrayCollection
; 
   9 use Rapsys\UserBundle\Entity\Civility
; 
  11 class User 
implements UserInterface
, \Serializable 
{ 
  58          * @var \Rapsys\UserBundle\Entity\Civility 
  63          * @var \Doctrine\Common\Collections\Collection 
  70         public function __construct() { 
  71                 $this->active 
= false; 
  72                 $this->groups 
= new ArrayCollection(); 
  80         public function getId() { 
  91         public function setMail($mail) { 
 102         public function getMail() { 
 109          * @param string $pseudonym 
 113         public function setPseudonym($pseudonym) { 
 114                 $this->pseudonym 
= $pseudonym; 
 124         public function getPseudonym() { 
 125                 return $this->pseudonym
; 
 131          * @param string $forename 
 135         public function setForename($forename) { 
 136                 $this->forename 
= $forename; 
 146         public function getForename() { 
 147                 return $this->forename
; 
 153          * @param string $surname 
 157         public function setSurname($surname) { 
 158                 $this->surname 
= $surname; 
 168         public function getSurname() { 
 169                 return $this->surname
; 
 175          * @param string $password 
 179         public function setPassword($password) { 
 180                 $this->password 
= $password; 
 192         public function getPassword() { 
 193                 return $this->password
; 
 199          * @param bool $active 
 203         public function setActive($active) { 
 204                 $this->active 
= $active; 
 214         public function getActive() { 
 215                 return $this->active
; 
 221          * @param \DateTime $created 
 225         public function setCreated($created) { 
 226                 $this->created 
= $created; 
 236         public function getCreated() { 
 237                 return $this->created
; 
 243          * @param \DateTime $updated 
 247         public function setUpdated($updated) { 
 248                 $this->updated 
= $updated; 
 258         public function getUpdated() { 
 259                 return $this->updated
; 
 265         public function setCivility(Civility 
$civility) { 
 266                 $this->civility 
= $civility; 
 274         public function getCivility(): Civility 
{ 
 275                 return $this->civility
; 
 281          * @param \Rapsys\UserBundle\Entity\Group $group 
 285         public function addGroup(Group 
$group) { 
 286                 $this->groups
[] = $group; 
 294          * @param \Rapsys\UserBundle\Entity\Group $group 
 296         public function removeGroup(Group 
$group) { 
 297                 $this->groups
->removeElement($group); 
 303          * @return \Doctrine\Common\Collections\Collection 
 305         public function getGroups() { 
 306                 return $this->groups
; 
 312         public function getRoles() { 
 313                 //Get the unique roles list by id 
 314                 return array_unique(array_reduce( 
 315                         //Cast groups as array 
 316                         $this->groups
->toArray(), 
 317                         //Reduce to an array of id => group tuples 
 318                         function ($array, $group) { 
 319                                 $array[$group->getId()] = $group->getRole(); 
 322                         //Init with empty array 
 323                         //XXX: on registration, add each group present in rapsys_user.default.group array to user 
 324                         //XXX: see vendor/rapsys/userbundle/Controller/DefaultController.php +450 
 332         public function getRole() { 
 334                 $roles = $this->getRoles(); 
 336                 //With roles array empty 
 342                 //Return the role with max id 
 343                 //XXX: should be rewriten if it change in your configuration 
 344                 return $roles[array_reduce( 
 346                         function($cur, $id) { 
 347                                 if ($cur === null || $id > $cur) { 
 359         public function getSalt() { 
 360                 //No salt required with bcrypt 
 367         public function getUsername() { 
 374         public function eraseCredentials() {} 
 376         public function serialize(): string { 
 387         public function unserialize($serialized) { 
 395                 ) = unserialize($serialized); 
 398         //XXX: was from vendor/symfony/security-core/User/AdvancedUserInterface.php, see if it's used anymore 
 399         public function isEnabled() { 
 400                 return $this->active
; 
 404          * Returns a string representation of the user 
 408         public function __toString(): string { 
 409                 return $this->civility
.' '.$this->forename
.' '.$this->surname
;