|
|
|
|
<?php
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Conexao com banco de dados
|
|
|
|
|
*/
|
|
|
|
|
//coloca o focus no campo login
|
|
|
|
|
$setFocus = "document.getElementById('loginUser').focus();";
|
|
|
|
|
//define alinhamento no conteudo do master.tpl
|
|
|
|
|
$vAlineMaster = "middle";
|
|
|
|
|
|
|
|
|
|
/** DEFINE A QUANTIDADE DE ERROS DE AUTENTICACAO PARA BLOQUEIO */
|
|
|
|
|
$tentativaErro = 5;
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* Vefica se existem as configuracoes para recuperacao da senha.
|
|
|
|
|
*/
|
|
|
|
|
$smarty->assign("recuperaSenha", ValidaRecuperaSenha($dbcon));
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* usuario nao autenticado
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
if (!isset($_POST["loginUser"])) {
|
|
|
|
|
$jsStartup[] = $setFocus;
|
|
|
|
|
DispLogin($smarty); // or $siteError->GetPhpError("Autentica Usuario", "", "Erro ao chamar funcao smarty!");
|
|
|
|
|
} else {
|
|
|
|
|
|
|
|
|
|
$login = strtolower(substr($_POST["loginUser"], 0, 50));
|
|
|
|
|
$senha = substr($_POST["loginPass"], 0, 14);
|
|
|
|
|
$validaTentativa = countTentativas($dbcon, $login, $tentativaErro);
|
|
|
|
|
|
|
|
|
|
if(!$validaTentativa && ($_POST["loginUser"] != 'admin')){
|
|
|
|
|
$jsStartup[] = "alert('Seu acesso foi bloqueado por in<EFBFBD>meras tentativas de acesso inv<EFBFBD>lidos! Para o desbloqueio, realize a altera<EFBFBD><EFBFBD>o de senha ou consulte seu Administrador.');";
|
|
|
|
|
$jsStartup[] = $setFocus;
|
|
|
|
|
DispLogin($smarty);
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
$query = "select id, nome, apelido, matricula,
|
|
|
|
|
case when((select count(*)
|
|
|
|
|
from pbx_grupo_usuario a, pbx_grupo_funcoes b, pbx_funcoes c
|
|
|
|
|
where b.gp_id = a.gp_id
|
|
|
|
|
and c.fun_id = b.fun_id
|
|
|
|
|
and a.user_id = u.id
|
|
|
|
|
and c.fun_nome = 'mnSupervisor') > 0)then 1 else 0 end as supervisor,
|
|
|
|
|
cast( admin as int) as admin, case when(agente = true)then 1 else 0 end as agente,
|
|
|
|
|
def_senha,
|
|
|
|
|
senha_expira, senha_dias_expira,
|
|
|
|
|
senha_ult_atualiza,
|
|
|
|
|
senha_ult_atualiza + senha_dias_expira as senha_dt_expira,
|
|
|
|
|
case when((senha_ult_atualiza + senha_dias_expira) < CURRENT_DATE)then 1 else 0 end as senha_expirada,
|
|
|
|
|
penalidade, senha, termo_uso_privacidade
|
|
|
|
|
from pbx_usuarios u
|
|
|
|
|
where (u.check_vl = md5(%s) OR email = %s)
|
|
|
|
|
and coalesce(status, true) = true
|
|
|
|
|
and coalesce(delete_,0) = 0 ";
|
|
|
|
|
|
|
|
|
|
$result = pg_query($dbcon, sprintf($query, QuotedStr($login), QuotedStr($login)));
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* Faz autentica<EFBFBD><EFBFBD>o do usu<EFBFBD>rio.
|
|
|
|
|
*/
|
|
|
|
|
$senhaIsValid = false;
|
|
|
|
|
if (pg_num_rows($result)) {
|
|
|
|
|
$row = pg_fetch_array($result);
|
|
|
|
|
$senhaUser = $row['senha'];
|
|
|
|
|
$senhaLogin = md5($senha);
|
|
|
|
|
$senhaIsValid = $senhaUser == $senhaLogin;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if ($senhaIsValid && RegistraAcesso($row['apelido'], $row['id'])) {
|
|
|
|
|
$_SESSION["SSTimeOut"] = time();
|
|
|
|
|
$_SESSION["SSlogin"] = $row['apelido'];
|
|
|
|
|
$_SESSION["SSnomeUser"] = $row['nome'];
|
|
|
|
|
$_SESSION["SSidUser"] = $row['id'];
|
|
|
|
|
$_SESSION["SSmatriculaUser"] = $row['matricula'];
|
|
|
|
|
$_SESSION["SSsuper"] = $row['supervisor'];
|
|
|
|
|
$_SESSION["SSadmin"] = '0'; //$row['admin'];
|
|
|
|
|
$_SESSION["SSagente"] = '0'; //$row['agente'];
|
|
|
|
|
$_SESSION["SSagentePenalidade"] = $row['penalidade'];
|
|
|
|
|
$_SESSION["SSaut"] = "ok";
|
|
|
|
|
$_SESSION[SS_SENHA_DEF] = $row["def_senha"];
|
|
|
|
|
$_SESSION["SSTermoUsoPrivacidade"] = $row["termo_uso_privacidade"];
|
|
|
|
|
|
|
|
|
|
//registra o login corrente para registrar log de erros do usuario
|
|
|
|
|
// $siteError->SetLogin($row['apelido']);
|
|
|
|
|
//parametros do sistema
|
|
|
|
|
GetParametros($dbcon);
|
|
|
|
|
//armazenha informacoes para relat<EFBFBD>rios de pabx em base diversa
|
|
|
|
|
SetDefaultSite($dbcon);
|
|
|
|
|
if (true) {
|
|
|
|
|
SetHosts($dbcon);
|
|
|
|
|
|
|
|
|
|
// SetSupervisorAcesso($dbcon); Desativaro era usado para identificar se o superfivor tem acesso nas filas ativas e receptiva.
|
|
|
|
|
SetAgente($dbcon);
|
|
|
|
|
|
|
|
|
|
//Modo de atendimento default
|
|
|
|
|
SetModuAtendimentoDefault();
|
|
|
|
|
|
|
|
|
|
//caminhos para gravar arquivos
|
|
|
|
|
GetCofigPadrao($dbcon);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* expiracao de senha
|
|
|
|
|
*/
|
|
|
|
|
if ($row["senha_expira"]) {
|
|
|
|
|
$dataNow = date('Y-m-d');
|
|
|
|
|
|
|
|
|
|
if(!IsAdmin() && $row["senha_dias_expira"] > 0 && (strtotime($dataNow) >= strtotime($row["senha_ult_atualiza"] . "+{$row["senha_dias_expira"]} days"))){
|
|
|
|
|
$query = "UPDATE pbx_usuarios SET def_senha = '1' WHERE apelido = '{$row['apelido']}' AND id = {$row['id']};";
|
|
|
|
|
$result = pg_query($dbcon, $query);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
$_SESSION[SS_EXPIRA_SENHA] = 1;
|
|
|
|
|
$_SESSION[SS_PRM_SENHA_EXPIRADA] = $row["senha_expirada"];
|
|
|
|
|
$_SESSION[SS_PRM_SENHA_DT_EXP] = $row["senha_dt_expira"];
|
|
|
|
|
$_SESSION[SS_PRM_SENHA_ULT_ATU] = $row["senha_ult_atualiza"];
|
|
|
|
|
$_SESSION[SS_PRM_SENHA_DIAS_EXP] = $row["senha_dias_expira"];
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* Informa<EFBFBD><EFBFBD>es sobre dac padrao
|
|
|
|
|
*/
|
|
|
|
|
if (true) {
|
|
|
|
|
$dacParao = GetDacPadraoAgente($dbcon, false);
|
|
|
|
|
$_SESSION[SS_DAC_PADRAO] = $dacParao;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* Vefifica Registros que precisam esta incluidos no banco de dados
|
|
|
|
|
*/
|
|
|
|
|
VerificaDefaults($dbcon);
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* Captura a resolu<EFBFBD><EFBFBD>o do computador cliente.
|
|
|
|
|
*/
|
|
|
|
|
$w = $_REQUEST['screenW'];
|
|
|
|
|
$h = $_REQUEST['screenH'];
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* Largura do site.
|
|
|
|
|
*/
|
|
|
|
|
$tbLayoutW = $_REQUEST['tbLayout'];
|
|
|
|
|
SetResScreen($w, $h, $tbLayoutW);
|
|
|
|
|
} else {
|
|
|
|
|
RegistraAcesso($_POST["loginUser"], ($row['id'] ? $row['id'] : '0'), '1');
|
|
|
|
|
GravaFull(0, '', 'Tentativa de login inv<EFBFBD>lido', $_POST["loginUser"]);
|
|
|
|
|
$_SESSION["SSaut"] = "er";
|
|
|
|
|
//if(!$siteError->GetNumError())
|
|
|
|
|
$jsStartup[] = "alert('Usu<EFBFBD>rio ou senha inv<EFBFBD>lidos');";
|
|
|
|
|
$jsStartup[] = $setFocus;
|
|
|
|
|
DispLogin($smarty); // or $siteError->GetPhpError("Autentica Usuario");
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Captura tela de login
|
|
|
|
|
*/
|
|
|
|
|
function DispLogin($smarty) {
|
|
|
|
|
$smarty->display('login.tpl');
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function countTentativas($dbcon, $login, $tentativaErro){
|
|
|
|
|
$query = "SELECT COUNT(*) AS tentativas FROM pbx_controle_acesso WHERE acs_login = '$login' AND acs_data_ini::DATE = 'now' AND acs_erro = 1;";
|
|
|
|
|
$result = pg_query($dbcon, $query);
|
|
|
|
|
$res = pg_fetch_assoc($result);
|
|
|
|
|
if($res['tentativas'] == $tentativaErro){
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function ValidaRecuperaSenha($dbcon){
|
|
|
|
|
$query = "select hosts, usuario, senha, porta from pbx_confmail;";
|
|
|
|
|
$result = pg_query($dbcon, $query);
|
|
|
|
|
$res = pg_fetch_assoc($result);
|
|
|
|
|
return ($res ? true : false);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
?>
|