Dúvida para valida login

(system) #1

Prezados (as)

Eu tenho um código php para validar login e permissões.só que a parte de permissões não funciona, qual parte do código tá errado, peguei com um camarada o que fiz foi renomear as tabelas, vejao o código, ATÉ A PARTE DO USUARIO E SENHA INVALIDO FUNCIONA,MAS QUANDO COLOCO O RESTANTE POIS QUERO COLOCAR PERMISSÕES NÃO FUNCIONA.

// Limpa da sessão o perfil do ultimo usuário logado neste browser (Acesso)
sc_reset_apl_status();

// Limpa da sessão o perfil do ultimo usuario logado neste browser (Direitos)
sc_reset_apl_conf();

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

// Protegendo o login contra SQL Injection
$vartxtlogin = sc_sql_injection({txt_login});

// Verifica se existe o usuário com a senha informada no banco de dados
sc_lookup(rstusu,“select usucod from tbl_usuarios_coreme where usulogin=$vartxtlogin and ususenha=’$varsenha’”);

if (empty({rstusu})) /* EOF */
{
sc_erro_mensagem(“Usuario/Senha Invalido”);
}else
{

ATÉ AQUI FUNCIONA O RESTANTE NÃO. POR QUE SERÁ?

$varusucod = {rstusu[0][0]};

// Verifica os direitos do usuário dentro do sistema

sc_lookup(rstgrupo_ficha,"SELECT DISTINCT tbl_grupo_x_direitos_coreme.aplinome,tbl_grupo_x_direitos_coreme.grupodireito FROM tbl_grupo_x_usuarios_coreme INNER JOIN tbl_grupo_x_direitos_coreme ON tbl_grupo_x_usuarios_coreme.grupousucod = tbl_grupo_x_usuarios_coreme.grupousucod WHERE tbl_grupo_x_usuarios.usucod = $varusucod");

if (empty({rstgrupo})) /* EOF */
{
	sc_erro_mensagem("Usuário não tem permissões definidas. Acesso negado.");
}

else /* Processamento */
{
	foreach({rstgrupo_ficha} as $grupo_ficha)
	{
		$aplicativo = $grupo_ficha[0];
		$direito = $grupo_ficha[1];

		// Habilita as aplicações para consulta
		sc_apl_status($aplicativo,'on');

		// Seta os botões de todas as aplicações 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/Aplicação/Usuario, habilita os botões correspondentes

		for($i=0;$i<strlen($direito);$i++)
		{
			if(substr($direito,$i,1)=="I")
			{
				$propriedade="insert";
				$valor="on";
			}
			
			elseif(substr($direito,$i,1)=="A")
			{
				$propriedade="update";
				$valor="on";
			}
			
			elseif(substr($direito,$i,1)=="D")
			{
				$propriedade="delete";
				$valor="on";
			}
			
			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, $valor);
			}

		}

	}
}

}

(William .&#039;.) #2

Normano,

Chega a entrar “(empty({rstgrupo}))” ??

WSCA .’.

(system) #3

Cara quando eu vou no login e coloco a senha

Dá essa mensagem Usuário não tem permissões definidas. Acesso negado

ai eu coloco só essa parte no evento onvalidade
// Limpa da sessão o perfil do ultimo usuário logado neste browser (Acesso)
sc_reset_apl_status();

// Limpa da sessão o perfil do ultimo usuario logado neste browser (Direitos)
sc_reset_apl_conf();

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

// Protegendo o login contra SQL Injection
$vartxtlogin = sc_sql_injection({txt_login});

// Verifica se existe o usuário com a senha informada no banco de dados
sc_lookup(rstusu,“select usucod from tbl_usuarios_coreme where usulogin=$vartxtlogin and ususenha=’$varsenha’”);

if (empty({rstusu})) /* EOF */
{
sc_erro_mensagem(“Usuario/Senha Invalido”);
}else
{
e entra mas sem as permissões de grupo, resumindo, qualquer um pode nentrar com, a senha e login

(system) #4

Galera descobri o erro parcialmente.

Criei um formulário de grupos onde coloco os grupos
Existem dois grupos

grupo admin
grupo restrito

quando eu coloco um usuario no grupo restrito , o usuário fica restrito, mas acontece do usuario admin fica tb restrito, mas ele não tá no grupo restrito, ai eu excluo o grupo restrito volta as funçoes para o admin, o que será ?

abraços

normando

(Rodrigo Lins) #5

Normando,

Para funcionar este código é bom lembrar que é necessário ter uma tabela relacionando o grupo com os usuários e as aplicaçoões com permissões, então o interessante de fato é ir testando por parte, é só você verificar bem o comando SELECT e verificar o que existe na sua tabela e executar o comando SQL para ver o que retorna, depois disso ir testando as outras partes, onde ele só deve executar o ‘foreach’ quando possuir registros vinculados… O que podemos dizer é que os dados não devem estar corretos na base de dados.

E pelo seu útlimo post, se já conseguiu fazer a parte de logar e ele dar as permissões, deve ser pelo fato de não estar “zerando” a variável que bloqueia o acesso das aplicações… Se já está sendo zerado, isso pode acontcer também porque o usuário que logou não possui permissão de acessar nenhuma aplicação…

Rodrigo Lins.