✏️ 正在编辑: InitAcl.php
路径:
/srv/systems_dir/contemax/application/plugins/InitAcl.php
提示:
您可以编辑任何文件(包括二进制文件),但请注意不当修改可能导致文件损坏。
<?php class Plugin_InitAcl extends Zend_Controller_Plugin_Abstract { public function routeStartup(Zend_Controller_Request_Abstract $request) { $log = Acl_Model_Container::getLog(); Yuppie_Log::setDbTable($log); } /** * This method is executed before the action * * @link http://framework.zend.com/manual/en/zend.controller.action.html#zend.controller.action.prepostdispatch * @param Zend_Controller_Request_Abstract $request */ public function preDispatch(Zend_Controller_Request_Abstract $request) { $module = $request->getModuleName(); $controller = $request->getControllerName(); $action = $request->getActionName(); if( $controller == "solicitar-reset-senha"){ $request->setModuleName('acl'); $request->setControllerName('auth'); $request->setActionName('solicitar-reset-senha'); return; } if( ($module == 'financeiro' && $controller == 'boleto' && $action == 'impressao-boleto') ){ return; } if( ($module == 'operacional' && $controller == 'concurso-inscricao') ){ return; } if (!Yuppie_Auth::hasIdentity() && !($module == 'module' && $controller == 'auth')) { // Monta a url para onde redirecionar após efetuar o login $params = $request->getParams(); $url = $params['controller'] . '/' . $params['action']; if (isset($params['module']) && $params['module'] && $params['module'] != 'default') { $url = $params['module'] . '/' . $url; } foreach($params as $paramName => $paramValue) { if (!in_array($paramName, array('controller', 'action', 'module', 'tipo_acesso', 'login', 'senha', 'submit', 'error_handler')) && !is_array($paramValue)) { $url .= "/{$paramName}/{$paramValue}"; } } $request->setParam('url', $url); $request->setModuleName('acl'); $request->setControllerName('auth'); $request->setActionName('login'); return; } $identity = Yuppie_Auth::getIdentity(); // Verifica se houve duplo acesso com mesmo usuário $acesso = Acl_Model_Container::getAcesso(); if (!$acesso->validar()) { Zend_Controller_Action_HelperBroker::getStaticHelper('Alerts') ->addWarning('Você foi desconectado porque identificamos ' . 'um duplo acesso a esta conta.'); $request->setModuleName('acl'); $request->setControllerName('auth'); $request->setActionName('logout'); return; } $ns = new Zend_Session_Namespace(); if ($module == 'acl' && $controller == 'auth') { return; } if (!$identity) { return; } // Verifica se o usuário está dentro do horário permitido $dias = explode(',',$identity->dias); if (Zend_Date::now()->compareTime($identity->hora_inicio, 'HH:mm') < 0 || Zend_Date::now()->compareTime($identity->hora_fim, 'HH:mm') > 0 || !in_array(Zend_Date::now()->get(Zend_Date::WEEKDAY_DIGIT), $dias)) { Zend_Controller_Action_HelperBroker::getStaticHelper('Alerts') ->addWarning('Fora do dia/horário permitido.'); $request->setModuleName('acl'); $request->setControllerName('auth'); $request->setActionName('logout'); return; } // Verifica se o usuário solicitou o reset de senha if( !empty($identity->reset_senha)){ $request->setModuleName('acl'); $request->setControllerName('auth'); $request->setActionName('reset-senha'); return; } // Verifica se o usuário tem permissão para acessar o recurso $acl = Zend_Registry::get('acl'); if ($controller != 'auth') { if ($acl) { $resource = "{$module}_{$controller}"; if ($module != 'default' && $action != 'index' && !$acl->isAllowed($identity->grupo, $resource, $action)) { $request->setModuleName('default'); $request->setControllerName('error'); $request->setActionName('sem-permissao'); } } else { $request->setModuleName('default'); $request->setControllerName('error'); $request->setActionName('sem-permissao'); } } } public function dispatchLoopStartup(Zend_Controller_Request_Abstract $request) { if (Yuppie_Auth::hasIdentity()) { // user is logged in // get an instance of Zend_Session_Namespace used by Zend_Auth $authns = new Zend_Session_Namespace(Yuppie_Auth::getStorage()->getNamespace()); // set an expiration on the Zend_Auth namespace where identity is held $authns->setExpirationSeconds(60 * 30); // expire auth storage after 30 min } } }
💾 保存文件
← 返回文件管理器