_bdd = $bdd; $this->tokenStorage = $tokenStorage; $this->authorizationChecker = $authorizationChecker; } /** * Renvoit l'identifiant de l'utilisateur * * @access public * @return int */ public function obtenirIdentifiant() { if($this->tokenStorage->getToken()->getUser() instanceof UserInterface) { return $this->tokenStorage->getToken()->getUser()->getId(); } return null; } /** * Renvoit le niveau de droits de l'utilisateur * * @access public * @return bool */ public function obtenirNiveau() { if ($this->tokenStorage->getToken()->getUser() instanceof UserInterface) { return $this->tokenStorage->getToken()->getUser()->getLevels(); } return null; } /** * Vérifie que l'utilisateur a au moins le niveau de droits requis * * @access public * @return bool */ public function verifierDroit($niveau_demande) { return $this->_niveau >= $niveau_demande; } /** * Indique si une connexion a échoué * * @access public * @return bool */ public function obtenirStatutConnexion() { return $this->_statut_connexion; } public function chargerToutesLesPages($pages) { if (is_array($pages)) { $this->_pages = $pages; return true; } return false; } public function dechargerToutesLesPages() { if ($this->authorizationChecker->isGranted('ROLE_SUPER_ADMIN')) { return $this->_pages; } $pages = array(); foreach ($this->_pages as $_page => $_page_details) { if (isset($_page_details['elements'])) { foreach ($_page_details['elements'] as $_element => $_element_details) { if ($this->verifierDroitSurLaPage($_element)) { $pages[$_page]['nom'] = $_page_details['nom']; $pages[$_page]['elements'][$_element] = $_element_details; } } } else { if ($this->verifierDroitSurLaPage($_page)) { $pages[$_page] = $_page_details; } } } return $pages; } public function verifierDroitSurLaPage($page) { if ($this->authorizationChecker->isGranted('ROLE_SUPER_ADMIN')) { return true; } foreach ($this->_pages as $_page => $_page_details) { if ($page == $_page) { if (isset($_page_details['niveau']) && $this->authorizationChecker->isGranted($_page_details['niveau'])) { return true; } } if (isset($_page_details['elements']) and is_array($_page_details['elements'])) { foreach ($_page_details['elements'] as $_element => $_element_details) { if ($page == $_element) { if (isset($_element_details['niveau']) && $this->authorizationChecker->isGranted($_element_details['niveau'])) { return true; } } } } } return false; } public function obtenirEmail() { if ($this->tokenStorage->getToken()->getUser() instanceof UserInterface) { return $this->tokenStorage->getToken()->getUser()->getEmail(); } return null; } public function obtenirNomComplet() { if ($this->tokenStorage->getToken()->getUser() instanceof UserInterface) { return $this->tokenStorage->getToken()->getUser()->getLabel(); } return null; } public function verifierDroitManagerPersonneMorale($compagnyId) { /** @var User $user */ $user = $this->tokenStorage->getToken()->getUser(); if ($user instanceof UserInterface) { return $user->getCompanyId() == $compagnyId && $this->authorizationChecker->isGranted('ROLE_COMPANY_MANAGER'); } return false; } }