forked from SimplesIP/pabx-app
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
190 lines
7.1 KiB
190 lines
7.1 KiB
<?php |
|
|
|
include "util/funcoesLicenca.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úmeras tentativas de acesso inválidos! Para o desbloqueio, realize a alteração de senha ou consulte seu Administrador.');"; |
|
$jsStartup[] = $setFocus; |
|
DispLogin($smarty); |
|
return; |
|
} else if (!validarLicenca($dbcon) && ($_POST["loginUser"] != 'admin')) { |
|
$jsStartup[] = "alert('Sua licença é inválida por favor entre em contato com o suporte da Simples IP para ativar sua central!');"; |
|
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ção do usuá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órios de pabx em base diversa |
|
SetDefaultSite($dbcon); |
|
|
|
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çõ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çã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álido', $_POST["loginUser"]); |
|
$_SESSION["SSaut"] = "er"; |
|
//if(!$siteError->GetNumError()) |
|
$jsStartup[] = "alert('Usuário ou senha invá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) |
|
{ |
|
$login = addslashes($login); |
|
|
|
$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); |
|
}
|
|
|