sc_apl_status nao funciona

(keycos) #1

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) #2

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 “

”;
var_dump({rstgrupo});
echo “
”;

}

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.