Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- class Pog_Model_AuthPlugin extends Zend_Controller_Plugin_Abstract
- {
- public function preDispatch(Zend_Controller_Request_Abstract $oRequest)
- {
- /**
- * Load user
- */
- $oAuth = Zend_Auth::getInstance();
- $oDbUsers = new Pog_Model_DbTable_Users();
- if (!$oAuth->hasIdentity())
- {
- $oUser = $oDbUsers->createRow();
- $oUser->name = "guest";
- $oUser->setReadOnly(true);
- }
- else
- {
- $oUser = $oAuth->getIdentity();
- $oUser->setTable($oDbUsers);
- }
- /**
- * Load ACL
- */
- $oAcl = new Zend_Acl();
- $oAcl->addRole($oUser->name);
- /**
- * Add current user privileges
- */
- $oPrivileges = $oUser->getPrivileges();
- foreach ($oPrivileges as $oPrivilege)
- {
- if (!$oAcl->has($oPrivilege->resource))
- $oAcl->addResource($oPrivilege->resource);
- $oAcl->allow($oUser->name, $oPrivilege->resource, $oPrivilege->privilege);
- }
- /**
- * Load Navigation view helper
- */
- $oViewRenderer = Zend_Controller_Action_HelperBroker::getStaticHelper('ViewRenderer');
- $oNavigation = $oViewRenderer->view->navigation();
- /**
- * Add remaining Navigation resources
- */
- foreach ($oNavigation->getPages() as $oPage)
- {
- if (!is_null($oPage->getResource()) && !$oAcl->has($oPage->getResource()))
- $oAcl->addResource($oPage->getResource());
- }
- /**
- * Set ACL and Role
- */
- $oNavigation->setAcl($oAcl)->setRole($oUser->name);
- /**
- * Check if use is allowed to be here
- */
- ...MAGIC GOES HERE...
- }
- }
- /**
- * Load Navigation view helper
- */
- $oViewRenderer = Zend_Controller_Action_HelperBroker::getStaticHelper('ViewRenderer');
- $oNavigation = $oViewRenderer->view->navigation();
- /*@var $active array */
- $active = $oNavigation->findActive($oNavigation->getContainer());
- /*@var $activePage Zend_Navigation_Page_Mvc */
- $activePage = $active['page'];
- // example of getting page info
- var_dump($activePage->getLabel(), $activePage->getController(), $activePage->getAction());
- $oCurrentPage = null;
- foreach ($oNavigation->getPages() as $oPage)
- {
- /**
- * Check for Current Page
- */
- if ($oPage->getController() == $oRequest->getControllerName()
- && $oPage->getAction() == $oRequest->getActionName())
- $oCurrentPage = $oPage;
- /**
- * Add Resource, if missing
- */
- if (!is_null($oPage->getResource()) && !$oAcl->has($oPage->getResource()))
- $oAcl->addResource($oPage->getResource());
- }
Add Comment
Please, Sign In to add comment