Autor Tópico: sc_apl_status nao funciona  (Lida 2301 vezes)

keycos

  • Novato
  • *
  • Mensagens: 12
sc_apl_status nao funciona
« Online: Abril 30, 2009, 11:35:41 am »
Bom dia   SC V4

eu estou com um problema eu criei uma rotina de validacao no evento onvalidate como manda o exemplo do curso.

Rotina :

// limpa da sessao o perfl do ultimo usuario (acesso)
sc_reset_apl_status();

// limpa da sessao o perfil do ultimo usuario (direitos)
sc_reset_apl_conf();

// $varsenha = sc_encode({txt_senha});

// protegendo o login contra sql injection

$vartxtlogin = sc_sql_injection({txt_login});

//verifica se existe o usuario com a senha informada

sc_lookup(rstusu,"select nome from slsenhas where nome = $vartxtlogin");

if (empty({rstusu})) /* EOF */
{
   sc_erro_mensagem("Usuario ou Senha Invalida");
}
else
{
   $var_usunome = {rstusu[0][0]};
   
   //verifica os direitos do usuario

   sc_lookup(rstgrupo,"SELECT DISTINCT SL_GRUPO_APL.APLICACAO,SL_GRUPO_APL.DIREITO FROM SL_GRUPO_USU INNER JOIN SL_GRUPO_APL ON SL_GRUPO_USU.COD_GRUPO = SL_GRUPO_APL.COD_GRUPO WHERE SL_GRUPO_USU.USUARIO = '$var_usunome'");
   
      if (empty({rstgrupo})) /* EOF */
      {
         sc_erro_mensagem("Usuario nao tem permissoes definidas. Acesso negado.");
      }
      
      else /* Processamento */
      {
         foreach({rstgrupo} as $grupo)
         {
      ************** aqui comeca o problema
************ seu eu utilizar a primeira linha abaixo o sc_apl_status nao ****** funciona se usar  a segunda linha funciona mais o exemplo do *******curso esta com a primeira linha
            $aplicativo = $grupo[0];
         //        $aplicativo = 'menu_seiki';
                  $direito = $grupo[1];
                        
                                
            // habilita as aplicacoes para consulta

      ************** aqui acontece a mesma coisa
************ seu eu utilizar a primeira linha abaixo o sc_apl_status nao ****** funciona se usar  a segunda linha funciona mais o exemplo do *******curso esta com a primeira linha

            
            sc_apl_status($aplicativo,"on");
         //   sc_apl_status('menu_seiki','on');
            
            // seta os botoes de todas as aplicacoes para off
            
            sc_apl_conf($aplicativo,"insert","off")   ;
            sc_apl_conf($aplicativo,"update","off")   ;
            sc_apl_conf($aplicativo,"delete","off")   ;
            
            $propriedade = "";
            
            // de acordo com o perfil de cada grupo habilita os botoe
            
            for ($i=0;$i<strlen($direito);$i++)
            {
               if (substr($direito,$i,1)=="I")
               {
                  $propriedade="insert";
               }   
               elseif(substr($direito,$i,1)=="A")
               {
                  $propriedade="update";
               }
               elseif(substr($direito,$i,1)=="D")
               {
                  $propriedade="delete";
               }
               elseif(substr($direito,$i,1)=="T")
               {
                  sc_apl_conf($aplicativo,"insert","on")   ;
                  sc_apl_conf($aplicativo,"update","on")   ;
                  sc_apl_conf($aplicativo,"delete","on")   ;
               }
               
               if(rtrim($propriedade) != "")
               {
                  sc_apl_conf($aplicativo,$propriedade,"on") ;
               }
            }
         }
   }
}   


Pergunta porque ele nao esta aceitando o valor da variavel quando é passado via $grupo[0].

Obrigado

Rodrigo Lins

  • Global Moderator
  • Expert
  • *****
  • Mensagens: 504
    • Overalt I.T
Re: sc_apl_status nao funciona
« Responder #1 Online: Junho 26, 2009, 11:50:00 am »
Bom Dia,

Eu não entendi exatamente o erro, ou que faz quando executa o código, mas primeiro eu retiraria o DISTINCT do seu select, visto que ele obrigatoriamente irá retornar vários registros... Só se a lógica foi alterada. Mas, então faça um teste no próprio código para ver o que retorna no seu comando SELECT.

Exemplo:

 //verifica os direitos do usuario

sc_lookup(rstgrupo,"SELECT DISTINCT SL_GRUPO_APL.APLICACAO,SL_GRUPO_APL.DIREITO FROM SL_GRUPO_USU INNER JOIN SL_GRUPO_APL ON SL_GRUPO_USU.COD_GRUPO = SL_GRUPO_APL.COD_GRUPO WHERE SL_GRUPO_USU.USUARIO = '$var_usunome'");
   
      if (empty({rstgrupo})) /* EOF */
      {
         sc_erro_mensagem("Usuario nao tem permissoes definidas. Acesso negado.");
      } else {

   echo "<pre>";
     var_dump({rstgrupo});
  echo  "</pre>";

}
     

Você já poderia atribuir (para testar) no $var_usunome, o nome de algum usuário e ver o que retorna... Para assim saber o que está acontecendo.

Espero que consiga ou ajude.

Rodrigo Lins.