Exemple #1
0
 /**
  * Called before an action is dispatched by Zend_Controller_Dispatcher.
  *
  * This callback allows for proxy or filter behavior.  By altering the
  * request and resetting its dispatched flag (via
  * {@link Zend_Controller_Request_Abstract::setDispatched() setDispatched(false)}),
  * the current action may be skipped.
  *
  * @param  Zend_Controller_Request_Abstract $request
  * @return void
  */
 public function preDispatch(Zend_Controller_Request_Abstract $request)
 {
     $oAuth = Zend_Auth::getInstance();
     $oAcl = $this->getAcl();
     // Default role
     $sRole = 'all';
     if ($oAuth->hasIdentity()) {
         $oIdentity = $oAuth->getIdentity();
         $sRole = isset($oIdentity->sRole) ? $oIdentity->sRole : 'identify';
     }
     $sModule = $request->module;
     $sController = $request->controller;
     $sAction = $request->action;
     $sResource = $sController . ':' . $sAction;
     if ($oAcl->has($sResource)) {
         if (!$oAcl->isAllowed('all', $sResource)) {
             // Access is not allowed
             if (!$oAcl->isAllowed($sRole, $sResource)) {
                 //$flashMessenger = new Zend_Controller_Action_Helper_FlashMessenger();
                 //$flashMessenger->addMessage('Acesso negado');
                 $request->setModuleName('default');
                 $request->setControllerName('index');
                 $request->setActionName('index');
             }
         }
     } else {
         $flashMessenger = new Zend_Controller_Action_Helper_FlashMessenger();
         $flashMessenger->addMessage('Acesso negado');
         $request->setModuleName('default');
         $request->setControllerName('index');
         $request->setActionName('index');
     }
 }
Exemple #2
0
 public function preDispatch(Zend_Controller_Request_Abstract $request)
 {
     $table = $request->getParam('table');
     $acl = $this->_getAcl();
     $identity = Zend_Auth::getInstance()->getIdentity();
     $role = 'Todos';
     $resource = strtolower($request->getModuleName());
     $controller = $request->getControllerName();
     $privilege = $controller . self::RESOURCE_SEPARATOR . $request->getActionName();
     if (isset($identity->role)) {
         $role = $identity->role;
     }
     if (!$acl->isAllowed($role, $resource, $privilege)) {
         if ($controller == 'scaffold' && $table) {
             $privilege = $table . self::RESOURCE_SEPARATOR . $request->getActionName();
             if ($acl->isAllowed($role, $resource, $privilege)) {
                 return true;
             }
         }
         if (isset($identity->role)) {
             $request->setModuleName('default')->setControllerName('error')->setActionName('access');
             return false;
         }
         $request->setModuleName('auth')->setControllerName('index')->setActionName('index');
     }
 }
Exemple #3
0
 public function preDispatch(Zend_Controller_Request_Abstract $request)
 {
     $module = $request->getModuleName();
     $controller = $request->getControllerName();
     $action = $request->getActionName();
     $resource = "{$module}:{$controller}";
     $privilege = $action;
     // If not dispatchable, no need to check the ACL
     $dispatcher = Zend_Controller_Front::getInstance()->getDispatcher();
     if (!$dispatcher->isDispatchable($this->getRequest())) {
         return;
     }
     // If the resource does not exist, revert to the root
     if (!$this->_acl->has($resource)) {
         $resource = 'root';
     }
     if (!$this->_acl->isAllowed($this->_role, $resource, $action)) {
         // If access is not allowed and we are a guest, we forward to the auth controller
         if ($this->_role == 'guest' && Zend_Registry::isRegistered('uri')) {
             $request->setModuleName('admin')->setControllerName('auth')->setActionName('index')->setParams(array('target' => Zend_Registry::get('uri')))->setDispatched(false);
         } else {
             // Otherwise we forward to the error controller
             $request->setModuleName('public')->setControllerName('error')->setActionName('denied')->setParams(array('message' => "Access denied for {$this->_role} to resource {$resource} with privilege {$privilege}."))->setDispatched(false);
         }
     }
 }
