public function assert(Core_Acl $acl, Zend_Acl_Role_Interface $role = null, Zend_Acl_Resource_Interface $resource = null, $privilege = null) { $auth = Zend_Auth::getInstance(); if (!$auth->hasIdentity()) { return false; } $controller = Controlador::getInstance(); $usuario = $controller->usuario; $somenteUltimo = false; $contexto = $resource->getContexto($somenteUltimo); // Se houver um contexto, e o usuario tem permissao para o recurso if (!is_null($contexto)) { // Checa se o usuario tem permissao de acessar o recurso if (!$controller->cache->test('privilegio_' . $usuario->ID . '_' . $resource->id)) { // não existe o cache, pegar o valor do banco $privilegio = DaoRecurso::getPrivilegioByUsuario($usuario, $resource); $controller->cache->save($privilegio, 'privilegio_' . $usuario->ID . '_' . $resource->id, array('acl_usuario_' . $usuario->ID, 'acl_unidade_' . $usuario->ID_UNIDADE)); } else { $privilegio = $controller->cache->load('privilegio_' . $usuario->ID . '_' . $resource->id); } if ($privilegio) { foreach ($contexto as $umContexto) { // checa se o objeto do contexto tem a mesma area de trabalho do usuario if ($umContexto['id_unid_area_trabalho'] == $usuario->ID_UNIDADE) { return true; } } } } return false; }
public function assert(Core_Acl $acl, Zend_Acl_Role_Interface $role = null, Zend_Acl_Resource_Interface $resource = null, $privilege = null) { $auth = Zend_Auth::getInstance(); if (!$auth->hasIdentity()) { return false; } $controller = Controlador::getInstance(); $usuario = $controller->usuario; if (!$controller->cache->test('privilegio_' . $usuario->ID . '_' . $resource->id)) { // não existe o cache, pegar o valor do banco $privilegio = DaoRecurso::getPrivilegioByUsuario($usuario, $resource); $controller->cache->save($privilegio, 'privilegio_' . $usuario->ID . '_' . $resource->id, array('acl_usuario_' . $usuario->ID, 'acl_unidade_' . $usuario->ID_UNIDADE)); } else { $privilegio = $controller->cache->load('privilegio_' . $usuario->ID . '_' . $resource->id); } // Checa se o usuario tem permissao de acessar o recurso incondicionalmente if ($acl->has($resource) && $privilegio) { return true; } else { $contexto = $resource->getContexto(); if (!is_null($contexto) && count($contexto) > 0) { // Existe um contexto, avaliar se o id_unid_area_trabalho do objeto contexto == ID_UNIDADE do usuario logado return $contexto['id_unid_area_trabalho'] == $usuario->ID_UNIDADE; } else { // Não existe objeto de contexto, retorna true se recurso original da requisicao for AREA DE TRABALHO return Controlador::getInstance()->recurso->id == 3; } } return false; }
public function assert(Core_Acl $acl, Zend_Acl_Role_Interface $role = null, Zend_Acl_Resource_Interface $resource = null, $privilege = null) { // Secondly, we need a authenticated user $auth = Zend_Auth::getInstance(); if (!$auth->hasIdentity()) { return false; } $controller = Controlador::getInstance(); $usuario = $controller->usuario; $protocolizadora = DaoUnidade::getUnidade($usuario->ID_UNIDADE, 'up'); if (intval($protocolizadora) == 1) { if (!$controller->cache->test('privilegio_' . $usuario->ID . '_' . $resource->id)) { // não existe o cache, pegar o valor do banco $privilegio = DaoRecurso::getPrivilegioByUsuario($usuario, $resource); $controller->cache->save($privilegio, 'privilegio_' . $usuario->ID . '_' . $resource->id, array('acl_usuario_' . $usuario->ID, 'acl_unidade_' . $usuario->ID_UNIDADE)); } else { $privilegio = $controller->cache->load('privilegio_' . $usuario->ID . '_' . $resource->id); } return $privilegio; } else { return false; } }