コード例 #1
0
ファイル: Page.php プロジェクト: netixx/Stock
 /** @brief	calcul automatique du nom de la resource associé à la route
  *
  * Si la resource a été spécifié  dans le navigation, le calcul n'est pas effectué
  * Utilisation de Projet_DataHelper::resource pour calculer le nom de la ressource.
  *
  * !! La route doit avoir la méthode getDefaults
  *
  * @see Projet_DataHelper::resource
  * @return le nom de la ressource, ou null, si la page n'a pas de route
  */
 public function getResource()
 {
     if ($this->_resource) {
         // si la ressource a été définie explicitement on la renvoie
         return $this->_resource;
     } elseif ($this->_route) {
         $oRoute = Zend_Controller_Front::getInstance()->getRouter()->getRoute($this->_route);
         // la route doit avoir la méthode getDefaults
         $aDefaults = $oRoute->getDefaults();
         // on suppose que le tableau defaults comprend le module, controller, action
         return $this->_resource = Projet_DataHelper::resource($aDefaults['module'], $aDefaults['controller'], $aDefaults['action']);
     } else {
         return null;
     }
 }
コード例 #2
0
ファイル: Acl.php プロジェクト: netixx/Stock
 public function preDispatch(Zend_Controller_Request_Abstract $request)
 {
     /*
     // qu'on puisse tester directement le profil
     // Le profil est sauvegardé alors en session
     if ($request->getParam(IDENTITE_ID_PROFIL) && APP_ENV != 'production') {
     	$nRole = $request->getParam(IDENTITE_ID_PROFIL);
     	Projet_Acl_Acl::setDefaultRole($nRole);
     	Zend_View_Helper_Navigation_HelperAbstract::setDefaultRole($nRole);
     	$oIdent[IDENTITE_ID_PROFIL] = $nRole;
     	$this->_auth->getStorage()->write($oIdent);
     
     }
     else
     */
     #		if (is_array($oIdent) && array_key_exists(IDENTITE_ID_PROFIL, $oIdent)) {
     #			$nRole = $oIdent[IDENTITE_ID_PROFIL];
     #		} else {
     #			$nRole = 2;
     #		}
     // On intercepte le nom de la ressource (controller) et du privilège demandé (action).
     $sModule = $request->getModuleName();
     $sController = $request->getControllerName();
     $sAction = $request->getActionName();
     // La ressource n'existe pas.
     // commenté car la ressource est créé automatiquement si on ne l'a pas déclaré dans acl.ini
     #		if (!$this->_acl->has($sResource)) {
     #			$this->_controller->gotoSimple(self::FAIL_ACL_ACTION, self::FAIL_ACL_CONTROLLER, self::FAIL_ACL_MODULE, array("messageWarn" => 1));
     #		}
     // TODO: vérifier qu'on est pas sur la route d'authentification
     // Le profil utilisé n'existe pas ou n'est pas reconnu par l'application.
     #		if (!$this->_acl->hasRole($nRole) ) {
     #			$this->_controller->gotoRouteAndExit(array("messageWarn" => 2), self::FAIL_AUTH_ROUTE);
     #		}
     #		if (!$sModule || !$sController || !$sAction) {
     #			return;
     #			$this->_controller->gotoRouteAndExit(array("messageWarn" => 4), self::FAIL_ROUTE);
     #		}
     // La ressource demandée n'est pas accessible pour ce role avec ces privilèges.
     if (!Projet_Acl_Acl::defaultIsAllowed(Projet_DataHelper::resource($sModule, $sController, $sAction))) {
         // si requête ajax
         if ($request->isXmlHttpRequest()) {
             die(Projet_DataHelper::translate(self::CLE_FAIL_ACL));
         }
         Zend_Controller_Action_HelperBroker::getStaticHelper('FlashMessenger')->setNamespace('warning')->addMessage(self::CLE_FAIL_ACL);
         $this->_controller->gotoRouteAndExit(array(), self::FAIL_ACL_ROUTE);
     }
 }