Exemple #4
0
 public function preDispatch(Zend_Controller_Request_Abstract $request)
 {
     $aNamespace = new Zend_Session_Namespace('userNs');
     if ($aNamespace->perfil != "") {
         $role = $aNamespace->perfil;
     } else {
         $role = 'guest';
     }
     $controller = strtolower($request->getControllerName());
     $action = strtolower($request->getActionName());
     $module = strtolower($request->getModuleName());
     $resource = $module . ':' . str_replace('-', '', $controller) . '.' . $action;
     //        $resource   = $module.':'.$controller.'.'.$action;
     if (!$this->_acl->isAllowed($role, $resource, $action)) {
         if ($this->_auth->hasIdentity()) {
             $request->setModuleName('default');
             $request->setControllerName('error');
             $request->setActionName('nopermission');
         } else {
             $this->_flashMessenger->addMessage(array('status' => 'error', 'message' => 'Favor logar novamente.'));
             $request->setModuleName('default');
             $request->setControllerName('login');
             $request->setActionName('index');
         }
     }
 }
Exemple #5
0
 public function preDispatch(Zend_Controller_Request_Abstract $request)
 {
     /**
      * Pegando o helper Redirector
      */
     $this->_redirect = Zend_Controller_Action_HelperBroker::getStaticHelper('Redirector');
     /*
      * Instanciando as variáveis de sessão do zend_auth
      */
     $authNamespace = new Zend_Session_Namespace('Zend_Auth');
     /**
      * Copiando em variáves o modulo, controlle e action
      */
     $module = strtolower($request->getModuleName());
     $controller = strtolower($request->getControllerName());
     $action = strtolower($request->getActionName());
     /**
      * Se o usuário estiver autenticado
      */
     if (Zend_Auth::getInstance()->hasIdentity()) {
         if (isset($authNamespace->timeout) && time() > $authNamespace->timeout) {
             /**
              * limpa a identidade do usuário que está um longo período sem acessar o controller
              */
             $request->setModuleName('default');
             $request->setControllerName('login');
             $request->setActionName('logout');
             $authNamespace->erro = 'Sua sessão expirou, favor logar novamente';
         } else {
             /**
              *  Usuário está ativo - atualizamos o time da sessão.
              */
             $authNamespace->timeout = strtotime(self::$_ZEND_SESSION_NAMESPACE_EXPIRATION_SECONDS . " seconds");
             /**
              * Renovando o timeout das variáves de sessão
              */
             $namesspaces = Zend_Session::getIterator();
             $namesspacesArrayCopy = $namesspaces->getArrayCopy();
             foreach ($namesspacesArrayCopy as $namesspace) {
                 $namesspace_each = new Zend_Session_Namespace($namesspace);
                 //$namesspace_each->setExpirationSeconds(self::$_ZEND_SESSION_NAMESPACE_EXPIRATION_SECONDS);
                 $namesspace_each->timeout = strtotime(self::$_ZEND_SESSION_NAMESPACE_EXPIRATION_SECONDS . " seconds");
                 $temp = $namesspace_each->timeout;
             }
         }
     }
     /** Se o usuário não possuir identidade ou a identidade foi removida devido ao timeout,
      * redirecionamos ele para a tela de login.
      */
     if (!Zend_Auth::getInstance()->hasIdentity()) {
         if (!($module == 'default' && $controller == 'login' && $action == 'index') && !($module == 'default' && $controller == 'login' && $action == 'ajaxbanco')) {
             $request->setModuleName('default');
             $request->setControllerName('login');
             $request->setActionName('index');
             $request->setParam('sessao', 'expirada');
         }
         return;
     }
 }
 public function preDispatch(Zend_Controller_Request_Abstract $request)
 {
     try {
         $module = $request->getModuleName();
         if ($module == 'admin') {
             $moduleList = new Zend_Session_Namespace('moduleList');
             $userInfo = new Zend_Session_Namespace('userInfo');
             $module = $moduleList->module;
             $allowed_module = $userInfo->module_list;
             //generating all resources
             $acl = new Zend_Acl();
             //generating user permission
             $acl->addRole(new Zend_Acl_Role('admin'));
             $acl->addRole(new Zend_Acl_Role('anonymous'));
             $acl->add(new Zend_Acl_Resource('index'));
             $acl->add(new Zend_Acl_Resource('ajax'));
             $acl->allow('admin', 'index');
             $acl->allow('admin', 'ajax');
             if (!empty($module)) {
                 foreach ($module as $value) {
                     if (!$acl->has($value['controller'])) {
                         $acl->add(new Zend_Acl_Resource($value['controller']));
                     }
                     if (in_array($value['id'], $allowed_module)) {
                         if ($value['action'] != null) {
                             $acl->allow('admin', $value['controller'], $value['action']);
                         } else {
                             $acl->allow('admin', $value['controller']);
                         }
                     }
                 }
             }
             //allowing anonymous user to get into the login page
             $acl->allow('anonymous', 'index', 'index');
             $acl->allow('anonymous', 'index', 'login');
             $auth = Zend_Auth::getInstance();
             if ($auth->hasIdentity()) {
                 $role = 'admin';
             } else {
                 $role = 'anonymous';
             }
             $controller = $request->controller;
             $action = $request->action;
             if (!$acl->isAllowed($role, $controller, $action)) {
                 $request->setModuleName('admin');
                 $request->setControllerName('error');
                 $request->setActionName('acl');
                 $request->setParam('type', 1);
             }
         }
     } catch (Zend_Acl_Exception $e) {
         $request->setModuleName('admin');
         $request->setControllerName('error');
         $request->setActionName('acl');
         $request->setParam('type', 2);
     }
 }
 /**
  *(non-PHPdoc)
  *
  * @see Zend_Controller_Plugin_Abstract::preDispatch()
  */
 public function preDispatch(Zend_Controller_Request_Abstract $request)
 {
     /**
      * Recupera a identidade do usuario logado
      *
      * @var Array
      */
     $role = $this->auth->getIdentity();
     /**
      * Recursos que se deseja acesso
      *
      * @var String
      */
     $resource = $this->getRequest()->getModuleName();
     /**
      * Ação permitida dentro de um resource
      *
      * @var String
      */
     $action = $this->getRequest()->getModuleName() != 'admin' && $this->getRequest()->getModuleName() != 'sac' ? null : $this->getRequest()->getControllerName();
     // Verificação condicional para os controllers e actions de upload
     if (!($request->getActionName() == 'upload' || $request->getControllerName() == 'upload')) {
         // Verifica se ha lixo na autenticacao
         if (!is_array($role)) {
             // Parametros
             $params = array();
             // Destroi qualquer instancia de autenticacao
             $this->auth->clearIdentity();
             // Altera a rota de destino
             $request->setModuleName('admin')->setControllerName('login')->setActionName('index');
             return;
         }
         // Verifica se o recurso existe e se o usuario logado tem acesso
         if (!$this->acl->has($resource) || !$this->acl->isAllowed($role['usuario'], $resource, $action)) {
             // Parametros
             $params = array();
             // Redireciona para o controller de login
             if ($role['usuario'] != 'visitante') {
                 $params['erro'] = 'Você não possui permissão de acesso a este recurso.';
                 $request->setModuleName('admin')->setControllerName('index')->setActionName('index')->setParams($params);
             } else {
                 if ($this->getRequest()->getModuleName() == "sac") {
                     $request->setModuleName('sac')->setControllerName('login')->setActionName('index')->setParams($params);
                 } else {
                     $request->setModuleName('admin')->setControllerName('login')->setActionName('index')->setParams($params);
                 }
             }
             return;
         }
     }
 }
