Autor Tópico: Dúvida para valida login  (Lida 2673 vezes)

normando

  • Visitante
Dúvida para valida login
« Online: Agosto 19, 2009, 12:11:28 pm »

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 .'.

  • Iniciante
  • **
  • Mensagens: 83
    • Email
Re: Dúvida para valida login
« Responder #1 Online: Agosto 19, 2009, 12:26:58 pm »
Normano,

Chega a entrar "(empty({rstgrupo}))" ??

WSCA .'.

normando

  • Visitante
Re: Dúvida para valida login
« Responder #2 Online: Agosto 19, 2009, 01:01:52 pm »
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


normando

  • Visitante
Re: Dúvida para valida login
« Responder #3 Online: Agosto 19, 2009, 01:43:45 pm »
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

  • Global Moderator
  • Expert
  • *****
  • Mensagens: 504
    • Overalt I.T
Re: Dúvida para valida login
« Responder #4 Online: Agosto 24, 2009, 02:19:03 pm »
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.