Esempio n. 1
0
 /**
  * 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());