From 48d1e3ab765923eba5f0a0611d90477d5b8f5026 Mon Sep 17 00:00:00 2001 From: Edmar Moretti Date: Tue, 18 Jul 2017 11:20:36 -0300 Subject: [PATCH] Correção no login quando o susuário não for master --- admin/admin.db | Bin 340992 -> 0 bytes admin/php/admin.php | 3 ++- admin/php/login.php | 23 ++++++++++------------- admin1/dicionario/usuarios.js | 15 +++++++++++++++ 4 files changed, 27 insertions(+), 14 deletions(-) diff --git a/admin/admin.db b/admin/admin.db index 47b5c6b..0da298d 100755 Binary files a/admin/admin.db and b/admin/admin.db differ diff --git a/admin/php/admin.php b/admin/php/admin.php index 1ebb7f3..29b60e4 100755 --- a/admin/php/admin.php +++ b/admin/php/admin.php @@ -194,12 +194,13 @@ Array originada de fetchAll */ function pegaDados($sql,$dbh="",$close=true) { + error_reporting(0); $resultado = array(); //is_string para efeitos de compatibilidade if($dbh == "" || is_string($dbh)){ include(dirname(__FILE__)."/conexao.php"); } - //error_reporting(0); + error_reporting(0); //$dbh deve ser definido com somente leitura, mas por prevencao: $sql = str_ireplace(array("update","delete","insert","--","drop",";"),"",$sql); $q = $dbh->query($sql,PDO::FETCH_ASSOC); diff --git a/admin/php/login.php b/admin/php/login.php index 91a93e9..63432d1 100755 --- a/admin/php/login.php +++ b/admin/php/login.php @@ -114,8 +114,8 @@ switch (strtoupper($funcao)) case "LOGIN": $usuario = $_POST["usuario"]; $senha = $_POST["senha"]; - $teste = autenticaUsuario($usuario,$senha); + if($teste == "muitas tentativas"){ logoutUsuario(); header ( "HTTP/1.1 403 Muitas tentativas" ); @@ -293,8 +293,11 @@ function validaSessao(){ // function autenticaUsuario($usuario,$senha){ include(dirname(__FILE__)."/conexao.php"); + error_reporting(0); $senhamd5 = md5($senha); + $senhaHash = password_hash($senha, PASSWORD_DEFAULT); + //faz um teste de tentativas de acesso $nomeArquivo = $dir_tmp."/a".md5($usuario."testeTentativas").intval(time() / 1000); if(!file_exists($dir_tmp)){ @@ -347,21 +350,15 @@ function autenticaUsuario($usuario,$senha){ $dados = array(); if(strlen($senha) == 32){ $dados = pegaDados("select id_usuario,nome_usuario from ".$esquemaadmin."i3geousr_usuarios where login = '$usuario' and senha = '$senhamd5' and ativo = 1",$dbh,false); + if(count($dados) == 1 && $dados[0]["senha"] == $senhamd5 && $dados[0]["login"] == $usuario){ + $ok = true; + } } else{ - $dados = pegaDados("select id_usuario,nome_usuario from ".$esquemaadmin."i3geousr_usuarios where login = '$usuario' and (senha = '$senhamd5' or senha = '$senha') and ativo = 1",$dbh,false); - } - if(count($dados) > 0){ - $ok = true; - } - //testa tambem com a nova forma de armazenamento de senha usando password_hash - if($ok == false){ $usuarios = pegaDados("select senha,id_usuario,nome_usuario from ".$esquemaadmin."i3geousr_usuarios where login = '$usuario' and ativo = 1",$dbh,false); - foreach($usuarios as $d){ - if (password_verify($d["senha"], $senhaHash)){ - $ok = true; - $dados = array("id_usuario"=>$d["id_usuario"],"nome_usuario"=>$d["nome_usuario"]); - } + if (count($usuarios) == 1 && password_verify($senha,$usuarios[0]["senha"])){ + $ok = true; + $dados[] = array("id_usuario"=>$usuarios[0]["id_usuario"],"nome_usuario"=>$usuarios[0]["nome_usuario"]); } $usuarios = null; } diff --git a/admin1/dicionario/usuarios.js b/admin1/dicionario/usuarios.js index 6321138..14fdf09 100755 --- a/admin1/dicionario/usuarios.js +++ b/admin1/dicionario/usuarios.js @@ -43,5 +43,20 @@ i3GEOadmin.usuarios.dicionario = { pt : "Não", en : "", es : "" + } ], + 'labelNovaSenha' : [ { + pt : "Nova senha", + en : "", + es : "" + } ], + 'labelDataCadastro' : [ { + pt : "Data do cadastro", + en : "", + es : "" + } ], + 'labelAtivo' : [ { + pt : "Ativo?", + en : "", + es : "" } ] }; -- libgit2 0.21.2