true, 'id' => false ]; // Fonction de hachage de mot de passe (mutator/setter) /* CakePHP hashes passwords with bcrypt by default. * You can also use SHA-1 or MD5 if you’re working with an existing database, * but we recommend bcrypt for all new applications */ protected function _setPassword($password) { //return (new DefaultPasswordHasher())->hash($password); //if (strlen($password)) { if (strlen($password)>0) { $hasher = new DefaultPasswordHasher(); return $hasher->hash($password); } } // Ce qui s'affiche quand on fait echo $entity (ou echo $this) // ATTENTION : nom = "Nom Prénom" //public function __toString() { return $this->nom; } public function __toString() { return $this->nom ? $this->nom : 'Nom Prénom'; } // (EP 20200504) - Champs virtuels // Nom Prénom //protected function _getFullname() { return $this->name.' '.$this->firstname; } /* * Champs virtuels $user->is_xxx */ /* public function isUser() { return $this->role == 'Utilisateur'; } public function is_resp() { return $this->role == 'Responsable'; } public function is_admin() { return $this->role == 'Administration'; } public function is_super() { return $this->role == 'Super Administrateur'; } */ // $user->is_user protected function _getIsUser() { return $this->role == 'Utilisateur'; } //return $this->_fields['status'] == 'CREATED'; // $user->is_resp protected function _getIsResp() { return $this->role == 'Responsable'; } // $user->is_admin protected function _getIsAdmin() { return $this->role == 'Administration'; } // $user->is_adminplus //protected function _getIsAdminplus() { return $this->role == 'Administration Plus'; } // $user->is_super protected function _getIsSuper() { return $this->role == 'Super Administrateur'; } // $user->groupe_thematique_with_resp protected function _getGroupeThematiqueWithResp() { $group_with_resp = ''; if ($this->has('groupes_thematique')) $group_with_resp .= $this->groupes_thematique->nom; if ($this->is_resp_groupes_thematique) $group_with_resp .= ' (responsable)'; return $group_with_resp; } protected function _getGroupeMetierWithResp() { $group_with_resp = ''; if ($this->has('groupes_metier')) $group_with_resp .= $this->groupes_metier->nom; if ($this->is_resp_groupes_metier) $group_with_resp .= ' (responsable)'; return $group_with_resp; } /* * Champs virtuels $user->is_xxx_or_more */ //public function isRespOrMore() { // $user->is_resp_or_more protected function _getIsRespOrMore() { return in_array($this->role, ['Responsable', 'Administration', 'Administration Plus', 'Super Administrateur']); } // $user->is_admin_or_more public function _getIsAdminOrMore() { return in_array($this->role, ['Administration', 'Administration Plus', 'Super Administrateur']); } /* // $user->is_adminplus_or_more public function _getIsAdminplusOrMore() { return in_array($this->role, ['Administration Plus', 'Super Administrateur']); } */ /* * Champs virtuels $user->is_xxx_or_less */ // $user->is_resp_or_less public function _getIsRespOrLess() { return in_array($this->role, ['Utilisateur', 'Responsable']); } // $user->is_admin_or_less public function _getIsAdminOrLess() { return in_array($this->role, ['Utilisateur', 'Responsable', 'Administration']); } /* // $user->is_adminplus_or_less public function _getIsAdminplusOrLess() { return in_array($this->role, ['Utilisateur', 'Responsable', 'Administration', 'Administration Plus']); } */ /* * $user->canManageMatos($matos) : bool * * @return true si l'utilisateur peut gérer $matos, false sinon * * Un utilisateur peut "gérer" (éditer, supprimer) un matériel existant ssi : * - a) il est au moins ADMIN * ou * - b) le matériel lui "appartient" (il en est l'utilisateur ou bien il a créé sa fiche) * ou * - c) il est RESPONSABLE et est du même groupe que le matériel */ public function canManageMatos(Materiel $m) { // a) if ($this->is_admin_or_more) return true; // b) if ($this->ownsMatos($m)) return true; // c) return $this->is_resp && $this->isSameGroupAsMatos($m); //return $this->isSameGroupAsMatos($m); } public function ownsMatos(Materiel $m) { return in_array($this->nom, [$m->nom_createur, $m->nom_responsable]); } public function isSameGroupAsMatos(Materiel $m) { $samegroup1 = $m->groupes_metier_id!=null && $m->groupes_metier_id==$this->groupes_metier_id; $samegroup2 = $m->groupes_thematique_id!=null && $m->groupes_thematique_id==$this->groupes_thematique_id; return $samegroup1 || $samegroup2; } }