Exemple #8
0
 public function preDispatch(Zend_Controller_Request_Abstract $request)
 {
     if (!in_array($request->getModuleName(), array('qg', 'painel'))) {
         return;
     }
     $controller = "";
     $action = "";
     $module = "";
     if (!$this->_auth->hasIdentity()) {
         $controller = $this->_notLoggedRoute['controller'];
         $action = $this->_notLoggedRoute['action'];
         $module = $request->getModuleName();
     } else {
         if (!$this->_isAuthorized($request->getModuleName(), $request->getControllerName(), $request->getActionName())) {
             $controller = $this->_forbiddenRoute['controller'];
             $action = $this->_forbiddenRoute['action'];
             $module = $request->getModuleName();
         } else {
             $controller = $request->getControllerName();
             $action = $request->getActionName();
             $module = $request->getModuleName();
         }
     }
     $request->setControllerName($controller);
     $request->setActionName($action);
     $request->setModuleName($module);
 }
Exemple #9
0
 public function preDispatch(Zend_Controller_Request_Abstract $request)
 {
     if ($this->_auth->hasIdentity()) {
         $role = $this->_auth->role;
     } else {
         $role = 'guest';
     }
     $controller = $request->getControllerName();
     $action = $request->getActionName();
     $module = $request->getModuleName();
     if (!$this->_acl->has($module)) {
         $module = null;
     }
     if (!$this->acl->isAllowed($role, $module)) {
         if (!$this->auth->hasIdentity()) {
             $controller = $this->_noauth['controller'];
             $action = $this->_noauth['action'];
         } else {
             $controller = $this->_noacl['controller'];
             $action = $this->_noacl['action'];
         }
     }
     $request->setModuleName($module);
     $request->setControllerName($controller);
     $request->setActionName($action);
 }
