session_id(),"nome"=>$teste["usuario"]["nome_usuario"],"editor"=>$editor); cpjson($retorno); } else{ logoutUsuario(); cpjson("logout"); } break; /* Valor: VALIDAOPERACAOUSUARIO Verifica se um usuario pode executar uma operacao Para que o usuario possa executar a operacao, o papel ao qual ele pertence deve estar registrado em operacoespaeis no banco de administracao Se $operacao for vazio, e retornado "sim", o que permite que a verificacao apenas confirme que o login esta correto na sessao Paremeter: $operacao - operacao que sera verificada */ case "VALIDAOPERACAOSESSAO": $retorno = "nao"; if($operacao == ""){ $retorno = "sim"; } else{ //echo "oi";exit; if(verificaOperacaoSessao($operacao) == true){ $retorno = "sim"; } else{ //logoutUsuario(); $retorno = "naopermitido"; } } cpjson($retorno); break; /* Valor: RECUPERARSENHA Cria uma nova senha para um usuario enviando-a por e-mailo Paremeter: $usuario */ case "RECUPERARSENHA": $retorno = false; if(!empty($usuario)){ $retorno = recuperarSenha($usuario); } cpjson($retorno); break; /* Valor: ALTERARSENHA Altera a senha de um usuario Paremeter: $usuario $novasenha */ case "ALTERARSENHA": $retorno = false; if(!empty($usuario)){ $retorno = alterarSenha($usuario,$novaSenha); } cpjson($retorno); break; } function alterarSenha($usuario,$novaSenha){ include(dirname(__FILE__)."/conexao.php"); $dados = pegaDados("select * from ".$esquemaadmin."i3geousr_usuarios where senha = '".md5($_SESSION["senha"])."' and login = '$usuario' and ativo = 1",$locaplic); if(count($dados) > 0){ $dbhw->query("UPDATE ".$esquemaadmin."i3geousr_usuarios SET senha='".md5($novaSenha)."' WHERE login = '$usuario'"); $_SESSION["senha"] = $novaSenha; $to = $dados[0]["email"]; $subject = 'nova senha i3geo'; $message = "Sua senha foi alterada"; mail($to, $subject, $message); return true; } else{ return false; } } function recuperarSenha($usuario){ include(dirname(__FILE__)."/conexao.php"); $novaSenha = rand(9000,1000000); $dados = pegaDados("select * from ".$esquemaadmin."i3geousr_usuarios where login = '$usuario' and ativo = 1",$locaplic); if(count($dados) > 0){ $dbhw->query("UPDATE ".$esquemaadmin."i3geousr_usuarios SET senha='".md5($novaSenha)."' WHERE login = '$usuario'"); $to = $dados[0]["email"]; $subject = 'nova senha i3geo'; $message = $novaSenha; mail($to, $subject, $message); return true; } else{ return false; } } // //verifica se um determinado papel esta registrado na variavel SESSION // function verificaPapelSessao($id_papel){ $resultado = false; if(validaSessao()){ foreach($_SESSION["papeis"] as $p){ if($p["id_papel"] == 1 || $p["id_papel"] == $id_papel){ return true; } } } return $resultado; } // //verifica se uma determinada operacao esta registrada na variavel SESSION // function verificaOperacaoSessao($operacao){ $resultado = false; //a validacao consulta $_SESSION, que e definida no login if(validaSessao()){ //verifica se e administrador, caso positivo, permite qq operacao foreach($_SESSION["papeis"] as $p){ if($p == 1){ return true; } } if(!empty($_SESSION["operacoes"][$operacao])){ $resultado = true; } } return $resultado; } // //verifica se o usuario esta logado // function validaSessao(){ $fingerprint = 'I3GEOLOGIN' . $_SERVER['HTTP_USER_AGENT']; if($_SESSION['fingerprint'] != md5($fingerprint . session_id())){ return false; } if($_SESSION["usuario"] != $_COOKIE["i3geousuariologin"]){ return false; } return true; } // //faz a autenticacao de um usuario baseado no login e senha //registra as operacoes, papeis e grupos do usuario na SESSION // function autenticaUsuario($usuario,$senha){ include(dirname(__FILE__)."/conexao.php"); $senhamd5 = md5($senha); //verifica se o usuario esta cadastrado no ms_configura.php em $i3geomaster //echo "select * from ".$esquemaadmin."i3geousr_usuarios where login = '$usuario' and (senha = '$senhamd5' or senha = '$senha') and ativo = 1";exit; //exit; if(verificaMaster($usuario,$senha) == true){ $pa = pegaDados("select * from ".$esquemaadmin."i3geousr_papelusuario ",$locaplic); $op = pegadados("SELECT O.codigo FROM ".$esquemaadmin."i3geousr_operacoes AS O"); $gr = pegadados("SELECT * from ".$esquemaadmin."i3geousr_grupousuario "); $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); return $r; } else{ //verifica se a senha e uma string ou pode ser um md5 if(strlen($senha) == 32){ $dados = pegaDados("select * from ".$esquemaadmin."i3geousr_usuarios where login = '$usuario' and senha = '$senhamd5' and ativo = 1",$locaplic); } else{ $dados = pegaDados("select * from ".$esquemaadmin."i3geousr_usuarios where login = '$usuario' and (senha = '$senhamd5' or senha = '$senha') and ativo = 1",$locaplic); } if(count($dados) > 0){ $pa = pegaDados("select * from ".$esquemaadmin."i3geousr_papelusuario where id_usuario = ".$dados[0]["id_usuario"],$locaplic); $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 WHERE id_usuario = ".$dados[0]["id_usuario"],$locaplic); $gr = pegadados("SELECT * from ".$esquemaadmin."i3geousr_grupousuario where id_usuario = ".$dados[0]["id_usuario"]); $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); return $r; } else{ return false; } } } // //faz o logout do usuario destruindo os cookies e session // function logoutUsuario(){ $_COOKIE = array(); $_SESSION = array(); session_destroy(); } ?>