AccessControl.php

00001 <?php
00009 class Dsao_Controller_Action_Helper_AccessControl
00010   extends Zend_Controller_Action_Helper_Abstract
00011 {
00016   protected $_acl = null;
00017 
00023   public function preDispatch()
00024   {
00025     // ACL-Objekt
00026     if (null === $this->_acl)
00027     {
00028       $this->_acl = Dsao_Registry::get('acl');
00029     }
00030 
00031     // Momentane Rolle
00032     $roleCurrent = $this->getActionController()->getUser()->getData('role', 'guest');
00033 
00034     // Filter
00035     $filterAcl = new Dsao_Filter_Acl($roleCurrent, $this->_acl);
00036 
00037     // Falls nach dem Filtern noch etwas vorhanden ist, darf der
00038     // Benutzer auf die aufgerufene Aktion zugreifen
00039     if ($filterAcl->filter(array($this->getActionController()->getUri())))
00040     {
00041       return true;
00042     }
00043     // Falls Benutzer nicht angemeldet, auf Login-Seite umleiten
00044     else if (!Zend_Auth::getInstance()->hasIdentity())
00045     {
00046       // Link, auf den nach erfolgreichem Login wieder umgeleitet werden soll
00047       $redirectLink = str_replace('/', '_', $this->getActionController()
00048         ->getUri()->getUriString());
00049 
00050       // Weiterleiten
00051       $this->getActionController()->forward
00052         ('login', 'login', 'user', array('redirect' => $redirectLink));
00053 
00054       return false;
00055     }
00056 
00057     // Ansonsten Fehlerseite anzeigen
00058     $this->getActionController()->forward('privileges', 'error', 'default');
00059 
00060     return false;
00061   }
00062 }

Erzeugt am Fri Sep 18 19:04:11 2009 für DSA online - Morgendaemmerung von  doxygen 1.5.7.1