Exemple #10
0
 public function dispatchLoopStartup(Zend_Controller_Request_Abstract $request)
 {
     $auth = Zend_Auth::getInstance();
     if (!$auth->hasIdentity()) {
         $request->setModuleName('User')->setControllerName('auth')->setActionName('login')->setDispatched(true);
     }
 }
 public function route(Zend_Controller_Request_Abstract $dispatcher)
 {
     $dispatcher->setModuleName('worker');
     $dispatcher->setControllerName('index');
     $dispatcher->setActionName('index');
     return $dispatcher;
 }
 public function preDispatch(Zend_Controller_Request_Abstract $request)
 {
     if ($this->_auth->hasIdentity()) {
         $cnf = Zend_Registry::get('cnf');
         $db = Zend_Db::factory($cnf->db);
         $select = $db->query("\n                SELECT\n                    ut.User_type AS UserType\n                FROM\n                    admin_users_types ut\n                WHERE\n                    ID=" . $this->_auth->getIdentity()->TypeID);
         $tp = $select->fetchAll();
         $role = $tp[0]['UserType'];
     } else {
         $role = "guest";
     }
     $module = $request->module;
     $controller = $request->controller;
     $action = $request->action;
     $resource = $request->module;
     //print "<pre>";var_dump($request);
     if ($this->_acl->has($resource)) {
         $resource = null;
     }
     if (!$this->_acl->isAllowed($role, $module, $controller, $action)) {
         list($module, $controller, $action) = !$this->_auth->hasIdentity() ? array_values($this->_noAuth) : array_values($this->_noAcl);
     }
     $request->setModuleName($module);
     $request->setControllerName($controller);
     $request->setActionName($action);
 }
Exemple #13
0
 /**
  * @param Zend_Controller_Request_Abstract $request
  * @return Zend_Controller_Request_Abstract
  */
 public function route(Zend_Controller_Request_Abstract $request)
 {
     $this->_currentRequest = $request;
     $getOpt = new Zend_Console_Getopt(array());
     $arguments = $getOpt->getRemainingArgs();
     $module = 'index';
     $controller = 'index';
     $action = 'index';
     if ($arguments) {
         $module = array_shift($arguments);
         if ($arguments) {
             $controller = array_shift($arguments);
             if ($arguments) {
                 $action = array_shift($arguments);
                 $patternValidAction = '~^\\w+[\\-\\w\\d]+$~';
                 if (false == preg_match($patternValidAction, $action)) {
                     echo "Invalid action {$action}.\n", exit;
                 }
                 if ($arguments) {
                     foreach ($arguments as $arg) {
                         $parameter = explode('=', $arg, 2);
                         if (false == isset($parameter[1])) {
                             $parameter[1] = true;
                         }
                         $request->setParam($parameter[0], $parameter[1]);
                         unset($parameter);
                     }
                 }
             }
         }
     }
     $request->setModuleName($module)->setControllerName($controller)->setActionName($action);
     return $request;
 }
