/** * Returns an instance of Zend_Auth * * Singleton pattern implementation * * @return Application_Service_Acl Provides a fluent interface */ public static function getInstance() { if (null === self::$_instance) { self::$_instance = new self(); } return self::$_instance; }
/** * Called after Zend_Controller_Router exits. * * Called after Zend_Controller_Front exits from the router. * * @param Zend_Controller_Request_Abstract $request * @return void */ public function routeShutdown(Zend_Controller_Request_Abstract $request) { $acl = Application_Service_Acl::getInstance(); $defaultRole = 'guest'; $acl->addRole(new Zend_Acl_Role($defaultRole)); $acl->addRole(new Zend_Acl_Role('user'), $defaultRole); $acl->addResource(new Zend_Acl_Resource('default.index.index')); $acl->addResource(new Zend_Acl_Resource('user.auth.index')); $acl->addResource(new Zend_Acl_Resource('user.register.index')); $acl->addResource(new Zend_Acl_Resource('user.register.recovery')); $acl->addResource(new Zend_Acl_Resource('user.register.activate')); $acl->addResource(new Zend_Acl_Resource('user.profile.index')); $acl->addResource(new Zend_Acl_Resource('user.profile.logout')); $acl->allow($defaultRole, 'default.index.index'); $acl->allow($defaultRole, 'user.auth.index'); $acl->allow($defaultRole, 'user.register.index'); $acl->allow($defaultRole, 'user.register.recovery'); $acl->allow($defaultRole, 'user.register.activate'); $acl->deny($defaultRole, 'user.profile.index'); $acl->deny($defaultRole, 'user.profile.logout'); $acl->allow('user', 'default.index.index'); $acl->allow('user', 'user.profile.index'); $acl->allow('user', 'user.profile.logout'); $acl->deny('user', 'user.auth.index'); $acl->deny('user', 'user.register.index'); $acl->deny('user', 'user.register.recovery'); $acl->deny('user', 'user.register.activate'); if (Zend_Auth::getInstance()->hasIdentity()) { $userName = Zend_Auth::getInstance()->getIdentity(); $model = new User_Model_UserProfile(); $userRole = $model->userGetData($userName); $defaultRole = $userRole['role']; } $acl->setDefaultRole($defaultRole); $resource = $request->getModuleName() . '.' . $request->getControllerName() . '.' . $request->getActionName(); if (!$acl->isAllowed($resource)) { if ($defaultRole == 'guest') { $request->setModuleName('user')->setControllerName('auth')->setActionName('index'); } else { $request->setModuleName('user')->setControllerName('profile')->setActionName('index'); } } }