<?php
// src/PaaBundle/Entity/user.php
// LG 20171214 pour FOSUserBundle
namespace App\PaaBundle\Entity;
use FOS\UserBundle\Model\User as BaseUser;
use Doctrine\ORM\Mapping as ORM;
/**
* @ORM\Entity
* @ORM\Table(name="Paa_Securite.Users")
* @ORM\Entity(repositoryClass="App\PaaBundle\Repository\usersRepository") // LG 20230403
*/
/* Paa_Securite.Users est finalement une table, mais pourrait être une vue créée comme suit :
Drop View If exists Paa_Securite.Users ;
Create Or Replace View Paa_Securite.Users As
SELECT t0.cInitiales AS username
, t0.cNomCourt AS username_canonical
, t0.cMel AS email
, t0.cMel AS email_canonical
, true AS enabled
, ''::Text AS salt
, t0.cmdp As password
, current_timestamp + '1 day'::interval As last_login
, ''::Text As confirmation_token
, current_timestamp - '1 day'::interval As password_requested_at
, 'a:0:{}'::Text As roles
, t0.iid_intervenant
FROM Paa.Intervenants t0
Where Not empty(iDroitsW) Or Not empty(iDroitsR) ;
*/
// LG 20240403 old class users extends BaseUser, pour que mon user soit une instanceof UserInterface, ce qui est testé dans vendor/friendsofsymfony/user-bundle/Controller/ProfileController.php, ligne 50
class users extends BaseUser implements \FOS\UserBundle\Model\UserInterface, \FOS\UserBundle\Model\GroupableInterface {
protected $entityManager ;
// Injecter le entityManager ici est une (TRES) mauvaise pratique, mais je ne trouve pas d'autre solution pour que les div générées par Form pour les clés étrangères ne deviennent pas des select qui incluent toutes les lignes de la table mère de la relation
function __construct($entityManager = null) {
parent::__construct();
$this->entityManager = $entityManager ;
}
function setEntityManager($entityManager){
$this->entityManager = $entityManager ;
}
/**
* @var integer
*
* @ORM\Column(name="iid_user", type="integer", nullable=false)
* @ORM\Id
* @ORM\GeneratedValue(strategy="SEQUENCE")
* @ORM\SequenceGenerator(sequenceName="Paa_Securite.users_iid_user_seq", allocationSize=1, initialValue=1)
*/
protected $id;
public function setid($piId) {
return $this->setiid_user($piId);
}
public function setiid_user($piId) {
$this->id = $piId;
}
public function setIidUser($piId) {
$this->id = $piId;
}
public function getid() {
return $this->getiid_user();
}
public function getiid_user() {
return $this->id;
}
public function getIidUser() {
return $this->id;
}
/**
* @var string
*
* @ORM\Column(name="ctype_res", type="string", nullable=true)
*/
protected $cType_Res;
public function setCtypeRes($ctype) {
$this->cType_Res = $ctype;
}
public function getctype_res() {
return $this->getCtypeRes();
}
public function getCtypeRes() {
return $this->cType_Res;
}
/**
* @var integer
*
* @ORM\Column(name="iid_res", type="integer", nullable=true)
*/
protected $iid_res;
public function setIidRes($id) {
$this->iid_res = $id;
}
public function getiid_res() {
return $this->getIidRes();
}
public function getIidRes() {
return $this->iid_res;
}
public function getcRes() {
return $this->getctype_res() . $this->getIidRes();
}
protected $username;
public function setemail($mail) {
$this->email = $mail;
}
public function getemail() {
return $this->email;
}
protected $password;
public function setPassword($password) {
parent::setPassword($password);
}
public function getpassword() {
return $this->password;
}
/**
* @var string
*/
public $roles2;
/**
* @var bool
*
* @ORM\Column(name="lpeutchangerprofil", type="boolean")
*/
protected $lpeutchangerprofil;
public function isLPeutChangerProfil() {
return $this->lpeutchangerprofil;
}
// LG 20230913
public function getLPeutChangerProfil() {
return $this->isLPeutChangerProfil();
}
public function setLPeutChangerProfil($boolean) {
$this->lpeutchangerprofil = (bool) $boolean;
return $this;
}
// Déterminer si l'user possède au moins l'un des rôles du tableau fourni
// LG 20210921
public function aUnDesRoles(array $paRoles) {
foreach ($paRoles as $lsRole) {
if ($this->hasRole($lsRole)) {
return true ;
}
}
return false ;
}
// LG 20220822 : correction de la méthode de base qui se plante quand le user n'a pas de rôle
/**
* {@inheritdoc}
*/
public function addRole($role) {
$role = strtoupper($role);
if ($role === static::ROLE_DEFAULT) {
return $this;
}
if (!$this->roles) {
// Il n'y a actuellement aucun rôle défini pour cette entité : initialiser un tableau vide pour les rôles
$this->roles = array();
}
if (!in_array($role, $this->roles, true)) {
$this->roles[] = $role;
}
return $this;
}
/**
* {@inheritdoc}
*/
// LG 20220822 : correction de la méthode de base qui se plante quand le user n'a pas de rôle
public function removeRole($role) {
if (!$this->roles) {
// Il n'y a actuellement aucun rôle défini pour cette entité : rien à faire
return $this;
}
if (false !== $key = array_search(strtoupper($role), $this->roles, true)) {
unset($this->roles[$key]);
$this->roles = array_values($this->roles);
}
return $this;
}
// LG 20230913
public function getEnabled() {
return $this->enabled ;
}
}