Exemple #14
0
 /**
  * 在消息派发之前,验证权限。
  * 
  * @see Zend_Controller_Request_Abstract::preDispatch()
  * @param Zend_Controller_Request_Abstract $request
  * @return void
  */
 public function preDispatch(Zend_Controller_Request_Abstract $request)
 {
     if ($this->_request->getActionName() != Zend_Controller_Front::getInstance()->getDefaultAction() && $this->_acl->has($this->_resource()) && !$this->_acl->isAllowed($this->_role(), $this->_resource(), $this->_privileges())) {
         // 如果没有权限则跳转到相关的提示页面
         $request->setModuleName('index')->setControllerName('index')->setActionName('deny');
     }
 }
 private function _changeDispatch(Zend_Controller_Request_Abstract &$request, Zend_Controller_Response_Abstract $response)
 {
     $module = $request->getParam($request->getModuleKey());
     $controller = $request->getParam($request->getControllerKey());
     $action = $request->getParam($request->getActionKey());
     $submodule = '';
     $subcontroller = '';
     $subaction = '';
     if ('admin' != $module) {
         $submodule = $module;
         $subcontroller = $controller ? $controller : 'index';
         $subaction = $action ? $action : 'index';
         $controller = 'index';
         $action = 'subroute';
         $module = 'default';
     } else {
         $submodule = $controller;
         $subcontroller = $action ? $action : 'index';
         //долно быть настроено в route
         //$subaction = ( $action ) ? $action : 'index';
         $controller = 'index';
         $action = 'subroute';
     }
     $request->setParam($request->getModuleKey(), $module);
     $request->setModuleName($module);
     $request->setParam($request->getControllerKey(), $controller);
     $request->setControllerName($controller);
     $request->setParam($request->getActionKey(), $action);
     $request->setActionName($action);
     $request->setParam('submodule', $submodule);
     $request->setParam('subcontroller', $subcontroller);
     $request->setParam('subaction', $subaction);
 }
Exemple #16
0
 public function preDispatch(Zend_Controller_Request_Abstract $request)
 {
     if ($request->isXmlHttpRequest()) {
         return;
     }
     $module = $request->getModuleName();
     $controller = $request->getControllerName();
     $action = $request->getActionName();
     $isAllowed = false;
     if (Zend_Auth::getInstance()->hasIdentity()) {
         $user = Zend_Auth::getInstance()->getIdentity();
         require_once APPLICATION_PATH . '/modules/core/services/Acl.php';
         $acl = Core_Services_Acl::getInstance();
         if (in_array(strtolower($module . '_' . $controller . '_' . $action), array('default_index_index', 'identity_account_logout'))) {
             $isAllowed = true;
         } else {
             $isAllowed = $acl->isUserOrRoleAllowed($user, $module, $controller, $action);
         }
     }
     if (!$isAllowed) {
         if (Zend_Auth::getInstance()->hasIdentity()) {
             $forwardAction = 'deny';
         } else {
             $forwardAction = 'login';
         }
         $sReturn = "http://" . $_SERVER['SERVER_NAME'] . $_SERVER['REQUEST_URI'];
         $sReturn = base64_encode($sReturn);
         $request->setModuleName('core')->setControllerName('Auth')->setActionName($forwardAction)->setParam('returnUrl', $sReturn)->setDispatched(true);
     }
 }
 public function dispatchLoopStartup(Zend_Controller_Request_Abstract $request)
 {
     $authNamespace = new Zend_Session_Namespace('Gslab_Session');
     $controller = $request->getParam('controller');
     $action = $request->getParam('action');
     $module = $request->getParam('module');
     $baseUrl = Zend_Controller_Front::getInstance()->getBaseUrl();
     if (!$this->_auth->hasIdentity() && $module == 'default' && $controller != 'login') {
         $redirect = '/';
         if ($action != 'index') {
             $redirect = '/' . $action . $redirect;
         }
         if ($controller != 'index' || $action != 'index') {
             $redirect = '/' . $controller . $redirect;
         }
         if ($module != 'default') {
             $redirect = '/' . $module . $redirect;
         }
         $redirect = urlencode($redirect);
         //$this->getResponse()->setRedirect($baseUrl . '/admin/login?redirect=' . $redirect, 302);
         $request->setModuleName('default');
         $request->setControllerName('login');
         $request->setActionName('index');
     }
 }
