/app/Page/ResasBase.php
https://gitlab.com/vchellen_xtn/testaudit · PHP · 143 lines · 93 code · 8 blank · 42 comment · 37 complexity · 5757d1bd399d2cc004fc75b4a7556842 MD5 · raw file
- <?php
- /**
- * Classe utilisée par Page_Resas et Page_Resas_Admin pour assurer l'authentification
- */
- class Page_ResasBase extends Page
- {
- /** @var AccesAgence */
- protected $_resasUser = null;
- /** @var Agence */
- protected $_agence;
-
- /** Renvoie si la page a besoin de HTTPS @returns bool */
- protected function isThatPageNeedsHttps()
- {
- return true;
- }
-
- /**
- * Vérifier les paramètres et l'identification
- *
- */
- protected function checkParameters()
- {
- // se déconnecter de /resas/ ... mais pas de l'admin
- if (isset($_GET['logout'])) {
- $this->setResasUser(null);
- }
- // les vérifications de Page
- if (!parent::checkParameters())
- return false;
- // est ce que l'utilisateur est associée à une agence ?
- // s'il y a un paramètre agence, on le valide
- if (isset($_REQUEST['agence']) && isset($_REQUEST['login']) && isset($_REQUEST['role']) && isset($_REQUEST['key'])) {
- $msg = '';
- $this->setResasUser(AccesAgence::create($_REQUEST['role'], $_REQUEST['login'], $_REQUEST['agence'], $_REQUEST['key'], $msg));
- if ($msg) {
- $this->_addMessage($msg);
- }
- } else if (isset($_COOKIE['ADA001_RESAS_AGENCE'])) {
- $this->setResasUser(AccesAgence::createFromCookie($_COOKIE['ADA001_RESAS_AGENCE']));
- }
- // si l'utilisateur est connecté on arrête là
- if ($this->_resasUser) {
- // on vérifie que l'OAV est ouverte pour cette agence
- if ($this->_agence) {
- return true;
- } else {
- $this->_addMessage("Votre agence n'est pas autorisé à accéder à l'OAV !");
- }
- }
- // sinon est-il identifié dans l'admin ?
- if (!$this->_adminUser)
- {
- // sinon il faut s'authentifier
- $this->setId('resas/login');
- return false;
- }
- // OK on est conecté et il faut choisir l'agence
- $this->setId('resas/agence');
- return false;
- }
-
- /**
- * Renvoie l'agence courante
- *
- */
- public function getAgence()
- {
- return $this->_agence;
- }
- /**
- * Essaie de changer d'agence pour l'utilisateur courant
- *
- * @param string $agenceID
- * @param string $msg
- * @returns bool
- */
- protected function changeAgence($agenceID, &$msg) {
- if ($agenceID && Agence::isValidID($agenceID)) {
- // il faut valider le login, le rôle et l'agence
- $agence = '';
- $adminUser = $this->getAdminUser();
- $resasUser = $this->getResasUser();
- if ($adminUser && ($adminUser->hasRights(Acces::SB_ADMIN) || $adminUser->hasRights(Acces::SB_TC))) {
- $agence = $agenceID;
- } else if ($resasUser && $resasUser->hasRightsOnAgence($agenceID) && $resasUser->getConfigData('oav_acces', 'agence', $agenceID)) {
- $agence = $agenceID;
- } else {
- $msg = "Vous n'avez pas le droit d'accéder à cette agence.";
- }
- // déterminer le login et le rôle
- $login = ($resasUser ? $resasUser['login'] : $adminUser['login']);
- $role = '';
- if ($resasUser) {
- $role = $resasUser->getRole();
- } else if ($adminUser->hasRights(Acces::SB_ADMIN)) {
- $role = 'admin';
- } else if ($adminUser->hasRights(Acces::SB_TC)) {
- $role = 'comptoir';
- } else {
- $msg = "Vous n'avez pas le droit d'accéder à cet outil.";
- }
- if ($login && $role && $agence) {
- if ($x = AccesAgence::create($role, $login, $agence, AccesAgence::getKey($role, $login, $agence), $msg)) {
- $this->setResasUser($x);
- return true;
- }
- }
- }
- return false;
- }
-
- /**
- * Renvoie l'utilisateur courant
- * @returns AccesAgence
- */
- public function getResasUser() {
- return $this->_resasUser;
- }
- /**
- * Change le ResasUser courant
- *
- * @param AccesAgence $resasUser
- * @return Page_ResasBase
- */
- public function setResasUser(AccesAgence $resasUser = null) {
- $this->_resasUser = $resasUser;
- if ($this->_resasUser) {
- self::setCookie('ADA001_RESAS_AGENCE', $this->_resasUser->getCookie());
- if ($this->_adminUser || $this->_resasUser->getConfigData('oav_acces')) {
- $this->_agence = Agence::factory($this->_resasUser['pdv']);
- }
- } else {
- self::setCookie('ADA001_RESAS_AGENCE', '', time() - 24*3600);
- }
- return $this;
- }
- }
- ?>