PABX da Simples IP
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.
 
 
 
 
 
 

189 lines
7.1 KiB

<?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);
}
?>