Example #1
0
function autenticaUsuario($usuario, $senha)
{
    include dirname(__FILE__) . "/conexao.php";
    $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)) {
        return false;
    }
    if (file_exists($nomeArquivo)) {
        $tentativas = (int) file_get_contents($nomeArquivo);
        if ($tentativas > 3) {
            return "muitas tentativas";
        }
        $tentativas = $tentativas + 1;
        file_put_contents($nomeArquivo, $tentativas);
    } else {
        file_put_contents($nomeArquivo, 1);
    }
    //verifica se o usuario esta cadastrado no ms_configura.php em $i3geomaster
    //echo "select * from ".$esquemaadmin."i3geousr_usuarios where login = '******' and (senha = '$senhamd5' or senha = '$senha') and ativo = 1";exit;
    //exit;
    if (verificaMaster($usuario, $senha) == true) {
        $pa = pegaDados("select * from " . $esquemaadmin . "i3geousr_papelusuario ", $dbh, false);
        $op = pegadados("SELECT O.codigo FROM " . $esquemaadmin . "i3geousr_operacoes AS O", $dbh, false);
        $gr = pegadados("SELECT * from " . $esquemaadmin . "i3geousr_grupos ", $dbh, false);
        //var_dump($gr);exit;
        $operacoes = array();
        foreach ($op as $o) {
            $operacoes[$o["codigo"]] = true;
        }
        $papeis = array();
        foreach ($pa as $p) {
            $papeis[] = $p["id_papel"];
        }
        $gruposusr = array();
        foreach ($gr as $p) {
            $gruposusr[] = $p["id_grupo"];
        }
        $master = array();
        $master["id_usuario"] = "master";
        $master["nome_usuario"] = "master";
        $r = array("usuario" => $master, "papeis" => $papeis, "operacoes" => $operacoes, "gruposusr" => $gruposusr);
        $dbh = null;
        $dbhw = null;
        file_put_contents($nomeArquivo, 1);
        return $r;
    } else {
        //verifica se a senha e uma string ou pode ser um md5
        $ok = false;
        $dados = array();
        if (strlen($senha) == 32) {
            $dados = pegaDados("select id_usuario,nome_usuario from " . $esquemaadmin . "i3geousr_usuarios where login = '******' and senha = '{$senhamd5}' and ativo = 1", $dbh, false);
        } else {
            $dados = pegaDados("select id_usuario,nome_usuario from " . $esquemaadmin . "i3geousr_usuarios where login = '******' 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 = '******' 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"]);
                }
            }
            $usuarios = null;
        }
        if ($ok == true) {
            $pa = pegaDados("select * from " . $esquemaadmin . "i3geousr_papelusuario where id_usuario = " . $dados[0]["id_usuario"], $dbh, false);
            $op = pegadados("SELECT O.codigo, PU.id_usuario FROM " . $esquemaadmin . "i3geousr_operacoes AS O JOIN " . $esquemaadmin . "i3geousr_operacoespapeis AS OP ON O.id_operacao = OP.id_operacao JOIN " . $esquemaadmin . "i3geousr_papelusuario AS PU ON OP.id_papel = PU.id_papel\tWHERE id_usuario = " . $dados[0]["id_usuario"], $dbh, false);
            $gr = pegadados("SELECT * from " . $esquemaadmin . "i3geousr_grupousuario where id_usuario = " . $dados[0]["id_usuario"], $dbh, false);
            $operacoes = array();
            foreach ($op as $o) {
                $operacoes[$o["codigo"]] = true;
            }
            $papeis = array();
            foreach ($pa as $p) {
                $papeis[] = $p["id_papel"];
            }
            $gruposusr = array();
            foreach ($gr as $p) {
                $gruposusr[] = $p["id_grupo"];
            }
            $r = array("usuario" => $dados[0], "papeis" => $papeis, "operacoes" => $operacoes, "gruposusr" => $gruposusr);
            $dbh = null;
            $dbhw = null;
            file_put_contents($nomeArquivo, 1);
            return $r;
        } else {
            $dbh = null;
            $dbhw = null;
            return false;
        }
    }
}
Example #2
0
\t\t \t\t\t<label>
\t\t \t\t\t\t<input type=checkbox name=permPastaI3geo /> Altera as permissoes da pasta {$locaplic} <br>
\t\t\t\t\t</label>
\t\t \t\t</div>
\t\t\t</form>
\t\t</div>
\t\t<div class="col-lg-2 col-md-0">
 \t\t</div>
\t\t<script>
\t\t\$.material.init();
\t\t</script>
HTML;
    }
    exit;
} else {
    $continua = verificaMaster($_POST["usuario"], $_POST["senha"], $i3geomaster);
    if ($continua == false) {
        echo <<<HTML
\t\t\t\t<div class="alert alert-danger" role="alert">
\t\t\t\tUsu&aacute;rio n&atilde;o registrado em i3geo/ms_configura.php na vari&aacute;vel i3geomaster
\t\t\t\t</div>
HTML;
        exit;
    }
}
error_reporting(0);
$ip = "UNKNOWN";
if (getenv("HTTP_CLIENT_IP")) {
    $ip = getenv("HTTP_CLIENT_IP");
} else {
    if (getenv("HTTP_X_FORWARDED_FOR")) {