Exemple #18
0
 /**
  * ACL Access Check in preDispatch method
  *
  * @param Zend_Controller_Request_Abstract $request
  */
 public function preDispatch(Zend_Controller_Request_Abstract $request)
 {
     if (!$this->_auth->hasIdentity()) {
         $request->setModuleName('admin');
         $request->setControllerName('auth');
         $request->setActionName('login');
         return;
     }
     // What is user(role) loged in
     $role = $this->_auth->getIdentity()->role_id;
     // What is the current Resource
     $resource_table = new Admin_Model_Resources();
     $resource_name = $request->getModuleName() . ':' . $request->getControllerName();
     $resource = $resource_table->getByName(strtolower($resource_name));
     $resource_id = isset($resource->id) ? $resource->id : null;
     // Get current privilage ( == action )
     $action = strtolower($request->getActionName());
     if (!$this->_acl->hasRole($role)) {
         throw new Exception("Role not found in Database.", 404);
     } elseif (!$this->_acl->hasResource($resource_id)) {
         throw new Exception("Resource not found in Database.", 404);
     } elseif (!$this->_acl->isAllowed($role, $resource_id, $action)) {
         throw new Exception("You dont have permission for this page.", 404);
     }
 }
 public function route(Zend_Controller_Request_Abstract $dispatcher)
 {
     $getopt = new Zend_Console_Getopt(array());
     $arguments = $getopt->getRemainingArgs();
     $controller = "";
     $action = "";
     $params = array();
     if ($arguments) {
         foreach ($arguments as $index => $command) {
             $details = explode("=", $command);
             if ($details[0] == "controller") {
                 $controller = $details[1];
             } else {
                 if ($details[0] == "action") {
                     $action = $details[1];
                 } else {
                     $params[$details[0]] = $details[1];
                 }
             }
         }
         if ($action == "" || $controller == "") {
             die("\n\t\t\t\t\t\tMissing Controller and Action Arguments\n\t\t\t\t\t\t==\n\t\t\t\t\t\tYou should have:\n\t\t\t\t\t\tphp script.php controller=[controllername] action=[action] token=[token]\n\t\t\t\t\t\t");
         }
         $dispatcher->setModuleName('cronjob');
         $dispatcher->setControllerName($controller);
         $dispatcher->setActionName($action);
         $dispatcher->setParams($params);
         return $dispatcher;
     }
     echo "Invalid command.\n", exit;
     echo "No command given.\n", exit;
 }
Exemple #20
0
 public function preDispatch(Zend_Controller_Request_Abstract $request)
 {
     if ('company' == $request->getControllerName()) {
         $tsn = $request->tsn ? $request->tsn : $_COOKIE['tsn'];
         if ($tsn) {
             $token = Token::create($tsn);
             $token->update_sync_time();
         } else {
             $token = Token::create_abstract('123');
         }
         if ($token->is_logined() == true) {
             if ($token->is_expire()) {
                 $token->destroy();
                 include_once LIB_PATH . '/view_helper/BuildUrl.php';
                 $url_builder = new Zend_View_Helper_BuildUrl();
                 $referer = SearchFilter::slashes($url_builder->buildUrl($request->getActionName(), $request->getControllerName(), $request->getModuleName()));
                 $login_url = $url_builder->buildUrl('login', 'auth', 'index', array('redirect' => $referer));
                 $redirector = new Zend_Controller_Action_Helper_Redirector();
                 $redirector->gotoUrl($login_url);
                 return;
             }
             $token->register();
         } else {
             if ('auth' != $request->getActionName()) {
                 $token->destroy();
                 $request->setModuleName('index');
                 $request->setControllerName('auth');
                 $request->setActionName('login');
             }
         }
     }
 }
Exemple #21
0
 public function preDispatch(Zend_Controller_Request_Abstract $request)
 {
     if ($this->_auth->hasIdentity()) {
         switch ($this->_auth->getIdentity()->ma_quyen) {
             case '1':
                 $role = 'admin';
                 break;
             case '2':
                 $role = 'mod';
                 break;
             case '3':
                 $role = 'teacher';
                 break;
             case '4':
                 $role = 'member';
                 break;
             default:
                 $role = 'guest';
                 break;
         }
     } else {
         $role = 'guest';
     }
     $controller = $request->getControllerName();
     $action = $request->getActionName();
     $module = $request->getModuleName();
     $resource = $module . ':' . $controller;
     if ($module == 'admin') {
         if (!$this->_acl->isAllowed($role, $resource, $action)) {
             $this->_auth->clearIdentity();
             $request->setModuleName('admin')->setControllerName('login')->setActionName('index');
         }
     }
 }
