/** * Creates an ACL for a specific user * @param stdClass $usuario - usuario logado, recebido do Zend_Auth * @return Core_Acl */ public static function createAcl($usuario) { //Lets assume we have a model for the page_privileges with a method like this //which would return PagePrivilege objects with the page_id passed as the param. $privilegios_unidade = DaoPrivilegio::getPrivilegiosPorUnidade((int) $usuario->ID_UNIDADE); $privilegios_usuario = DaoPrivilegioUsuario::getPrivilegiosPorUsuario((int) $usuario->ID); $acl = new Core_Acl(); $acl->addRole(new Zend_Acl_Role($usuario->ID)); $acl->setIdUnidade($usuario->ID_UNIDADE); $acl->setNomeUnidade($usuario->DIRETORIA); $acl->setTrocouUnidade($usuario->TROCOU ? true : false); foreach ($privilegios_unidade as $privilege) { $recurso = DaoRecurso::getRecursoById($privilege['ID_RECURSO']); if (!$acl->has($recurso)) { $acl->addResource($recurso); } // Checa pela presenca de assertion if ($recurso->hasClasseAssertion()) { $acl->allow($usuario->ID, $recurso, null, new $recurso->classe_assertion()); } else { if ($privilege['PERMISSAO'] == 1) { $acl->allow($usuario->ID, $recurso); } else { $acl->deny($usuario->ID, $recurso); } } } foreach ($privilegios_usuario as $privilege2) { $recurso = DaoRecurso::getRecursoById($privilege2['ID_RECURSO']); // @todo foi adicionado a condicao !NULL para corrigir possivel bug, analizar! if (!is_null($recurso) && !$acl->has($recurso)) { $acl->addResource($recurso); } // @todo foi adicionado a condicao !NULL para corrigir possivel bug, analizar! // Checa pela presenca de assertion if (!is_null($recurso) && $recurso->hasClasseAssertion()) { $acl->allow($usuario->ID, $recurso, null, new $recurso->classe_assertion()); } else { if ($privilege2['PERMISSAO'] == "1") { $acl->allow($usuario->ID, $recurso); } else { $acl->deny($usuario->ID, $recurso); } } } if ($acl->isTrocouUnidade()) { $acl->allow($usuario->ID, 115); } return $acl; }
try { $idGrupoPrivilegio = $_POST['id_grupo_privilegio']; $grupoPrivilegio = DaoGrupoPrivilegio::getGruposPrivilegiosPorRecurso(array('ID_GRUPO_PRIVILEGIO' => $idGrupoPrivilegio)); if ($grupoPrivilegio->result == true) { $out = trataJson($grupoPrivilegio->result); //$out = $grupoPrivilegio->result; } } catch (Exception $e) { $out = array('success' => 'false', 'error' => $e->getMessage()); } break; case 'salvar-grupos-privilegios': try { $manterGrupoPrivilegio = array(); $manterGrupoPrivilegio['ID_UNIDADE'] = $idUnidade; $delete = DaoPrivilegio::deletePrivilegioPorUnidade($manterGrupoPrivilegio); // $manterGrupoPrivilegio['ID_GRUPO_PRIVILEGIO'] = $_POST['id_grupo_privilegio']; $insert = DaoGrupoPrivilegio::inserirPermissoesTB_PRIVILEGIOS($manterGrupoPrivilegio); if ($insert->success == false) { throw new Exception($insert->error); } $out = array('success' => 'true', 'message' => $insert->message); } catch (Exception $e) { $out = array('success' => 'false', 'error' => $e->getMessage()); } break; } } catch (Exception $e) { LogError::sendReport($e); $out = array('success' => 'false', 'error' => $e->getMessage());