416 lines
8.8 KiB
PHP
416 lines
8.8 KiB
PHP
<?php
|
|
|
|
namespace App\Entity;
|
|
|
|
use Doctrine\Common\Collections\ArrayCollection;
|
|
use Doctrine\Common\Collections\Collection;
|
|
use Doctrine\ORM\Mapping as ORM;
|
|
use Symfony\Component\Security\Core\User\UserInterface;
|
|
use Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntity;
|
|
|
|
|
|
/**
|
|
* User
|
|
*
|
|
* @ORM\Entity(repositoryClass="App\Repository\UserRepository")
|
|
* @ORM\Table(name="user",uniqueConstraints={@ORM\UniqueConstraint(name="username", columns={"username"})})
|
|
* @UniqueEntity("username", message="Ce nom d'utilisateur existe dèja")
|
|
*/
|
|
|
|
class User implements UserInterface, \Serializable
|
|
{
|
|
/**
|
|
* @var int
|
|
*
|
|
* @ORM\Column(name="id", type="integer")
|
|
* @ORM\Id
|
|
* @ORM\GeneratedValue(strategy="AUTO")
|
|
*/
|
|
private $id;
|
|
|
|
/**
|
|
* @var string
|
|
*
|
|
* @ORM\Column(name="username", type="string", length=255)
|
|
*/
|
|
private $username;
|
|
|
|
/**
|
|
* @var string
|
|
*
|
|
* @ORM\Column(name="password", type="string", length=255)
|
|
*/
|
|
private $password;
|
|
|
|
/**
|
|
* @var array
|
|
*
|
|
* @ORM\Column(name="roles", type="array", length=255)
|
|
*/
|
|
private $roles = array();
|
|
|
|
/**
|
|
* @ORM\Column(name="salt", type="string", length=255)
|
|
*/
|
|
private $salt = '';
|
|
|
|
/**
|
|
* @ORM\Column(type="string", length=250, nullable=true)
|
|
*/
|
|
private $firstname;
|
|
|
|
/**
|
|
* @ORM\Column(type="string", length=250)
|
|
*/
|
|
private $lastname;
|
|
private $displayname;
|
|
|
|
/**
|
|
* @ORM\Column(type="string", length=200, nullable=true, options={"default" : 0})
|
|
*/
|
|
private $avatar;
|
|
|
|
/**
|
|
* @ORM\Column(type="string", length=250)
|
|
*/
|
|
private $email;
|
|
|
|
/**
|
|
* @ORM\Column(type="string", length=250, nullable=true)
|
|
*/
|
|
private $apikey;
|
|
|
|
/**
|
|
* @ORM\Column(name="preference", type="array", nullable=true)
|
|
*/
|
|
private $preference;
|
|
|
|
/**
|
|
* @ORM\ManyToMany(targetEntity="Group", inversedBy="users", cascade={"persist"})
|
|
* @ORM\JoinTable(name="usergroupe",
|
|
* joinColumns={@ORM\JoinColumn(name="user", referencedColumnName="id")},
|
|
* inverseJoinColumns={@ORM\JoinColumn(name="groupe", referencedColumnName="id")}
|
|
* )
|
|
*/
|
|
private $groups;
|
|
|
|
/**
|
|
* @ORM\OneToMany(targetEntity="Student", mappedBy="user")
|
|
*/
|
|
private $students;
|
|
|
|
/**
|
|
* @ORM\OneToMany(targetEntity="Teacher", mappedBy="user")
|
|
*/
|
|
private $teachers;
|
|
|
|
/**
|
|
* @ORM\OneToMany(targetEntity="Responsible", mappedBy="user")
|
|
*/
|
|
private $responsibles;
|
|
|
|
public function __construct()
|
|
{
|
|
$this->groups = new ArrayCollection();
|
|
$this->students = new ArrayCollection();
|
|
$this->teachers = new ArrayCollection();
|
|
$this->responsibles = new ArrayCollection();
|
|
}
|
|
|
|
public function getUsername(): ?string
|
|
{
|
|
return $this->username;
|
|
}
|
|
|
|
public function getSalt(): ?string
|
|
{
|
|
return $this->salt;
|
|
}
|
|
|
|
public function setPassword($password): self
|
|
{
|
|
if($password!=$this->password&&$password!=""&&!is_null($password)){
|
|
$this->salt = uniqid(mt_rand(), true);
|
|
$hash = "{SSHA}" . base64_encode(pack("H*", sha1($password . $this->salt)) . $this->salt);
|
|
|
|
$this->password = $hash;
|
|
}
|
|
|
|
return $this;
|
|
}
|
|
|
|
public function getPassword(): ?string
|
|
{
|
|
return $this->password;
|
|
}
|
|
|
|
public function getRoles(): ?array
|
|
{
|
|
return $this->roles;
|
|
}
|
|
|
|
public function hasRole(string $role): ?bool
|
|
{
|
|
return in_array($role,$this->roles);
|
|
}
|
|
|
|
public function eraseCredentials()
|
|
{
|
|
}
|
|
|
|
public function serialize()
|
|
{
|
|
return serialize(array(
|
|
$this->id,
|
|
$this->username,
|
|
$this->password,
|
|
$this->salt,
|
|
));
|
|
}
|
|
|
|
public function unserialize($serialized)
|
|
{
|
|
list (
|
|
$this->id,
|
|
$this->username,
|
|
$this->password,
|
|
$this->salt
|
|
) = unserialize($serialized, array('allowed_classes' => false));
|
|
}
|
|
|
|
public function getDisplayname()
|
|
{
|
|
return $this->firstname." ".$this->lastname;
|
|
}
|
|
|
|
public function setId(int $id): self
|
|
{
|
|
$this->id = $id;
|
|
|
|
return $this;
|
|
}
|
|
|
|
public function getId(): ?int
|
|
{
|
|
return $this->id;
|
|
}
|
|
|
|
public function setUsername(string $username): self
|
|
{
|
|
$this->username = $username;
|
|
|
|
return $this;
|
|
}
|
|
|
|
|
|
public function setRoles(array $roles): self
|
|
{
|
|
$this->roles = $roles;
|
|
|
|
return $this;
|
|
}
|
|
|
|
public function setSalt(string $salt): self
|
|
{
|
|
$this->salt = $salt;
|
|
|
|
return $this;
|
|
}
|
|
|
|
public function getFirstname(): ?string
|
|
{
|
|
return $this->firstname;
|
|
}
|
|
|
|
public function setFirstname(?string $firstname): self
|
|
{
|
|
$this->firstname = $firstname;
|
|
|
|
return $this;
|
|
}
|
|
|
|
public function getLastname(): ?string
|
|
{
|
|
return $this->lastname;
|
|
}
|
|
|
|
public function setLastname(?string $lastname): self
|
|
{
|
|
$this->lastname = $lastname;
|
|
|
|
return $this;
|
|
}
|
|
|
|
public function getAvatar(): ?string
|
|
{
|
|
if($this->avatar)
|
|
return $this->avatar;
|
|
else
|
|
return "noavatar.png";
|
|
}
|
|
|
|
public function setAvatar(?string $avatar): self
|
|
{
|
|
$this->avatar = $avatar;
|
|
|
|
return $this;
|
|
}
|
|
|
|
public function getEmail(): ?string
|
|
{
|
|
return $this->email;
|
|
}
|
|
|
|
public function setEmail(string $email): self
|
|
{
|
|
$this->email = $email;
|
|
|
|
return $this;
|
|
}
|
|
|
|
|
|
public function getApikey(): ?string
|
|
{
|
|
return $this->apikey;
|
|
}
|
|
|
|
public function setApikey(?string $apikey): self
|
|
{
|
|
$this->apikey = $apikey;
|
|
|
|
return $this;
|
|
}
|
|
|
|
/**
|
|
* @return Collection|Group[]
|
|
*/
|
|
public function getGroups(): Collection
|
|
{
|
|
return $this->groups;
|
|
}
|
|
|
|
public function addGroup(Group $group): self
|
|
{
|
|
if (!$this->groups->contains($group)) {
|
|
$this->groups[] = $group;
|
|
}
|
|
|
|
return $this;
|
|
}
|
|
|
|
public function removeGroup(Group $group): self
|
|
{
|
|
if ($this->groups->contains($group)) {
|
|
$this->groups->removeElement($group);
|
|
}
|
|
|
|
return $this;
|
|
}
|
|
|
|
public function getPreference(): ?array
|
|
{
|
|
return $this->preference;
|
|
}
|
|
|
|
public function setPreference(?array $preference): self
|
|
{
|
|
$this->preference = $preference;
|
|
|
|
return $this;
|
|
}
|
|
|
|
/**
|
|
* @return Collection|Student[]
|
|
*/
|
|
public function getStudents(): Collection
|
|
{
|
|
return $this->students;
|
|
}
|
|
|
|
public function addStudent(Student $student): self
|
|
{
|
|
if (!$this->students->contains($student)) {
|
|
$this->students[] = $student;
|
|
$student->setUser($this);
|
|
}
|
|
|
|
return $this;
|
|
}
|
|
|
|
public function removeStudent(Student $student): self
|
|
{
|
|
if ($this->students->contains($student)) {
|
|
$this->students->removeElement($student);
|
|
// set the owning side to null (unless already changed)
|
|
if ($student->getUser() === $this) {
|
|
$student->setUser(null);
|
|
}
|
|
}
|
|
|
|
return $this;
|
|
}
|
|
|
|
/**
|
|
* @return Collection|Teacher[]
|
|
*/
|
|
public function getTeachers(): Collection
|
|
{
|
|
return $this->teachers;
|
|
}
|
|
|
|
public function addTeacher(Teacher $teacher): self
|
|
{
|
|
if (!$this->teachers->contains($teacher)) {
|
|
$this->teachers[] = $teacher;
|
|
$teacher->setUser($this);
|
|
}
|
|
|
|
return $this;
|
|
}
|
|
|
|
public function removeTeacher(Teacher $teacher): self
|
|
{
|
|
if ($this->teachers->contains($teacher)) {
|
|
$this->teachers->removeElement($teacher);
|
|
// set the owning side to null (unless already changed)
|
|
if ($teacher->getUser() === $this) {
|
|
$teacher->setUser(null);
|
|
}
|
|
}
|
|
|
|
return $this;
|
|
}
|
|
|
|
/**
|
|
* @return Collection|Responsible[]
|
|
*/
|
|
public function getResponsibles(): Collection
|
|
{
|
|
return $this->responsibles;
|
|
}
|
|
|
|
public function addResponsible(Responsible $responsible): self
|
|
{
|
|
if (!$this->responsibles->contains($responsible)) {
|
|
$this->responsibles[] = $responsible;
|
|
$responsible->setUser($this);
|
|
}
|
|
|
|
return $this;
|
|
}
|
|
|
|
public function removeResponsible(Responsible $responsible): self
|
|
{
|
|
if ($this->responsibles->contains($responsible)) {
|
|
$this->responsibles->removeElement($responsible);
|
|
// set the owning side to null (unless already changed)
|
|
if ($responsible->getUser() === $this) {
|
|
$responsible->setUser(null);
|
|
}
|
|
}
|
|
|
|
return $this;
|
|
}
|
|
|
|
}
|