Exemple #22
0
 public function preDispatch(Zend_Controller_Request_Abstract $request)
 {
     if ($this->_auth->hasIdentity()) {
         $role = $this->_auth->getIdentity()->getUser()->role;
     } else {
         $role = 'guest';
     }
     $controller = $request->controller;
     $action = $request->action;
     $module = $request->module;
     $resource = $controller;
     if (!$this->_acl->has($resource)) {
         $resource = null;
     }
     if (!$this->_acl->isAllowed($role, $resource, $action)) {
         if (!$this->_auth->hasIdentity()) {
             $module = self::NO_AUTH_MODULE;
             $controller = self::NO_AUTH_CONTROLLER;
             $action = self::NO_AUTH_ACTION;
         } else {
             $module = self::NO_ACL_MODULE;
             $controller = self::NO_ACL_CONTROLLER;
             $action = self::NO_ACL_ACTION;
         }
     }
     $request->setModuleName($module);
     $request->setControllerName($controller);
     $request->setActionName($action);
 }
Exemple #23
0
 public function preDispatch(Zend_Controller_Request_Abstract $request)
 {
     // Begin authorisation
     $auth = Zend_Auth::getInstance();
     $role = 'guest';
     if ($auth->hasIdentity()) {
         $user = $auth->getIdentity();
         if (is_object($user)) {
             if (!isset($user->role)) {
                 $user->role = 'user';
             }
             $role = $user->role;
         }
     }
     $controller = $request->getControllerName();
     $action = $request->getActionName();
     $module = $request->getModuleName();
     $resource = $module;
     $privellege = str_replace('-', '', $controller) . '_' . str_replace('-', '', $action);
     $cache = $this->getCache();
     $acl = null;
     if (!($acl = $cache->load('acl_' . $role))) {
         $acl = Isfa_Acl::getInstance($role);
         $cache->save($acl, 'acl_' . $role);
     }
     if (!$acl->has($resource)) {
         $resource = null;
     }
     if (!$acl->isAllowed($role, $resource, $privellege)) {
         $request->setModuleName('default')->setControllerName('index')->setActionName('index')->setDispatched(false);
     }
 }
Exemple #24
0
 /**
  * routeShutdown
  * 在 路由器 完成请求的路由后被调用
  * @param Zend_Controller_Request_Abstract $request 
  * @return void
  */
 public function routeShutdown(Zend_Controller_Request_Abstract $request)
 {
     /**
      * 检测请求的Content-type类型
      */
     $pathinfo = $request->getPathInfo();
     if (!empty($pathinfo)) {
         if ($extension = pathinfo($pathinfo, PATHINFO_EXTENSION)) {
             if (preg_match('/^[-a-z0-9]+$/i', $extension)) {
                 $request->setParam(static::KEY_EXT, strtolower($extension));
             }
         }
     }
     /**
      * 检测是否支持json响应
      */
     if ($request->getParam(static::KEY_EXT) == '') {
         $accept = $request->getServer('HTTP_ACCEPT');
         if (!empty($accept)) {
             if (strpos($accept, 'json') !== false) {
                 $request->setParam(static::KEY_EXT, 'json');
             }
         }
     }
     /**
      * 格式化请求目标信息,不允许[-a-zA-Z0-9]以外的字符
      */
     $pattern = '/[^-a-zA-Z0-9].*/';
     $request->setModuleName(preg_replace($pattern, '', $request->getModuleName()));
     $request->setControllerName(preg_replace($pattern, '', $request->getControllerName()));
     $request->setActionName(preg_replace($pattern, '', $request->getActionName()));
 }
Exemple #25
0
Fichier : Acl.php Projet : cwcw/cms
 /**
  * 
  */
 public function preDispatch(Zend_Controller_Request_Abstract $request)
 {
     $module = $request->getModuleName();
     $controller = $request->getControllerName();
     $action = $request->getActionName();
     $front = Zend_Controller_Front::getInstance();
     $acl = $front->getParam('bootstrap')->getResource('acl');
     $role = $front->getParam('bootstrap')->getPluginResource('acl')->getRole();
     $allow = false;
     do {
         if (!$acl->hasRole($role)) {
             break;
         }
         if ($acl->isAllowed($role)) {
             $allow = true;
             break;
         }
         $mca = new Streamwide_Web_Acl_Resource_Mca($module, $controller, $action);
         $all = new Streamwide_Web_Acl_Resource_Mca('*', '*', '*');
         if ($acl->has($mca)) {
             $allow = $acl->isAllowed($role, $mca);
         } else {
             //the resource is not defined in acl,check against its *.*.* definition
             $allow = $acl->isAllowed($role, $all);
         }
     } while (0);
     if (!$allow) {
         $request->setModuleName($this->getErrorHandlerModule())->setControllerName($this->getErrorHandlerController())->setActionName($this->getErrorHandlerAction());
     }
 }
Exemple #26
0
 /**
  * Predispatch method to authenticate user
  *
  * @param Zend_Controller_Request_Abstract $request
  */
 public function preDispatch(Zend_Controller_Request_Abstract $request)
 {
     //user only to login for access to admin functions
     /*if ('admin' != $request->getModuleName()) {
           return;
       }
        
       if (App_Model_Users::isLoggedIn() && App_Model_Users::isAdmin()) {
           //user is logged in and allowed to access admin functions
           return;
       }*/
     if ('admin' == $request->getModuleName()) {
         return;
     }
     /**
      * User not logged in or not allowed to access admin ... redirect to login.
      * Note: if user is logged in but not authorised, we redirect to login
      * to allow user to login as a different user with the right permissions.
      */
     Zend_Session::destroy(true);
     if ($request->getActionName() != 'logincheck') {
         $request->setModuleName('default')->setControllerName('login')->setActionName('index');
         //->setDispatched(FALSE);
         header("Location:http://" . $_SERVER['HTTP_HOST'] . "/login/index");
     }
 }
Exemple #27
0
 public function preDispatch(Zend_Controller_Request_Abstract $request)
 {
     $controller = "";
     $action = "";
     $module = "";
     /*	if($request->getControllerName() == "index" ){
     			$controller = $request->getControllerName();
     			$action     = $request->getActionName();
     			$module     = $request->getModuleName();
     		}
     		else if ( !$this->_auth->hasIdentity() ) {
     			
     		}*/
     if (!$this->_isAuthorized($request->getControllerName(), $request->getActionName())) {
         if (!$this->_auth->hasIdentity()) {
             if (!in_array($request->getControllerName(), $this->_moRedirect) && !Application_Model_Redirect::hasRequestUri()) {
                 Application_Model_Redirect::saveRequestUri("/" . $request->getControllerName() . "/" . $request->getActionName());
             }
             $controller = $this->_notLoggedRoute['controller'];
             $action = $this->_notLoggedRoute['action'];
             $module = $this->_notLoggedRoute['module'];
         } else {
             $controller = $this->_forbiddenRoute['controller'];
             $action = $this->_forbiddenRoute['action'];
             $module = $this->_forbiddenRoute['module'];
         }
     } else {
         $controller = $request->getControllerName();
         $action = $request->getActionName();
         $module = $request->getModuleName();
     }
     $request->setControllerName($controller);
     $request->setActionName($action);
     $request->setModuleName($module);
 }
Exemple #28
0
 public function preDispatch(Zend_Controller_Request_Abstract $request)
 {
     if ($request->getModuleName() === "admin" && !Zend_Auth::getInstance()->hasIdentity()) {
         $request->setModuleName("admin")->setControllerName("auth")->setActionName("login");
         $request->setDispatched();
     }
 }
Exemple #29
0
	public function routeShutdown(Zend_Controller_Request_Abstract $request)
	{
		if( !Zend_Auth::getInstance()->hasIdentity() ){
			$request->setModuleName( 'User' )
					->setControllerName( 'index' )
					->setActionName( 'connect' )
					->setDispatched( true );
		}
	}
Exemple #30
0
 /**
  * @see Zend_Controller_Router_Interface::route
  */
 public function route(Zend_Controller_Request_Abstract $request)
 {
     if ($request->getModuleName() == '') {
         $request->setModuleName('cli');
     }
     if ($request->getControllerName() == '') {
         $request->setControllerName('index');
     }
     return true;
 }